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:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
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

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972