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):Ce code produit des fichiers comme Feuil1.cls, ThisWorkbook.cls, Module1.bas, UserForm1.frm, UserForm1.frx.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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:Les noms des fichiers sont bien récupérés, pas de pb de ce coté là.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 ?
Partager