Il y a deux manière d'assigner un raccourci clavier à une macro :
Allez dans Outils/Macros/Macros, et cliquez sur la macro sur laquelle vous désirez affecter un raccourci d'accès rapide, et cliquez sur le bouton Options
Assignez la lettre s, et cliquez sur OK, puis fermez la boîte de dialogue. Désormais, lorsque vous appuierez sur CTRL s, la macro Bidule sera exécutée, en lieu et place de Fichier/Enregistrer, qui était assigné à CTRL s.
Vous avez donc pris la priorité sur Excel. Ca peut être intéressant par exemple pour non seulement enregistrer le classeur classiquement, mais en plus pour en enregistrer une copie ailleurs. Voici un exemple imparfait mais qui donne une idée : Si vous créez une macro Double Sauvegarde :
Sub DoubleSauvegarde()
ActiveWorkbook.Save
ActiveWorkbook.SaveAs "D:\Backups\Copie.xls"
End Sub
Et que vous l'assignez au raccourci clavier CTRL s, le classeur sera enregistreé, plus une copie dans D:\Backups. Bien entendu, si l'utilisateur utilise le menu Fichier/Enregistrer, ou clique sur l'icone Disquette, la macro ne s'exécutera pas. Pour ça il faudrait utiliser l'événement de classeur BeforeSave, mais ça, c'est un autre chapitre...
Lorsque vous utilisez cette technique, vous êtes limités à utiliser obligatoirement la touche CTRL, avec, si vous le désirez, la touche SHIFT pour avoir les lettres en majuscules (CTRL SHIFT S par exemple, qui est différent de CTRL s), associée(s) à n'importe quel caractère de votre clavier (Chiffre ou lettre, ou %, &, /, é, etc.)
On pourrait vouloir qu'une macro se déclenche lorsqu'on appuie sur une simple touche (a, m, %; ...) ou utiliser la touche ALT. Ou même utiliser une combinaison de touches assez compliquée comme CTRL SHIFT ALT K par exemple. C'est possible grâce à la méthone Application.OnKey
Copiez ces deux macros dans un module VBA Excel (Ou Word, ou n'importe quel programme Office):
Sub Truc()
Application.OnKey "q",
"test"
End Sub
Sub Test()
MsgBox "ca marche"
End Sub
Exécutez simplement Truc.
Voilà ! Maintenant, lorsque vous êtes dans votre feuille Excel
(si vous êtes dans Excel), le simple fait d'appuyer sur q n'écrit
pas la lettre q, mais exécute Truc().
Attention :
Pour vous débarasser de ce raccourci, exécutez simplement ceci :
Sub Truc()
Application.OnKey "q"
End Sub
Vous pouvez également désactiver des raccourcis clavier prédéfinis. Par exemple, si vous voulez interdire de sélectionner toute la feuille avec CTRL a, essayez ceci :
Application.OnKey "^a", ""
Vous ne pouvez pas assigner une séquence de touches comme par exemple abc. Le code suivant génère une erreur :
Application.OnKey "abc", "test"
Par contre, vous pouvez assigner une combinaison, comme ALT q par exemple :
Application.OnKey "%q", "test"
Pour obtenir toutes les possibilités de OnKey, cliquez simplement su OnKey dans votre VBA, et appuyez sur F1.
Voici quelques exemples :
CTRL ENTER :
Application.OnKey "^~",
"test"
F12 :
Application.OnKey "{F12}",
"test"
CTRL ALT SHIFT F12 :
Application.OnKey "%^+{F12}",
"test"
---