Epurer le code VBA d'une feuille après l'avoir copier depuis un classeur

Bonjour à tous,

Je cherche à supprimer le code vba de plusieurs feuilles après l'avoir copié depuis un classeur fermé.

voici le code qui fonctionne

Sub CopierFeuilleDuClasseurFermé()

Application.ScreenUpdating = False

    Set classeurFermé = Workbooks.Open("U:\fichierpourlacopie.xlsm")
    classeurFermé.Sheets("Feuil1").Copy Before:=ThisWorkbook.Sheets(1)
    classeurFermé.Sheets("Feuil2").Copy Before:=ThisWorkbook.Sheets(2)

    classeurFermé.Close SaveChanges:=False

Application.ScreenUpdating = True
End Sub

Maintenant je cherche à ajouter au code une fonction qui permet de copié les feuilles sans leurs code VBA associés. Je sait qu'il y a ce code qui permet de supprimer leur codes VBA mais je n'arrive pas à l'adapter.

With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
        .DeleteLines 1, .CountOfLines
End With

Cordialement

Bonjour, si le fichier de destination n'a pas besoin des macros alors pourquoi ne pas simplement faire un enregistrement au format xlsx.

Les macro ne seront pas sauvegardées.

Oops édit je suppose que la macro qui effectue la copie se trouve dans le dit fichier.

alors, on sauvegarde un copie du fichier "ClasseurFermé" comme xlsx, puis copy les feuilles nécessaire et puis kill le copy du fichier.

Bonjour,

Ce n'est pas aussi simple que ça ! Le fichier doit obligatoirement être au format xslm car c'est un classeur mis à jour quotidiennement et ne peut pas être enregistrer au format xlsx, les macros sont nécessaires au fichier.

La solution la plus simple serait d'adapter mon code.

Comme l'ajoute BsAlv que je salue en passant ; le fichier : Workbooks.Open("U:\fichierpourlacopie.xlsm")

peut lui être enregistré en xlsx avant de copier les onglets.

(il suffit en fin de macro de supprimer la copie du fichier d'origine. )

re,

Sub teste()

     Application.DisplayAlerts = False

     Sheets(1).Copy     'copie feuille
     With ActiveWorkbook
          nom = ThisWorkbook.Path & "\abcdefg.xlsx"     'vers un xlsx
          .SaveAs nom, xlOpenXMLWorkbook
          .Close 0     'fermer
     End With

     With Workbooks.Open(nom)     'rouvrir
          .Sheets(1).Copy Before:=ThisWorkbook.Sheets(1)     'copy 2 thisworkbook
          .Close 0
     End With

     Kill nom     'kill tempory fichier
End Sub

Re,

Très bien je vais essayer de l'adapter à mon fichier et je te fait un petit retour.

Merci !

Rechercher des sujets similaires à "epurer code vba feuille copier classeur"