Lancer macro depuis autre fichier d'une autre instance

Bonjour à tous,

J'ai un fichier Excel qui est ouvert par un programme tiers et qui s'ouvre uniquement dans une nouvelle instance. Ce fichier s'appelle "Classeur1". Il s'agit d'un fichier que je génère quotidiennement pour extraire des données de mon logiciel.
Je cherche à exécuter une macro automatiquement à l'ouverture de ce fichier et depuis un autre fichier. C'est à dire qu'il s'exécute dès qu'il détecte l'ouverture de "Classeur1".
Le problème, la macro fonctionne parfaitement si j'ouvre un fichier "Classeur1" qui s'exécute dans la même instance que le fichier ouvert qui permet de déclencher la macro mais dès que je génère mon fichier et qui s'ouvre dans une nouvelle instance, cela ne fonctionne plus.
J'ai essayé de chercher sur Internet, j'ai pu voir des idées de code avec GetObject mais je n'arrive pas à faire fonctionner.

Actuellement j'ai dans mon fichier vierge qui permet l'exécution de la macro :

Dans ThisWorkbook :

VB:
Option Explicit

Private Cl As ClassAppEvents

Private Sub Workbook_Open()
   Set Cl = New ClassAppEvents
End Sub

Puis dans un module de classe appelé ClassAppEvents :

Code:

Option Explicit

Public WithEvents App As Application

Private Sub Class_Initialize()
   Set App = Application

End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    If ActiveWorkbook.Name = "Classeur1" Then

 Call Transfertdesdonnees
    End If

End Sub

Comme vous pouvez le constater, le but est d'exécuter la macro "Transfertdesdonnees" dès détection d'ouverture du fichier Classeur1

Pour simplifier les choses, j'ai cherché s'il y avait possibilité d'interdire la multiplication des instances afin que mon fichier généré s'ouvre obligatoirement dans le même process que le fichier permettant de déclencher la macro mais je n'ai rien trouvé....

J'ai aussi essayé de trouver un moyen de fusionner les instances par un script que je pourrai exécuter mais je n'ai rien trouvé non plus...

Merci par avance pour votre aide

Bonjour,

Pas sûr que cela fonctionne dans un module de classe, mais vous pourriez essayer de récupérer l'instance en cours avec :

Set App = GetObject(, "Excel.Application")

Bonjour,

Merci pour votre retour. A quel niveau du code je devrai intégrer cela pour essayer ? (désolé, je débute en VBA....)

J'ai aussi trouvé sur le site de MS une propriété : Application.MergeInstances = True. L'idéal serait de fusionner l'ensemble des instances pour éviter tout ces problèmes mais je ne sais pas si cette fonction peut le permettre et le cas échéant, comment la mettre en œuvre (par exemple avec un VBA qui pourrait s'exécuter à intervalle régulier ou avec un élément déclencheur ??).

Merci encore pour votre retour.

J'imagine dans votre Class_Initialize

Mais j'ai des doutes.

Rechercher des sujets similaires à "lancer macro fichier instance"