Événement ComboBox.KeyDown (Access)

L'événement KeyDown se produit lorsque l'utilisateur appuie sur une touche pendant qu'un formulaire ou contrôle a le focus. Cet événement se produit également si vous envoyez une séquence de touches à un formulaire ou un contrôle à l'aide de l'action EnvoiTouches dans une macro ou l'instruction SendKeys dans Visual Basic.

Syntaxe

expression. KeyDown (KeyCode, Shift)

Expression Variable qui représente un objet ComboBox .

Parameters

Nom Requis/Facultatif Type de données Description
KeyCode Obligatoire Integer Code clé, tel que vbKeyF1 (la touche F1) ou vbKeyHome (la clé d’accueil). Pour spécifier les codes de touche, utilisez les constantes intrinsèques présentées dans l'Explorateur d'objets. Vous pouvez empêcher un objet de recevoir une séquence de touches en définissant KeyCode sur 0.
Shift Obligatoire Integer État des touches Maj, Ctrl et Alt au moment de l’événement. Si vous devez tester l’argument Shift , vous pouvez utiliser l’une des constantes intrinsèques suivantes comme masques de bits :
  • acShiftMask Masque de bits de la touche Maj.

  • acCtrlMask Masque de bits de la touche Ctrl.

  • acAltMask Masque de bits de la touche Alt.

Remarques

L’événement KeyDown s’applique uniquement aux formulaires et contrôles d’un formulaire, et non aux contrôles d’un état.

Pour exécuter une macro ou une procédure événementielle lorsque ces événements se produisent, définissez la propriété OnKeyDown sur le nom de la macro ou [procédure événementielle].

Dans les deux cas, c'est l'objet actif qui reçoit les frappes de touches. Un formulaire ne peut être actif que s'il ne contient pas de contrôles ou si tous ses contrôles visibles sont désactivés.

Formulaire recevra également tous les événements de clavier, même ceux qui s'appliquent aux contrôles, si vous définissez la propriété KeyPreview du formulaire sur Oui. Dans ce cas, tous les événements de clavier ont d'abord lieu pour le formulaire et ensuite pour le contrôle qui a le focus. Vous pouvez répondre à des séquences de touches dans le formulaire, quels que soient les contrôle a le focus. Par exemple, vous pouvez souhaiter que la combinaison de touches Ctrl+X effectue toujours la même action sur un formulaire.

Si vous appuyez longuement sur une touche, les événements KeyDown et KeyPress alternent à plusieurs reprises (KeyDown, KeyPress, KeyDown, KeyPress, etc.) jusqu’à ce que vous relâchez la touche, puis l’événement KeyUp se produit.

Bien que l'événement KeyDown se produise lorsque la plupart des touches sont enfoncées, il est généralement utilisé pour identifier ou distinguer :

  • Les touches de caractères étendus, telles que les touches de fonction.

  • Touches de navigation, telles que Accueil, Fin, PgUp, PgDn, Flèche haut, Flèche bas, Flèche droite, Flèche gauche et Tab.

  • Combinaisons de touches et de modificateurs de clavier standard (Touches Maj, Ctrl ou Alt).

  • Le pavé numérique et les touches à chiffre du clavier.

L'événement KeyDown ne se produit pas lorsque vous appuyez sur :

  • Touche Entrée si le formulaire comporte un bouton de commande pour lequel la propriété Default est définie sur Oui.

  • La touche Échap si le formulaire comporte un bouton de commande pour lequel la propriété Cancel est définie sur Oui.

L'événement KeyDown se produit lorsque vous appuyez sur la touche ou que vous envoyez une touche ANSI. L'événement KeyUp se produit après tout événement de contrôle déclenché par la frappe ou l'envoi de la clé. Si un code de touche provoque le focus passer d'un contrôle à un autre contrôle, l'événement KeyDown se produit pour le premier contrôle, tandis que les événements KeyPress et KeyUp se produisent pour le deuxième contrôle.

Pour savoir quel caractère ANSI correspond à la touche enfoncée, utilisez l'événement KeyPress.

Si une boîte de dialogue modale est affichée à la suite en appuyant sur ou envoyez une touche, les événements KeyDown et KeyPress se produisent, mais l'événement KeyUp ne se produit pas.

Exemple

L’exemple suivant détermine si vous avez appuyé sur la touche Maj, Ctrl ou Alt.

Pour essayer l’exemple, ajoutez la procédure événementielle suivante à un formulaire contenant une zone de texte nommée KeyHandler.

Private Sub KeyHandler_KeyDown(KeyCode As Integer, _ 
     Shift As Integer) 
    Dim intShiftDown As Integer, intAltDown As Integer 
    Dim intCtrlDown As Integer 
 
    ' Use bit masks to determine which key was pressed. 
    intShiftDown = (Shift And acShiftMask) > 0 
    intAltDown = (Shift And acAltMask) > 0 
    intCtrlDown = (Shift And acCtrlMask) > 0 
    ' Display message telling user which key was pressed. 
    If intShiftDown Then MsgBox "You pressed the Shift key." 
    If intAltDown Then MsgBox "You pressed the Alt key." 
    If intCtrlDown Then MsgBox "You pressed the Ctrl key." 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.