VBA supprimer des modules

Bonjour à tous,

J'essaie via une macro de supprimer des modules de tous les fichiers d'un répertoire. Lorsque je supprime les modules d'un fichier ça fonctionne très bien.

Mais lorsque je boucle sur tous mes fichiers rien ne se passe ...

Pour compliquer la chose mes modules sont protégés...

D'ailleurs quand je lance ma macro, elle s’arrête toute seule sur cette ligne :

Set VbComp = vbProj.VBComponents("DECLARATIONS")

Je me demande bien pourquoi ...

Voici le code que j'utilise :

Password = "toto"

i = 6
Do While Range("A" & i) <> ""
Workbooks.Open Range("A" & i)
Set vbProj = ActiveWorkbook.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
Set vbProj = ActiveWorkbook.VBProject
Set VbComp = vbProj.VBComponents("DECLARATIONS")
vbProj.VBComponents.Remove VbComp
    Set VbComp = vbProj.VBComponents("Mod_Feuille_Besoin")
vbProj.VBComponents.Remove VbComp
i = i + 1
Loop

Pourriez-vous m'aider à trouver d'où vient mon erreur ?

Merci à tous.

Bonjour,

Si tu supprimes les modules vba ; je suppose que tes fichiers n'auront donc aucun vba utilisable ensuite ?

Ce ne serait pas plus simple de trouver une macro pour convertir les fichiers xlsm en xlsx

car lors de la convertion les macros ne sont pas conservées.

Hello,

Alors en fait je veux supprimer les modules pour les remplacer par la suite. Si je ne les supprime pas, ils vont se renommer automatiquement.

Par exemple : DECLARATION deviendra DECLARATION1 ...

Donc mon algo va être :

  • exporter les modules en .bas de mon fichier source ==> OK
  • Supprimer tous les modules concernés des fichiers d'un répertoire ==> NOK
  • importer les modules du fichier source ==> OK

Apparemment ça serait cette ligne de code qui me manque :

Application.Wait (Now + TimeValue("0:00:1"))

Ce qui donnerait :

Password = "toto"

i = 6
Do While Range("A" & i) <> ""
Workbooks.Open Range("A" & i)
Set vbProj = ActiveWorkbook.VBProject
If vbProj.Protection <> 1 Then Exit Sub
Set Application.VBE.ActiveVBProject = vbProj
SendKeys Password & "~~~"
Application.VBE.CommandBars(1).FindControl(ID:=2578, recursive:=True).Execute
Application.Wait (Now + TimeValue("0:00:1"))
Set vbProj = ActiveWorkbook.VBProject
Set VbComp = vbProj.VBComponents("DECLARATIONS")
vbProj.VBComponents.Remove VbComp
    Set VbComp = vbProj.VBComponents("Mod_Feuille_Besoin")
vbProj.VBComponents.Remove VbComp
i = i + 1
Loop
Rechercher des sujets similaires à "vba supprimer modules"