Lancer macro d'un autre classeur

Hello le forum,

J'ai un problème de lancement de macro ....

Je cherche à copier un classeur excel modèle.

Pour cela j'utilise un autre classeur (classeur MAITRE ) avec une macro qui va récupérer le classeur modèle et le copier dans le répertoire qui va bien.

Pas de problème pour cette partie. Le problème c'est que dans ce classeur modèle, j'ai une procédure sub qui verrouille proprement la feuille principale. Je dois faire 2 changement dans ce classeur modèle donc je suis obligé de déverrouiller la feuille, faire mes changements.

Ce que je veux c'est qu'une fois mes modifications faites, je veux lancer ma macro de protection qui se trouve dans le classeur modèle ...

Mais je n'y parvient pas ...

Pourriez-vous m'aider svp ?

Merci.

Le code qui ouvre puis modifie le classeur modèle depuis un USF :

Private Sub CB_AJOUT_Click()
Const Le_Classeur As String = "BESOINS_MODEL.xlsm"
Const MDP As String = "toto"
Const Nom_F_Besoin_MANA As String = "BESOINS"

Dim Chemin_Parent As String
ChDir (ThisWorkbook.Path)
ChDir ".."
Chemin_Parent = CurDir(ThisWorkbook.Path) & "\"
'Test si NOM et ENTITE ne sont pas vides
If TB_MANA = "" Then MsgBox "Vous devez saisir le NOM/PRENOM du manager !": Exit Sub
If CBB_ENTITE = "" Then MsgBox "Vous devez saisir l'entité  du manager !": Exit Sub
' Test to see if the file is open.
    If IsFileOpen(ThisWorkbook.Path & "\" & Le_Classeur) Then
        MsgBox "Création impossible, classeur MODEL ouvert, fin du programme !"
        Exit Sub
    Else
        Application.EnableEvents = False
        Workbooks.Open ThisWorkbook.Path & "\" & Le_Classeur
        With ActiveWorkbook.Sheets(Nom_F_Besoin_MANA)
            .Unprotect MDP
            Range("A1") = TB_MANA: Range("B1").Value = CBB_ENTITE.Value
        Application.EnableEvents = True
        Application.Run "'activeworkbook'!Mod_Feuille_Besoin.Protection_Feuille"

'            .Protect MDP
        End With
    End If
End Sub

Bonjour,

pourquoi tu ne met pas cette macro dans Workbook_Open() du modèle ?

En testant si tes 2 valeurs sont absentes pour l'exécuter, ou si ThisWorkbook.Name n'a pas d'extension (=jamais enregistré)

eric

Hello,

pourquoi tu ne met pas cette macro dans Workbook_Open() du modèle ?

La macro de copie du modèle ou la macro de protection de la feuille ?

Merci.

Tout ce qui doit se faire dans le modèle à la création, à la 1ère ouverture.

Oui je peux mettre dans un événement open la protection de ma feuille.

+ simple que de passer par application.Run ?

Non seulement la protection, mais toute l'initialisation tant qu'à faire : demande et maj de TB_MANA CBB_ENTITE, que tu aies juste à l'ouvrir.

Plus simple je ne sais pas, mais pas plus compliqué et pas illogique. Et comme tu n'arrives pas à l'appeler... Peut-être faut-il enregistrer le fichier pour pouvoir le faire (?)

eric

Hello,

J'ai trouvé comment fonctionne

Application.Run

C'est la syntaxe qui est subtile...

il faut mettre le chemin est nom du fichier entre une cote simple + parenthèses sur le tout ...

Donc avec des variables ou des valeurs contenues dans une cellule cela donne quelque chose comme ceci :

Application.Run ("'" & Wkb_AUTO_RDP.Sheets(1).Cells(L_EN_TETE + 1, Col_WKB).Value & "'!Param_Report_D")

et il faut bien penser à activer le classeur avant pour que la macro s'execute dans le bon classeur et pas dans

Thisworkbook

R@g

Rechercher des sujets similaires à "lancer macro classeur"