Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

fonctions de même nom dans différents classeurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sebestyn168

XLDnaute Nouveau
Bonjour,

C'est mon premier post, j'éspère que ma question n'a pas déjà été posée mais la fonction recherche semble bloquée depuis mon lieu de travail à cause de leur filtre sécurité à la ###.

Voilà mon problème: J'écris un ensemble de macros pour aider mes collègues dans la production répétitive de documents. J'ai plusieurs fichiers pour différentes tâches et j'utilise la même procédure d'entrée: DoAction (sur Ctrl+r) qui appelle elle même SelectAction qui évalue les fonctions spécifiques à lancer ensuite. Tout allait bien jusqu'à ce que j'ai besoin de faire coopérer deux de ces fichiers: 1 annuaire envoyant des contacts dans un autre fichier. Là quelque soit le classeur actif au moment de l'appelle de la procédure, VBA utilise toujours la fonction du même classeur. A partir de là soit il ne trouve pas la fonction spécifique à l'autre classeur ou on entre dans des fonctions communes et les commandes à base de ThisWorkbook partent dans les choux 😕 ...

Y'a-t-il une solution simple pour forcer VBA à utiliser la fonction du classeur actif ? Sinon j'envisage une solution de contournement bien dégueulasse qui rendra le code impossible à lire et à maintenir 🙁 .
J'en appelle à votre bon coeur pour sauver mon bô code 😱

Merci d'avance
 
Re : fonctions de même nom dans différents classeurs

bonjour,
sans classeur exemple, ce n'est pas facile.
une piste peut-être :
le classeur actif est Activeworkbook bien sûr
mais le classeur à partir duquel s'exécute le prog est Thisworkbook
voir si éventuellement il n'y a pas confusion dans les macros.
 
Re : fonctions de même nom dans différents classeurs

Merci Dixit,

En fait le problème vient du raccourci qui est le même pour les macros de même nom... Si je change le raccourci sur l'une ça marche.

Je vais tenter de faire un module de macro complémentaire qui sera le seul avec mon raccourci sur DoAction et je vais prier pour que ça lance le SelectAction du bon classeur (du ActifWorkbook) et que ça le prenne comme ThisWorkbook parce que s'il prend la macro complémentaire c'est mal barré...
 
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
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
490
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…