Même raccourci clavier sur macro dans plusieurs fichiers

Résolu/Fermé
hervelam Messages postés 6 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 8 janvier 2014 - 7 janv. 2014 à 09:28
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 8 janv. 2014 à 16:52
Bonjour,

Dans plusieurs fichiers Excel ouverts, j'ai des macro qui portent le même raccourci clavier.

Je me suis aperçu que ce raccourci clavier lançait la macro non pas du fichier actif... mais du fichier Excel qui a été ouvert en premier !

Sauriez-vous comment faire pour qu'il lance la macro du fichier actif ?

En vous remerciant,
HervE
A voir également:

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 8/01/2014 à 08:13
Bonjour à tous,

Michel, je crois que tu as mal saisi le pb... ;-)

Une proposition à condition que tu puisses mettre le même nom à tes macros :
Sub commun() ' Ctrl+R
    Application.Run (ActiveWorkbook.Name & "!filtrer")
End Sub

Sub filtrer()
    MsgBox "macro fichier1"
End Sub

Sub commun() à mettre dans chaque fichier, c'est elle qui doit porter le raccourci clavier. Elle lancera la macro Filtrer() du fichier actif.

Si noms différents et que tu préfères ne pas renommer les macros, rien ne t'empêche d'ajouter une macro (qui aura partout le même nom) qui appelle ta macro de filtrage.

eric


En plus du merci (si si, ça se fait !!!), penser à mettre en résolu lorsque c'est le cas (en haut vers votre titre).
Merci
1
hervelam Messages postés 6 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 8 janvier 2014
8 janv. 2014 à 15:21
Génial ! C'est exactement ça !

Je "sentais" bien qu'il y avait une astuce possible, mais je n'avais pas pensé à Application.Run

J'ai dû ajouter ceci :
Call Application.Run("'" & ActiveWorkbook.Name & "'!monModule.filtrer")
car mes noms de fichier contiennent des espaces, et ma procédure est dans un module.

...Et, pour fignoler, j'ai passé ma procédure filtrer() en Private pour qu'elle n'apparaisse pas dans la liste des macros.
La procédure commun() étant elle en Public, bien sûr.

Merci beaucoup ! Ça va changer ma vie :-)

HervE
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 8/01/2014 à 15:42
Pour mon info, ça plantait si tu ne spécifiais pas monModule ?
Ou bien c'est parce que c'est un module Private ?
eric
0
hervelam Messages postés 6 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 8 janvier 2014
8 janv. 2014 à 16:12
Ça plantait surtout parce que je n'avais pas mis les ' '
J'avais d'abord cru qu'il me manquait le nom du module. Du coup je l'ai laissé puisque ça marche.
Après test : ça marche aussi sans le nom du module.

HervE
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
8 janv. 2014 à 16:52
ok, je trouvais bizarre qu'il ne trouve pas sans nom du module. Mais comme on en apprend tous les jours...
eric
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
7 janv. 2014 à 10:13
Bonjour,

sans voir le code et sans boule de cristal

ajoute ActiveWorkbook quelque part pour faire travailler le classeur actif
0
hervelam Messages postés 6 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 8 janvier 2014
7 janv. 2014 à 15:51
Merci pour ta réponse.

Le pb n'est pas dans le code mais *avant* le code ;-)

En gros le scénario est le suivant.
Dans le fichier1 j'ai une macro1 (qui fait des filtres sur certaines colonnes...) à laquelle j'affecte le raccourci clavier Ctrl+R.
Dans le fichier2 j'ai une macro2 (qui fait des filtres sur certaines colonnes, pas les mêmes...) à laquelle j'affecte aussi le raccourci clavier Ctrl+R.
Mes fichier1 et fichier2 sont tous deux ouverts.
Je suis sur fichier2 (ActiveWorkbook donc ;-)) et je tape Ctrl+R.
Résultat : Excel exécute la macro1 sur fichier2 !!!!!!!

Comment faire pour que Ctrl+R lance macro2 si je suis sur fichier2, mais macro1 si je suis sur fichier1 ?

HervE
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 8/01/2014 à 06:46
Bonjour

..." En gros"...

A bannir de toute explication pour du VBA qui demande des renseignements précis....

En gros: mettre d'autres raccourcis clavier

Abandon du suivi
0
hervelam Messages postés 6 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 8 janvier 2014
8 janv. 2014 à 16:18
J'ai eu le malheur d'écrire "en gros", mais en réalité j'ai parfaitement décrit mon scénario, je crois. Je bannirai donc ces 2 mots à l'avenir.

Non, je ne veux pas mettre d'autres raccourcis.
D'abord parce qu'il n'y a que 26 lettres (52 avec les majuscules), dont bcp sont déjà à exclure (Ctrl+C, Ctrl+V).
Ensuite parce que ça fait sens d'utiliser le même raccourci pour faire la même opération d'un fichier à l'autre.

HervE
0