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 :
Puis dans un module de classe appelé ClassAppEvents :
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
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