Macro supprimant toutes les macros
TonyLucky
-
4 déc. 2024 à 12:43
thev Messages postés 1900 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 4 décembre 2024 - 4 déc. 2024 à 20:02
thev Messages postés 1900 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 4 décembre 2024 - 4 déc. 2024 à 20:02
A voir également:
- Macro supprimant toutes les macros
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
3 réponses
thev
Messages postés
1900
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
4 décembre 2024
691
4 déc. 2024 à 16:21
4 déc. 2024 à 16:21
Bonjour,
ce code devrait faire l'affaire :
Sub enlever_code() Dim vbc As Object With ActiveWorkbook.VBProject For Each vbc In .VBComponents If vbc.Type = 1 Or vbc.Type = 2 Or vbc.Type = 3 Then '1 = module standard, 2 = module de classe, 3 = userform .VBComponents.Remove vbc End If Next vbc End With End Sub
Bonjour,
Merci pour votre code. Cela fonctionne parfaitement.
Par contre (on en veut toujours plus), je voudrais enregistrer le fichier automatiquement après cette procédure. Seulement, comme toutes les macros sont supprimées....
Je suppose que je pourrais créer un module qui ne serait pas supprimé. Une ligne du genre if module name = "xx" then ? Mais je ne vois pas comment faire.
thev
Messages postés
1900
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
4 décembre 2024
691
Modifié le 4 déc. 2024 à 20:06
Modifié le 4 déc. 2024 à 20:06
Bonjour,
Le mieux serait d'opérer à partir d'un autre classeur. Il serait d'ailleurs beaucoup plus simple de réenregistrer votre classeur en .xlsx.
Si vous souhaitez néanmoins une macro pour enlever tout code, il faut aussi traiter celui lié à une feuille ou au classeur. La macro doit donc être ainsi complétée :
Sub enlever_code() Dim vbc As Object Dim volet_code As Object With ActiveWorkbook.VBProject For Each vbc In .VBComponents If vbc.Type = 1 Or vbc.Type = 2 Or vbc.Type = 3 Then '1 = module standard, 2 = module de classe, 3 = userform .VBComponents.Remove vbc End If If vbc.Type = 100 Then 'modules objet : feuilles ou classeur With vbc.CodeModule For Each volet_code In .CodePane.Collection volet_code.Show .DeleteLines 1, .CountOfLines Next volet_code End With End If Next vbc End With End Sub