VBA : Supprimer les macros dans la copie d'un fichier

Bonjour,

A l’aide du fichier ci-joint, je peux enregistrer une copie de la feuille «FICHE D’ANOMALIE» dans un nouveau fichier créé automatiquement à l’aide du bouton en place en E21.

Le nouveau fichier - qui reste visible à l'écran à la fin de la macro -est enregistré dans le même dossier que le fichier de base et ce dernier est refermé automatiquement.

Mon problème est que lorsque je travaille sur le nouveau fichier qui vient d’être créé, j’ai un bug car le code Private Sub Worksheet_SelectionChange(ByVal Target As Range) de la seule feuille qui reste comporte entre autre une variable non définie «UserForm1» ; à chaque modification de la feuille, j’ai donc un message à ce sujet.

Savez-vous comment je pourrais supprimer cette macro lors de la création des nouveaux fichiers ?

A vous relire.

Bonjour,

Il te faut parcourir les différents modules du classeur nouvellement créé et de supprimer toutes les lignes de code de la feuille copiée.

Voici un petit exemple que tu pourras facilement adapter à tes besoins :

Sub Suppression_Modules()

    Dim Classeur As Workbook
    Dim Fe As Worksheet
    Dim ColModule As Object
    Dim Module As Object
    Dim I As Integer

    'crée le classeur
    Set Classeur = Workbooks.Add

    'l'enregistre et copie la feuille "FICHE D'ANOMALIE"
    With Classeur

        .SaveAs ThisWorkbook.Path & "\" & "Mon Classeur.xlsm"
        ThisWorkbook.Worksheets("FICHE D'ANOMALIE").Copy .Worksheets(.Worksheets.Count)
        Set Fe = .Worksheets("FICHE D'ANOMALIE")

    End With

    Set ColModule = Classeur.VBProject.VBComponents

    'parcour la collection de modules
    For Each Module In ColModule

        'recherche le module de la feuille "FICHE D'ANOMALIE"
        If Fe.CodeName = Module.Name Then

            With Module.CodeModule

                For I = 1 To .CountOfLines

                    'supprime toutes les lignes de code
                    .ReplaceLine I, ""

                Next I

            End With

        End If

    Next

End Sub

Hervé.

Salut Amadéus, Salut Hervé,

Merci infiniment pour vos réponses

J’ai testé les deux premiers code du fil proposé par Amadéus, mais ils bloquent les deux sur – respectivement – les lignes With ActiveWorkbook.VBProject et With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Sheets(NomFeuille).CodeName).CodeModule alors que le code d’Hervé bloque sur Set ColModule = Classeur.VBProject.VBComponents (Erreur 1004 – La méthode VBProject de l’objet _Workbook a échoué).

Je me demande alors si je ne dois pas ajouter une «Référence» dans mon explorateur VBA et si oui laquelle ?

Ou avez-vous une autre idée ?

A vous relire.

EDIT :

J'ai trouvé sur un autre site des macros assez semblables et là on indique qu'il faut installer la référence Microsoft Visual Basic for Applications Extensibility 5.3 J'ai alors maintenant un nouveau message : "Erreur d’exécution 1004 - L’accès par programme au projet Visual Basic n’est pas fiable".

Toujours en attente d'une solution

Salut Jean-Eric et merci pour ta réponse. As-tu vu mon Edit simultanée ?

Qu'en penses-tu ?

Amicalement.

Yvouille a écrit :

J'ai alors maintenant un nouveau message : "Erreur d’exécution 1004 - L’accès par programme au projet Visual Basic n’est pas fiable".

Toujours en attente d'une solution

bonsoir,

il faut activer une option de la sécurité des macros. via le menu excel developer, securité des macros, ->paramètres des macros, activer l'option autoriser l'accès au modèle objet VBA

ayant une version UK, je ne suis pas sûr de la dénomination des menus et des paramètres de la version FR.

Méga trop fort super génial

Il s'agit de l'option

capture 02 09

Merci beaucoup à tous les intervenants sur ce fil

Rechercher des sujets similaires à "vba supprimer macros copie fichier"