Bonjour,
Je souhaite copier le code d'une macro contenu dans un module de mon fichier .xlam dans un autre fichier excel.
Le code suivant fonctionne mais il m'affiche un message d'erreur à la ligne Set modObj =Application.VBE.ActiveVBProject.VBComponents.Item("Graph"). Si je clique sur débogage et que je relance la macro elle se termine directement.
C'est juste que la ligne Workbooks("Prévisions.xlam").Activate ne doit pas fonctionner et le fait d'ouvrir la fenêtre visual basic lors de débogage permet d'activer le fichier "Prévision.xlam".
Le programme doit fonctionner en automatique, les utilisateurs ne doivent pas avoir à cliquer sur débogage et à relancer la macro.
J'aurais voulu savoir comment résoudre ce problème. Y a-t-il un autre moyen d'activer un fichier .xlam pour récupérer le code d'un module? Existe-t-il un moyen automatique (à partir du code) d'ouvrir et de fermer l'éditeur visual basic sans que l'utilisateur ait à intervenir?
Merci à ceux qui prendront le temps de lire ce post.
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
20
21
22
23 Sub ajout_macro(nom_fichier) 'Copier la macro dans le fichier "RefStats" Dim strCode As String Dim vbCom As VBComponent Dim modObj As Object ' Select source document Workbooks("Prévisions.xlam").Activate ' Set object to the module you want to export. Set modObj = _ Application.VBE.ActiveVBProject.VBComponents.Item("Graph") ' Place code in a string. strCode = modObj.CodeModule.Lines(1, modObj.CodeModule.CountOfLines) ' Select destination document Windows(nom_fichier).Activate ' Create a new module in workbook. 'Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule) Set Wb = Workbooks(nom_fichier) Wb.VBProject.VBComponents("Feuil1").CodeModule.InsertLines 1, strCode ' Add code to new module from string variable. 'Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _ .CodeModule.AddFromString (strCode) End Sub
Bonne journée.
Anne Lise
Partager