Bonjour,

j'ai le pb suivant:
D'un fichier source ( "S") je crée un nouveau workbook("W") dans lequel j'ajoute un nouveau module M où j'écris une sub MACRO1().
Je crée ensuite, dans W, un bouton "B" auquel je veux affecter MACRO1, du workbook W.

tout se déroule bien sauf que:
la macro affectée à B appartient à un code module de S, pas à celui de W
En gros j'ai B!MACRO1 alors que je voudrais juste MACRO1

au final, si MACRO1 existe sous S alors pas de pb tant que S est ouvert. En revanche si tel n'est pas le cas, ou si je veux utiliser W sans S ça plante.

Je suppose qu'il faut que j'indique l'endroit où doit se situer MACRO1 (W!M), mais je ne sais pas comment faire.

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
 
 
W.Activate
   Set VBComp = wb.VBProject.VBComponents.Add(1)
    'Renomme le module
    VBComp.Name = "Utilitaires"
 
    'Ajoute une macro dans le module
    With VBComp.codemodule
        X = .CountOfLines
        .InsertLines X + 1, "Sub Fermerfichier()"
        .InsertLines X + 2, "activeworkbook.close(false)"
        .InsertLines X + 3, "End Sub"
    End With
 
 Range("a1").Select
    ActiveSheet.Buttons.Add(1, 15, 70, 15).Select
    selection.OnAction = "Fermerfichier"
merci!