Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[R]macro pour supprimer une autre macro

brice59

XLDnaute Occasionnel
Bonjour,

Je recherche une macro pour supprimer une macro sur le même document.

Qui sait comment faire ?

Merci

voici à la réponse....


Code:
Dim awi
Dim awcl As Integer
On Error Resume Next
Set awi = ActiveDocument.VBProject.VBComponents.Item(1)
awcl = awi.CodeModule.CountOflines
awi.CodeModule.DeleteLines A,B   ==> 'il faut remplacer le A par la 1ère ligne et le B par la dernière ligne à supprimer, pensez à supprimer la macro de suppression en même temps <==
Set awi = Nothing ' Release the object
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : macro pour supprimer une autre macro

Bonjour
Cochez la référence "Microsoft Visual Basic for Application Exensibility 5.n"
pour avoir les types de donnéees et l'aide en ligne appropriée à ce genre de manip
Ainsi CoModC ci dessous peut être déclaré As CodeModule. Ça supprime NbLC lignes à partir de la LC:
VB:
CoModC.DeleteLines LC, NbLC
J'ai même dans un truc une fonction qui retourne un CodeModule:
VB:
Function CoModSrc(ByVal Feui As Worksheet) As CodeModule
On Error Resume Next
Set CoModSrc = ClassSrc(Feui).VBProject.VBComponents(Feui.[Module].Value).CodeModule
If Err Then MsgBox "Le module """ & Feui.[Module].Value & """ est introuvable dans """ _
   & Feui.[Class].Value & """.", vbCritical, "Aïe !": End
End Function
Ceci peut aussi vous servir pour trouver la procédure à supprimer, extrait de l'aide: S'applique à un CodeModule
Voir aussi ProcOfLine permettant de vérifier si la ligne spécifiée appartient toujours à la procédure à supprimer (ProcKind à respécifier aussi chaque fois).
Cordialement
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : macro pour supprimer une autre macro

Le nom d'un CodeModule c'est très exactement le nom que porte ce module dans le projet Visual Basic qui le contient. Ça doit être pareil dans Word, même si la philosophie d'implantation diffère un peu. Du moment qu'on peut trouver le module par l'éditeur VBA on peut naviguer de même dans le VBProject.VBComponents avec les mêmes noms. Et un document word a certainement une propriété VBProject qui représente son projet VBA.
 

brice59

XLDnaute Occasionnel
Re : macro pour supprimer une autre macro

je dois être méga nul, je ne vois pas du tout comment faire.

Le nom de ma macro c'est "sub macro 2()" (classique)
mais je ne comprends pas du tout comment faire.
 

Dranreb

XLDnaute Barbatruc
Re : macro pour supprimer une autre macro

Le nom de ma macro c'est "sub macro 2()" (classique)
mais je ne comprends pas du tout comment faire.
Il faut isoler le projet VBA puis le module qui la contient : Set CoMod = DocumentWord.VBProject.VBComponents(NomDuModule).CodeModule
Ainsi que vous le feriez en quelque sorte dans l'explorateur de projets VBA en cliquant sur le module: tout comme le code vous est alors présenté dans la fenêtre, il vous sera, là, accessible dans CoMod.
 

brice59

XLDnaute Occasionnel
Re : macro pour supprimer une autre macro

bon, j'ai tenté cette solution , mais rien de fait.


J'ai trouvé un autre code à insérer dans la macro même.


Code:
Dim awi
Dim awcl As Integer
On Error Resume Next
Set awi = ActiveDocument.VBProject.VBComponents.Item(1)
awcl = awi.CodeModule.CountOflines
awi.CodeModule.DeleteLines A,B 'il faut remplacer le A par la 1ère ligne et le B par la dernière ligne à supprimer, pensez à supprimer la macro de suppression en même temps
Set awi = Nothing ' Release the object
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…