Créer une copie 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 : Patrick Morange
Mots clefs associés à cette page : macro, combobox, modèle, xlt, sauvegarder, enregistrer
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
