Sub a()
'Alt + *
Call OnKey("%", "{ENTER}", "")
Call OnKey("%", "{ENTER}", "b")
End Sub
Sub b()
MsgBox "Touche"
End Sub
'-----------------------------------
'Fonction de set ON / OFF d'un OnKey
'- Altération = "+" pour Shift
' "^" pour Control
' "%" pour Alt
'- Touche = touche de déclenchement
' de la fonction
'- Fonction = fonction à déclencher
' si vide, annule le OnKey
'https://docs.microsoft.com/fr-FR/office/vba/api/Excel.Application.OnKey
'-----------------------------------
Sub OnKey(ByVal Altération As String, ByVal Touche As String, ByVal Fonction As String)
Dim i As Integer
Dim Key As String
Dim TabClavierNumérique() As String
Dim TabClavierNumériqueKeyCodes() As String
Const ClavierNumérique = "0 1 2 3 4 5 6 7 8 9 * + {ENTER} - , /"
Const ClavierNumériqueKeyCodes = "96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111"
'Traitement spécial des caractères correspondant à une altération Shift / Control / Alt
If Touche = "+" Or Touche = "^" Or Touche = "%" Then
Key = Altération & "{" & Touche & "}"
Else
Key = Altération & Touche
End If
'Set du OnKey sur la Key
Application.OnKey Key, Fonction
'Ajout de la Keys du clavier numérique
TabClavierNumérique = Split(ClavierNumérique, " ")
TabClavierNumériqueKeyCodes = Split(ClavierNumériqueKeyCodes, " ")
For i = LBound(TabClavierNumérique) To UBound(TabClavierNumérique)
If UCase(Touche) = TabClavierNumérique(i) Then Exit For
Next i
If i <= UBound(TabClavierNumérique) Then
Key = TabClavierNumériqueKeyCodes(i)
'Set du OnKey sur la Key du clavier numérique
Application.OnKey Altération & "{" & Key & "}", Fonction
End If
End Sub