macro pour sélectionner une macro à effacer

  • Initiateur de la discussion Initiateur de la discussion olivierd
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

olivierd

XLDnaute Junior
bonjour le forum,

j'utilise le code ci-dessous pour supprimer l'ensemble des macros contenues dans un classeur. ( macro issue de ce forum😉 )

=>Mais est-il possible de déterminer le nom d'une macro spécifique contenue dans le classeur à supprimer au lieu de tout supprimer ?

Code:
Sub kill_toutes_les_macros()
   ' Kill=>détruit l'ensemble des modules de macros
Dim VBC As Object, Wbk As Workbook

Set Wbk = ActiveWorkbook
With Wbk.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
End Sub

merci pour vos conseils
cordialement
 
Bonjour Olivierd,

Frédéric Sigonneau t'offre la réponse à ta demande :
'Auteur : Frédéric Sigonneau
Sub SupprimeProcedure()
   DelProc ThisWorkbook, 'ThisWorkbook', 'Workbook_Open'
End Sub

Sub DelProc(Wbk As Workbook, CodeMod$, NomProc$)
Dim liDeb, NbLi
   With Wbk.VBProject.VBComponents(CodeMod).CodeModule
      liDeb = .ProcStartLine(NomProc, 0)
      NbLi = .ProcCountLines(NomProc, 0)
      .DeleteLines liDeb, NbLi
   End With
End Sub
Cordialement.
 
Bonjour Didier, Olivierd, le Forum

Et sinon en restant sur XLD, non sans dire que Frédérique est un Grand Maître, digne successeur de son copain Laurent.

Mais donc chez nous sur le Forum XLD 1st Géneration :

=> >>> DATABASE XLD <<< RECENCEMENT FIL >> 21649 'VBA Effacement/Ecriture Macro'

Je me suis efforcé de regrouper un paquet de méthodes de suppressions de code, ou d'écritures... Si ça peut servir...

Bon App
@+Thierry

Message édité par: _Thierry, à: 29/03/2005 13:10
 
bonjour,
C'est dingue...
j'utilise une macro qui enregistre sous puis une suppression de macro sélective ( auto_open ), qui marche parfaitement
Et bien que le nouveau fichier ne comporte plus l'auto_open, il se lance quand même ??!!
J'ai bien tout vérifié, j'ai lancé le nouveau fichier à partir d'un autre poste, l'autoi-open se lance alors que le code VBA n'en comporte pas(plus)
C'est comme si le nouveau fichier excel avait gardé en mémoire cache l'auto_open supprimée.

Par contre si ma macro de suppression sélective est sur un module différent du module de la macro à supprimmer, il semble que le problème ne survienne plus.

A votre avis, est-ce grave docteur ?
Code:
(...)
 ActiveWorkbook.SaveAs Filename:= _
        'ma_feuille.xls', FileFormat:=xlNormal, Password:='mon_code', WriteResPassword:='', ReadOnlyRecommended:= _False, CreateBackup:=False

 rep = MsgBox(' suppression de la macro d'ouverture ?', vbYesNo, ';-D')
If rep = 6 Then Application.Run ''Delete_macro_selection''
End Sub

 Sub Delete_macro_selection()
 Dim WB As Workbook
 Dim Code As Object
 Dim NomProc As String, NomModule As String
 Dim DebCode As Integer, LongCode As Integer, VBext_Pk_Proc As Long
 On Error GoTo FirstError
 Set WB = Workbooks('ma_feuille.xls')
 NomProc = 'auto_open'
 NomModule = 'Module1'
 On Error GoTo SecondError
 Set Code = WB.VBProject.VBComponents(NomModule).CodeModule
 DebCode = Code.ProcStartLine(NomProc, VBext_Pk_Proc)
 LongCode = Code.ProcCountLines(NomProc, VBext_Pk_Proc)
 Code.DeleteLines DebCode, LongCode
 Exit Sub
FirstError:
 If Err = 9 Then MsgBox 'Classeur recherché pas ouvert'
 Exit Sub
SecondError:
 If Err = 9 Then MsgBox NomModule & ' Module non trouvé'
 If Err = 35 Then MsgBox NomProc & ' Macro pas trouvée'
 End Sub

Message édité par: olivierd, à: 30/03/2005 11:15
 
Bonjour Olivierd, Didier, le Forum

Depuis plus de deux ans, dans ce Forum, nous conseillons de ne plus utiliser ces anciennes procédures automatiques que sont 'Aut😵pen' et 'Auto_Close'...(etc) qui datent d'Excel 5, au bénéfice des Macros évènementielles bien plus puissantes, qui elles, existent depuis Excel 97.

Par conséquent, je n'en utilise plus et je m'en porte vraiment pas plus mal...

Je ne sais pas trop quoi te dire pour ton problème... Si tu supprimes manuellement cette Aut😵pen, as-tu le même problème ? As-tu aussi regardé dans les Noms contenus dans le Classeur, car si j'ai bon souvenir ces satanées macro en généraient...

Voilà pour l'instant, à moins que quelqu'un ne soit plus adepte de ces macros qui connaisse ce problème ???

Bonne Journée et courage
@+Thierry
 
re-bonjour à tous,

_Thierry mes connaissances sont très limitées..et je ne sais pas vraiment de quoi tu parles quant aux macros evennementielles

si je supprimme manuellement l'auto_open :RAS

Si je distingue deux macros activées en deux fois: l'une ( enregistrer sous ) puis l'autre( supprimmer l'auto_open)
je n'ai pas le problème.

Si je renomme l'auto_open, je n'ai plus de problème...


QUESTION: comment réaliser la macro à l'ouverture sans utiliser auto_open ?

Bizarre

A+

Message édité par: olivierd, à: 30/03/2005 11:42
 
Re Bonjour OLivierd

Vite fait car nous devons faire un ShuttDown de nos servers ici au bureau à Midi

Pour les Macros évènementielles regarde ce Gif :



Tu auras ta première macro évènementielle !!!

Bon App
@+Thierry
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
477
Réponses
1
Affichages
3 K
Compte Supprimé 979
C
Réponses
2
Affichages
603
Retour