William a deux classeurs, chacun contenant des macros. Même si les macros sont différentes, elles sont appelées à l’aide du même raccourci clavier. Lorsqu’un seul des classeurs est ouvert, le raccourci fonctionne parfaitement. Lorsque les deux classeurs sont ouverts en même temps, William ne sait jamais exactement ce qui va s’exécuter. Il se demande s’il existe un moyen pour Excel de traiter les raccourcis indépendamment de sorte que si les deux classeurs sont ouverts, les raccourcis clavier fonctionneront harmonieusement.

La réponse courte est qu’il n’y a aucun moyen d’y parvenir sans apporter des modifications aux macros elles-mêmes. Les touches de raccourci sont « globales »

à l’instance de l’application en cours d’exécution (dans ce cas, Excel). Au fur et à mesure que les classeurs sont ouverts, leurs raccourcis sont ajoutés à une table interne qui fonctionne comme un index de tous les raccourcis et de la macro qu’ils sont censés exécuter.

Cet index semble être trié par ordre alphabétique, par nom de classeur. Lorsque vous utilisez une touche de raccourci, Excel examine l’index et sélectionne le premier raccourci correspondant dans l’index. De plus, si vous disposez d’un raccourci qui utilise l’un des raccourcis intégrés, la macro créée s’exécutera toujours avant celle intégrée. Si les macros portent le même nom, la première ouverte est exécutée.

Étant donné que la table d’index maintenue par Excel est créée par l’instance d’application, vous pouvez contourner le conflit en vous assurant que vous ouvrez chaque classeur dans sa propre instance d’Excel. N’utilisez pas la boîte de dialogue Ouvrir pour charger le deuxième classeur; à la place, double-cliquez sur l’icône du classeur dans Windows.

Si vous vous lassez de vous rappeler d’ouvrir les classeurs de cette manière, la seule autre option est de commencer à apporter des modifications aux macros. Le changement facile serait de modifier les touches de raccourci afin qu’elles ne soient pas les mêmes. Vous pouvez conserver les mêmes touches de raccourci en ajoutant du code au début de chaque macro. Demandez à chaque macro de vérifier le nom du classeur actif. Si le nom correspond au nom attendu pour cette macro, le code peut continuer à s’exécuter. S’il ne correspond pas, le code peut activer l’autre classeur et exécuter directement la macro dans celui-ci.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2872) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.