Re : fonctions de même nom dans différents classeurs
Bon, j'ai réussi mais c'est pas complètement génial...
Dans chaque classeur qui va utiliser la procédure
DoAction j'ai défini la fonction
Workbook_Open (celle qui est lancée à l'ouverture du classeur) de la façon suivante:
Private Sub Workbook_Open()
Application.OnKey "^r", "DoAction.xla!DoAction"
End Sub
Ces procédures appellent la procédure
DoAction du fichier de macro complémentaire
DoAction.xla. J'y ai mis le module
Action avec la procédure
DoAction:
Public Sub DoAction()
Application.Run ActiveWorkbook.Name & "!SelectAction"
End Sub
Cette procédure va appeler la fonction
SelectAction du classeur qui l'a appelé.
Jusque là c'est à peu près OK. Là où ça se complique, c'est que le
ThisWorkbook lors des séquences lancées par
DoAction est celui du classeur de macro complémentaire... Donc il faut pas l'utiliser (dommage Elliane!). Alors pour palier à ce problème j'ai ajouté dans chaque classeur une String publique, par exemple:
Public monfichier_Workbook As String
Et je l'initialise dans la procédure
Workbook_open qui est devenue:
Private Sub Workbook_Open()
Application.OnKey "^r", "DoAction.xla!DoAction"
monfichier_Workbook = ThisWorkbook.Name
End Sub
Ensuite j'ai remplacé les occurences de ThisWorkbook par:
Workbooks(monfichier_Workbook)
Voilà, je trouve ça très laid mais ça marche...
J'ai fait un effort sur la présentation mais je sais pas si c'est clair
😱
Edit: La fonction:
Public Sub DoAction()
Application.Run ActiveWorkbook.Name & "!SelectAction"
End Sub
ne fonctionne pas s'il y'a des espaces dans le nom du classeur... mhé heu