Import macros des feuilles et modules
Bonjour,
Excusez-moi, c'est un peu long à expliquer au départ. Voici mon problème.
J'ai un classeur Excel qui a des centaines de feuilles, avec des données dedans, et aussi il y a des macros dans ces feuilles. Les utilisateurs modifient constamment les données des feuilles. Moi, je dois faire évoluer les macros.
Alors je prends une copie du classeur, je modifie les macros, et après quelques jours je demande le classeur aux utilisateurs pour mettre à jour les macros. Evidemment ma copie n'est plus à jour par rapport aux données, donc je ne peux pas leur fournir ma copie. Il faut que je mets à jour les macros dans leur classeur.
Comme il y en a beaucoup de feuilles, faire ça à la main avec copie/coller c'est pas génial. Alors je voulais faire ça avec Export/Import. Je fais donc un Export des macros de mon classeur avec le code suivant (que j'ai trouvé sur internet et qui marche très bien):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Sub ExporterFrmEtModules()
' Pour que ça marche, faire Excel/Outils/Options/Sécurité/Sécurité des macros/Faire confiance au projet Visual Basic
Dim rep1 As String
rep1 = "MesMacros"
rep1 = ThisWorkbook.Path + Application.PathSeparator + rep1 + Application.PathSeparator
Dim LeFich
For Each LeFich In ThisWorkbook.VBProject.VBComponents
Select Case LeFich.Type
Case 1
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".bas"
Case 2
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".cls"
Case 3
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".frm"
Case 100
ThisWorkbook.VBProject.VBComponents(LeFich.Name).Export rep1 & LeFich.Name & ".cls"
End Select
Next
End Sub |
Ce code produit des fichiers comme Feuil1.cls, ThisWorkbook.cls, Module1.bas, UserForm1.frm, UserForm1.frx.
Le problème est comment faire l'import ? En fait je veux fair un Update des macros de mes feuilles et modules. J'ai essayé de mettre dans le classeur cible le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Sub ImporterFrmEtModules()
Dim NomFich
Dim rep1 As String
rep1 = "MesMacros"
rep1 = ThisWorkbook.Path + Application.PathSeparator + rep1 + Application.PathSeparator
NomFich = Dir(rep1 + "*.*")
Do While NomFich <> ""
NomFich1 = rep1 + NomFich
'MsgBox NomFich1
Application.VBE.ActiveVBProject.VBComponents.Import (NomFich1)
NomFich = Dir
Loop
End Sub |
Les noms des fichiers sont bien récupérés, pas de pb de ce coté là.
Le problème est qu'il ne fait pas la liaison entre le nom du fichier importé et le nom de mon objet Excel. Il fait les imports comme s'il s'agissait de nouveaux objets, en donnant de nouveaux noms à ces objets. En plus mes feuilles ont des noms comme par ex. Feuil1(Accueil), tandis que dans les fichiers exportés le nom "Accueil" n'apparait même pas.
Avez-vous une suggestion svp ?