Supprimer Macros

Résolu
Bonjour,

Je viens de finir une macro permettant l'enregistrement d'onglets dans de nouveaux fichiers (merci à f894009). Maintenant, j'aimerai pouvoir enlever dans ces nouveaux fichiers, les macros inclues.

J'ai parcouru les Forums, j'avoue ne pas y trouver mes petits.

Merci à vous par avance.

Benoit

3 réponses

  1. Bonjour,

    Ben, fallait copier chaque onglet desire dans un nouveau fichier, pas enregistrer le fichier sous trois noms differents en xlsm

    Sub Creation_Fichier_1()
        ' Export Fichier
        Dim memPath As String   'Mémorise l'emplacement du fichier ouvert
        Dim Path As String      'Défini la variable Path
        Dim n As Long
        Dim TNom As Variant
        Dim TOnglet As Variant
    
        ActiveWorkbook.Save                  'sauvegarde le classeur en cours
        memPath = ThisWorkbook.FullName      'Mémorise l'emplacement du fichier
        Application.DisplayAlerts = False 'Enlève les messages d'alertes Excel
        Application.ScreenUpdating = False
            
        Path = ActiveWorkbook.Path & "\"
        TNom = Array("Mon fichier 1.xlsx", "Mon fichier 2.xlsx", "Mon fichier 3.xlsx")    'Enregistre le fichier
        TOnglet = Array("Liste Triable 1", "Liste Triable 2", "Liste Triable 3")
        
        For n = 0 To 2
            Sheets(TOnglet(n)).Copy
            With ActiveWorkbook
                .SaveAs Filename:=Path & TNom(n), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
                .Close
            End With
        Next n
        Application.DisplayAlerts = True 'Enlève les messages d'alertes Excel
        Application.ScreenUpdating = True
    End Sub
    1. Ben ma réponse c'est Wahou. Je viens de voir votre message, je viens de mettre en place...et donc Wahou.
      Propre, efficace, et en plus c'est plus rapide que la solution d'avant.

      Merci énormément.
      Je sais que ce ne sont que des mots, mais vous pouvez pas savoir à quel point vous m'apportez une aide précieuse. Merci
  2. Bonjour Jordane

    Merci pour ce bout de code. Malheureusement, je pense qu'il me manque encore un peu de pratique.
    Ci-dessous votre code que j'ai essayé d'intégrer à mon code.

    Option Explicit
    Sub Création_Fichiers()
    ' Export Fichier
    Dim memPath As String 'Mémorise l'emplacement du fichier ouvert
    Dim Path As String 'Défini la variable Path
    Dim nom As String
    Dim nom_1 As String 'Défini la variable nom
    Dim nom_2 As String
    Dim nom_3 As String
    Dim NomFeuille1 As String
    Dim NomFeuille2 As String
    Dim NomFeuille3 As String

    ActiveWorkbook.Save 'sauvegarde le classeur en cours
    memPath = ThisWorkbook.FullName 'Mémorise l'emplacement du fichier
    Application.DisplayAlerts = False 'Enlève les messages d'alertes Excel
    Application.ScreenUpdating = False

    Path = ActiveWorkbook.Path & "\"
    nom_1 = "Mon fichier 1" & ".xlsm" 'Enregistre le fichier
    nom_2 = "Mon fichier 2" & ".xlsm"
    nom_3 = "Mon fichier 3" & ".xlsm"
    NomFeuille1 = "Liste Triable 1"
    NomFeuille2 = "Liste Triable 2"
    NomFeuille3 = "Liste Triable 3"

    ActiveWorkbook.SaveAs Filename:=Path & nom_1 'Enregistre le fichier dans le dossier d'origine
    ActiveWorkbook.SaveAs Filename:=Path & nom_2
    ActiveWorkbook.SaveAs Filename:=Path & nom_3

    Workbooks.Open Filename:=Path & nom_1
    With Workbooks(nom_1)
    .Sheets(Array("Liste Complete", "Cachée Tri", "Liste Triable 2", "Liste Triable 3")).Delete 'Supprime les onglets non pertinents
    End With

    With ActiveWorkbook.VBProject.VBComponents _
    (ActiveWorkbook.Sheets(NomFeuille1).CodeName).CodeModule
    .DeleteLines 1, .CountOfLines
    .CodePane.Window.Close
    End With

    Workbooks(nom_1).Close True

    Workbooks.Open Filename:=Path & nom_2
    With Workbooks(nom_2)
    .Sheets(Array("Liste Complete", "Cachée Tri", "Liste Triable 1", "Liste Triable 3")).Delete 'Supprime les onglets non pertinents
    .Close True
    End With

    'le classeur actif n'est plus celui d'origine mais: nom_3
    With ActiveWorkbook
    .Sheets(Array("Liste Complete", "Cachée Tri", "Liste Triable 2", "Liste Triable 1")).Delete 'Supprime les onglets non pertinents
    .Save
    End With

    Application.DisplayAlerts = True 'Remet les alertes Excel
    Application.ScreenUpdating = True

    Application.Workbooks.Open memPath 'Réouvre l'emplacement du fichier qui a été mémorisé
    Workbooks(nom_3).Close False 'Fermer ce classeur (la copie)
    End Sub

    J'ai un message qui apparait "L'accès par programme au projet VBa n'est pas fiable".

    Merci pour votre aide.
    Benoit
    1. Modérateur
      Bonjour,

      Si tu souhaites surpprimer des macros (des procédures) de tes onglets (les feuilles) tu peux utiliser une macro du genre
      Sub Supprimer_Code_Feuilles()
      
      Dim NomFeuille As String
       
      NomFeuille = "Feuil1"
       
      With ActiveWorkbook.VBProject.VBComponents _
      (ActiveWorkbook.Sheets(NomFeuille).CodeName).CodeModule
          .DeleteLines 1, .CountOfLines
          .CodePane.Window.Close
      End With
      


      Le tout pouvant être placé dans un for each pour boucler sur les différentes feuilles du classeur directement...
      un truc du genre
      Dim wkb As Workbook
      
      Set wkb = Workbook("nom_du_classeur")
      
      For Each sh In wkb.Sheets
      With ActiveWorkbook.VBProject.VBComponents _
      (sh.CodeName).CodeModule
          .DeleteLines 1, .CountOfLines
          .CodePane.Window.Close
      End With
      
      Next
      


      D'autres macros utiles de suppression :
      https://www.developpez.net/forums/d569894/logiciels/microsoft-office/general-vba/supprimer-macros-macro/

      .