On m'a un peu aidé, mais il existe bien une solution : je vous transfère la proposition venant de "Frédéric Sigonneau [MVP Excel - né un sans-culottide]", car cela peut intéresser plus d'un...
Pour exécuter une macro à l'ouverture de n'importe quel classeur (à condition qu'il ait été enregistré au moins une fois), il faut passer par la création d'un 'Excel perso' dans un module de classe, qui va intercepter les événements standard d'Excel de ton choix (ici le Workbook_Open) pour exécuter le code de ton choix.
Exemple de mise en place simple.
Dans ton perso.xls (classeur de macros personnelles) insère un module de classe
et renomme-le ExcelApplication. Puis recopie dans ce module le code ci-dessous :
'=======================
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookOpen(ByVal Wb As Workbook)
If Not Wb.Name = ThisWorkbook.Name Then
MsgBox "coucou"
End If
End Sub
'=======================
Ensuite, dans le module ThisWorkbook du perso.xls, recopie ce code qui va créer
une instance d'Excel et l'affecter à l'application Excel au moment de son
ouverture (le perso.xls est exécuté au lancement d'Excel) si les macros sont
activées :
'=======================
Dim MonXL As New ExcelApplication
Private Sub Workbook_Open()
Set MonXL.AppXl = Application
End Sub
'=======================
Voilà. Enregistre, ferme puis relance Excel. Ensuite, l'ouverture de chaque
classeur va provoquer l'affichage du message "coucou" (ou l'exécution du code
que tu mettras à sa place).
Il suffisait de le savoir, non ?
Ciao