Appeler depuis un xls une macro d'un xla

J'ai créé un fichier xla qui contient des macros. J'ai un classeur xls dans lequel j'ai un bouton personnalisé qui appelle une des macros du xla. Lorsque je clique sur ce bouton excel recherche la macro dans le classeur et pas dans la xla. Comment lui dire de chercher dans le xla ?

Quand la macro complémentaire est installée, il suffit d'entrer le nom de la procédure à exécuter dans la boite de dialogue "Affecter une macro" pour que le bouton lance la procédure. Cependant cette affectation est volatile. A la prochaine ouverture du classeur, un clic sur le bouton va rechercher la procédure dans le classeur actif ou la première (par ordre alphabétique) macro complémentaire installée. Il y a plusieurs moyens de contraindre le bouton à toujours déclencher la procédure souhaitée mais il faut passer par un peu de VBA.
Le plus simple, est de réaffecter la procédure au bouton dans l'événement Open du classeur Perso.xls. Ceci garantit que le bouton pourra dès l'ouverture d'Excel lancer la bonne procédure même s'il est cliqué en dehors du contexte souhaité (un classeur particulier). Et c'est ce qui demande le moins de travail... Dans l'événement Workbook_Open du Perso.xls, une ligne de code comme celle-ci suffit :
Application.CommandBars("LaBarre").Controls("NomBouton").OnAction = "y"
"LaBarre" est le nom de la barre d'outils (intégrée ou personnalisée) où le bouton a été monté "NomBouton" est le nom du bouton (Personnaliser, clic droit sur le bouton et taper le nom souhaité dans la zone "Nom :")

Auteur :

Mots clefs associés à cette page : , ,