XL 2019 Lancer macro depuis autre fichier d'une autre instance

xorf

XLDnaute Nouveau
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
 

xorf

XLDnaute Nouveau
Désolé, voici le fichier. J'ai l'impression qu'il y a un problème plus général sur la détection d'ouverture d'un fichier non enregistré. J'ai modifié le code pour afficher un message suivant si le fichier est reconnu ou pas.
Si j'ouvre un nouveau fichier par exemple "Classeur1" en faisant "Fichier" et Nouveau, je n'ai aucun msgbox qui apparait. Idem si je fais clique droit sur l'icone Excel et que j'ouvre un nouveau classeur, aucune détection.
Si par contre j'ouvre un fichier enregistré par exemple "Test.xlsx", j'ai bien le message indiquant "Ouverture NON détectée" (plutôt entendre mauvais nom de fichier).

Enfin si j'essaie de lancer un fichier dans une nouvelle instance "excel /x", l'ouverture n'est pas détectée non plus car je n'ai aucun msgbox

Merci de votre aide.
 

Pièces jointes

  • AutoStart.xlsm
    18.4 KB · Affichages: 6

cp4

XLDnaute Barbatruc
Désolé, voici le fichier. J'ai l'impression qu'il y a un problème plus général sur la détection d'ouverture d'un fichier non enregistré. J'ai modifié le code pour afficher un message suivant si le fichier est reconnu ou pas.
Si j'ouvre un nouveau fichier par exemple "Classeur1" en faisant "Fichier" et Nouveau, je n'ai aucun msgbox qui apparait. Idem si je fais clique droit sur l'icone Excel et que j'ouvre un nouveau classeur, aucune détection.
Si par contre j'ouvre un fichier enregistré par exemple "Test.xlsx", j'ai bien le message indiquant "Ouverture NON détectée" (plutôt entendre mauvais nom de fichier).

Enfin si j'essaie de lancer un fichier dans une nouvelle instance "excel /x", l'ouverture n'est pas détectée non plus car je n'ai aucun msgbox

Merci de votre aide.
Re,

Je n'ai pas encore assimilé les modules de classe.
Mais au vu de cette ligne: If ActiveWorkbook.Name = "Classeur1" Then
le classeur concerné par ce code est le classeur actif dont le nom est classeur1.
Or, tu ouvres un classeur dont le nom n'est pas classeur1 donc tous les autres ne sont pas concernés.
 

Discussions similaires

Statistiques des forums

Discussions
312 189
Messages
2 086 033
Membres
103 102
dernier inscrit
nath34490