XL 2016 VBA Application.Onkey et clavier numérique

Dudu2

XLDnaute Barbatruc
Bonjour,

Je n'arrive pas à capter les touches du clavier numérique avec Application.Onkey.
Un idée ?
Merci par avance.
 

Pièces jointes

  • Classeur3.xlsm
    210.9 KB · Affichages: 4

Dudu2

XLDnaute Barbatruc
Correction pour ajouter l'altération Maj, Ctl, Alt:
Code:
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
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 346
Membres
103 821
dernier inscrit
Lorient56