Créer une copie sans les macros

J'ai créé un modèle (.xlt) de bon de livraison qui ajoute des infos par macro. Comment faire pour enregistrer le fichier sans les macros ?

Le code ci-dessous (à insérer dans le VBE du XLT) fait les choses suivantes:
1) Il crée un nouveau classeur.
2) Il y transporte les feuilles de ton classeur modèle (xlt) en conservant la mise en page d'impression et les formats de cellule.
3) Il ferme sans le sauvegarder ton classeur XLT.
4) Le nouveau classeur ne contient pas les macros du XLT et il ne vous reste plus qu'à le sauvegarder sous le nom de votre choix grace à la boite de dialogue qui s'ouvre.
ATTENTION: si vous testez en lançant la macro à partir du VBE vous pourrez constater, une fois le classeur cible refermé, qu'il bogue à sa réouverture (le processus ne s'est pas terminé). Impossible de jeter le classeur à la corbeille. Si ça vous arrive, plutôt que de redémarrer votre ordinateur, vous pouvez faire Ctrl+Alt+Suppr. La boîte de dialogue "Gestionnaire dess tâches de Windows" apparaît. Allez sur l'onglet "Processus" et sélectionnez EXCEL.EXE puis cliquez sur "Terminer le processus". SOYEZ PRUDENT.

Pour pallier ce problème il suffit de lancer la macro à partir de Excel utilisateur ou de l'appeler par votre programme.

sub ExportXLT2XLS()
 Dim W1 As Workbook
 Dim W2 As Workbook
 Dim i&
 Dim Suggere As Variant
 Dim Reponse As Variant
 On Error GoTo Erreur
 Application.ScreenUpdating = False
 '---- Votre classeur instance de xlt ----
 Set W1 = ThisWorkbook
 '---- Classeur cible à enregistrer ----
 Set W2 = Workbooks.Add(xlWBATWorksheet)
 '---- Nom feuille bidon pour éviter conflit ----
 W2.Sheets(1).Name = "_tEmPo_"
 '---- Copie de toutes les feuilles avec leurs ----
 '---- formats et mise en page d'impression  ----
 For i& = 1 To W1.Sheets.Count
  W1.Sheets(i&).Copy after:=W2.Sheets(W2.Sheets.Count)
 Next i&
 '---- Destruction de la feuille bidon ----
 Application.DisplayAlerts = False
 W2.Sheets(1).Delete
 '---- Sauvegarde du classeur cible ----
 Suggere = "A remplacer par votre variable nom"
 Reponse = Application.GetSaveAsFilename( _
  InitialFilename:=Suggere, _
  fileFilter:="Classeur Microsoft Excel (*.xls), *.xls")
 If Reponse <> False Then W2.SaveAs Filename:=Reponse
 '#### LIGNES A OCCULTER SELON VOTRE GRE ####
 '---- Ferme sans sauvegarder votre instance de xlt ----
 W1.Saved = True
 W1.Close
 '###########################################
 '---- Pseudo traitement d'erreur ----
 '---- Si plantage on remet les choses en place ----
 Erreur:
 Application.ScreenUpdating = True
 Application.DisplayAlerts = True
 end sub

Auteur :

Mots clefs associés à cette page : , , , , ,