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?

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
Merci à ceux qui prendront le temps de lire ce post.

Bonne journée.

Anne Lise