[excel] Détecter une macro et la supprimer

Signaler
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011
-
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011
-
Bonjour,

J'ai un fichier A dans lequel j'execute une macro. Dans cette macro je voudrais pouvoir détecter la présence d'un module dans un fichier B et s'il est présent, le supprimer.

Es-ce que quelqu'un peut m'aider, SVP?
Merci d'avance.

13 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

regarde une de mes sources :
http://www.vbfrance.com/codes/SUPPRESSION-OBJETS-VBPROJECT-OU-SON-
CODE-VBA-EXCEL_38518.aspx


'*** 1 ERE POSSIBILITE : SUPPRESSION OBJET ***
' Càd les UserForm, Module, Module de Classe
Sub EffaceModule()

Workbooks.Open ("C:\Chemin\Nom
Fichier.xls") 'une boite
de dialogue se trouve dans le fichier excel(Zip) pour le
' choix, au lieu de mettre le nom du chemin en dur
On Error Goto ErrHandle

' ici on supprime le
composant nommé "Module1", dans le projet du classeur actif
ActiveWorkbook.VBProject.VBComponents.Remove
ActiveWorkbook.VBProject.VBComponents("Module1")

MsgBox "Le Module a été
suprimé"
ActiveWorkbook.Close True
Exit Sub

ErrHandle:
MsgBox "ERREUR dans la suppression du Module", vbOKOnly + vbCritical

End Sub
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>
@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Merci beaucoup mais j'ai une erreur dans la ligne suivante:
ActiveWorkbook.VBProject.VBComponents.Remove

"Erreur de compilation argument non facultatif"
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
ce n'est que l'exemple de code, regarde ma source, tu verras qu'il faut faire des références à dll

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
pis fais gaffe, c'est sur la même ligne :

ActiveWorkbook.VBProject.VBComponents.Remove _
ActiveWorkbook.VBProject.VBComponents("Module1")

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Ah oui j'avais pas vu c'est sur la même ligne!

C'est pas possible sans dll?
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Bah non, tu ne peux pas demander quelque chose qi rien n'est prévu pour le faire.
Concernant la référence à cocher, une fois que c'est fait, plus besoin de le faire :

<li>' Il faut rajouter la référence suivante :</li><li>' Microsoft Visual Basic for Applications 6.0 Extensibility</li><li>' (Program Files\Microsoft Visual Studio\VB98\VB6EXT)</li>

dans le menu Outils, Référence du VBE

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Alors, c'est bon ? N'hésite pas à donner suite

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Je ne trouve pas "Microsoft Visual Basic for Applications 6.0 Extensibility" ni la version 5.3 sur la version excel que j'utilise :(

Je vais tenter d"ouvrir le fichier sur un PC avec une autre version d'excel pour pouvoir cocher...

Biensur je vous tiens au courant! ;)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Quelle version d'excel utilises-tu ?
Si c'est une version, (-autre que 5.3) tente quand même. En cas après je jette un oeil et te donne le chemin du fichier

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

C'est excel 2000
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Sous 2000, c'est la version 5.3
Le fichier se nomme VBE6EXT.OLB

Tu devrais retrouver le fichier dans ce répertoire
C:\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6

MPi
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Merci MPi, il n'apparraissait pas dans la liste et maintenant grâce au chemin que tu m'a donné il apparaît! ;)

Je n'ai pas réussi à faire fonctionner le code de mortalino par contre ce code fonctionne:

With ActiveWorkbook.VBProject.VBComponents
.Remove .Item("Module1e")


 


Il faut juste connaîttre le nom du module!
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Lors de l'ouverture j'ai toujours le message d'alertes pourtant il n'y a plus de modules!?

Que dois-je faire?

Merci