Récupérer code touche appuyée

seylione Messages postés 12 Statut Membre -  
 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

  1. Yoda
     
    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+.
    0
  2. seylione Messages postés 12 Statut Membre
     
    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
    0
    1. Yoda
       
      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
      0