XL 2019 Déclencher une macro d'un classeur fermé

pat66

XLDnaute Impliqué
Bonjour Le forum,

Dans le même dossier, j'ai 2 classeurs test1.xlsm et test2.xlsm
Mon problème :
Comment peut on activer une macro située dans un module standard de test2 en ouvrant test1

j'ai bien essayé dans test1 avec :
Private Sub Workbook_Open()
Application.Run ThisWorkbook.Path & "\test2.xlsm'mamacro"
end sub

mais cela donne "erreur d'execution 1004", je précise que le classeur, les feuilles et le vba sont protégés

pourriez vous m'aidez svp

merci et belle journée à toutes et à tous
 
Dernière édition:
Bonjour le fil, le forum

une proposition fonctionnelle pour exécuter une macro externe ! (pour citer Coluche, c'est comme le sucre dans le lait chaud, on ouvre mais ça ne se voit pas !)
les deux classeurs sont à placer au même endroit, sinon modifier le Filename, ça fonctionne de Excel 2002 32 à Excel 365 64, je ne l'ai jamais testé sur Mac.

code dans le classeur d'origine
VB:
Option Explicit
Dim App_Excel
Sub Macro_Externe()
    Set App_Excel = CreateObject("Excel.Application")
    App_Excel.Workbooks.Open Filename:=ThisWorkbook.Path & "\Test_Code.Xlsm"
    App_Excel.Run "Test_Code.Xlsm!Code_Externe"
    DoEvents
End Sub
Sub Fermer_Macro_Externe()
    On Error Resume Next
    App_Excel.Run "Test_Code.Xlsm!Code_Externe_2"
    DoEvents
    App_Excel.Quit
    Set App_Excel = Nothing
End Sub

Code dans le classeur appelé, lance un userform non modal
Code:
Option Explicit
Sub Code_Externe()
UserForm1.Show
End Sub
Sub Code_Externe_2()
Unload UserForm1
End Sub
Bien cordialement
 

Pièces jointes

  • Code_Autre_Classeur.xlsm
    14.2 KB · Affichages: 7
  • Test_Code.xlsm
    14.4 KB · Affichages: 7
Dernière édition:
Bonjour le Fil, le Forum

Plus besoin de module standard avec celui ci, capable d'exécuter un code Private de module de feuille dans un classeur fermé.

Bien cordialement, @+

code dans le classeur d'origine
VB:
Sub Macro_Externe()
    Dim App_Excel
    Set App_Excel = CreateObject("Excel.Application")
    App_Excel.Workbooks.Open Filename:=ThisWorkbook.Path & "\Test_Code_2.Xlsm"
    App_Excel.Run "Test_Code_2.Xlsm!" & App_Excel.Worksheets("Feuil1").CodeName & ".Code_Externe_Module_De_Feuille"
    DoEvents
    App_Excel.Quit
End Sub
code à placer dans le module de feuille de Feuil1 du classeur fermé
Code:
Private Sub Code_Externe_Module_De_Feuille()
MsgBox "Je suis dur de la feuille", vbOKOnly + vbInformation + vbMsgBoxSetForeground
End Sub
 

Pièces jointes

  • Code_Autre_Classeur_2.xlsm
    13.9 KB · Affichages: 5
  • Test_Code_2.xlsm
    11.5 KB · Affichages: 5

Discussions similaires