Récupérer code touche appuyée

Fermé
Messages postés
8
Date d'inscription
mercredi 14 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2013
-
 Yoda -
Bonjour,
et mes excuses pour une question simple?

Je traite des données climatologiques sous Excel 2000 (eh oui) avec VBA qui vient avec.
Après traitement d'une journée je veux passer à (la précédente ¦ la suivante ¦ou arrêter)
Inputbox est une procédure lourde car il faut faire OK une fois une touche saisie

Comment donc récupérer le code d'une touche appuyée pour ensuite la comparer aux codes standard de VBA 2000?

Merci

2 réponses

Bonjour,

On peut associer une macro à un raccourci clavier.
Pour rappel, un raccourci clavier est l'appui simultané de la touche Ctrl et d'une lettre. Par exemple:
Ctrl+A pour precedent
Ctrl+S pour suivant
Ctrl+Q pour fini

Pour cela aller dans Outils/Macro/Nouvelle macro et definir le raccourci clavier
Arreter tout de suite l'enregistrement de la macro ou enregister une commande, aller dans l'éditeur VB et modifier le code de la macro.

Revenir dans une feuille excel et appuyer sur le raccourci, normalement la macro doit s'executer.

A+.
Messages postés
8
Date d'inscription
mercredi 14 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2013

Bonsoir Yoda,

Mais là je suis dans l'exécution du script, et à un moment donné, je voudrais saisir juste une touche pour orienter la suite des opérations.

Pour l'instant j'ai au sein d'une boucle do... loop until PL=0:
...
MSG = "+ pour jour suivant, - pour précédent, _ pour terminer"
QQ = InputBox(MSG)
If QQ = "+" Then
JN = JN + 1 ' JN: date à étudier
ElseIf QQ = "-" Then
JN = JN - 1
Else:
QQ = ""
PL = 0 ' PL: variable pour sortir d'on Do...Loop
End If

Un peu lourd. Je cherche plutôt
Récupérer TT = valeur de la touche appuyée (par ex. <, >, _)
If TT = code pour ">" Then
JN=JN+1
ElseIf TT= code pour "<" Then
JN=JN-1
Else
PL=0
EndIf

Voilà
Merci pour ces réponses

Système: XPSP3, FFox, EXCEL 2000
Si le script est executé avec un UserForm, on peut utiliser l'evenement KeyPress

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
MsgBox KeyAscii
End Sub


Pacer le pointeur sur l'USF et appuyer sur une touche, le message affiche de code asscii de la touche: pour le "+" c'est 43

ensuite on analyse le code retourné dans un Select Case ... End Select

Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
   Case 43 '+
       'Instructions
    Case 60 '<
        'Instructions
    Case 62 '>
         'Instructions
End Select    
End Sub