Evénement KeyDown et vbKeyReturn

Résolu
chouchou270403 Messages postés 46 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 30 octobre 2007 - 30 août 2006 à 12:12
palm56 Messages postés 8 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 20 juin 2007 - 31 janv. 2007 à 16:44
Bonjour à tous,

Voilà j'explique mon cas lol

Je suis en train de faire un programme récapitulatif de tout ce que je vois à l'école, et pour cela j'ai fais un groupe de boutons nommé Command1 et qui va jusque Command1(15), en masque de saisie pour que l'on puisse naviguer avec les flèches sur chaque bouton sans utiliser la souris. Ce que j'aimerais pouvoir faire, c'est qu'une fois que je suis sur un des bouton par exemple le deuxième, et que je tape sur Enter, une form s'ouvre. Mon masque de saisie avec flèche fonctione mais je ne sais comment faire pour faire ouvrir la form par rapport à l'événement Key return.

J'espère avoir était claire, merci à tous pour votre aide...

P.S : voici mon code pour le masque de saisie vous comprendrez peut-être mieux...

Private Sub Command1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyDown Then

        Index = Index + 1
   
    If Index > 15 Then Index = 0
   
        Command1(Index).SetFocus

ElseIf KeyCode = vbKeyUp Then

        Index = Index - 1
   
    If Index < 0 Then Index = 15
   
        Command1(Index).SetFocus
       
End If

End Sub

9 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
30 août 2006 à 12:31
Pas besoin de tout cà pour gérer le keyreturn, puisque si ton bouton a le focus, lorsque tu appuiera sur entrer, ca déclenchera son événement Click !

Donc dans l'événement click de ton bouton :

Form2.Show
3
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
30 août 2006 à 12:34
Violent Ken

Salut !

J'ai compris l'histoire du "masque de saisie", mais il faut savoir que si tu n'as que des composants Command, Checkbox...., bref, des composants qui ne comportent pas de zone de saisie de texte, tu peux naviguer entre eux avec les flèches sans ajouter aucun code à ton programme (automatiquement).

La tabulation permet, elle, de naviguer entre tout les composants, quels qu'ils soient.
Shift+Tab permet le retour sur le composant d'avant (inverse de Tab).

Concernant l'appui sur la touche entrée, il faut récupérer la valeur de KeyCode.
Dans ce cas, la valeur correspondant à "Entrée" est la constante VbKeyReturn.

Le code sera donc :

Private Sub Command1_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then form2.Show
End Sub

MAIS il faut savoir que la touche entrée a un comportement spécifique sur un Commad. De ce fait, cette touche ne peut pas être captée de cette manière.... Par contre, si tu désires changer de touche :
-Espace actionne le Command
-N'importe quelle autre touche possède une valeur spécifique, à savoir :


Code des touches




Constante,
Valeur,
Description,

----

vbKeyLButton,
1,
Bouton gauche de la souris,

----

vbKeyRButton,
2,
Bouton droit de la souris,

----

vbKeyCancel,
3,
Touche ANNUL,

----

vbKeyMButton,
4,
Bouton central de la souris,

----

vbKeyBack,
8,
Touche RET.ARR,

----

vbKeyTab,
9,
Touche TAB,

----

vbKeyClear,
12,
Touche EFFACER,

----

vbKeyReturn,
13,
Touche ENTRÉE,

----

vbKeyShift,
16,
Touche MAJ,

----

vbKeyControl,
17,
Touche CTRL,

----

vbKeyMenu,
18,
Touche MENU,

----

vbKeyPause,
19,
Touche PAUSE,

----

vbKeyCapital,
20,
Touche VERR.MAJ,

----

vbKeyEscape,
27,
Touche ÉCHAP.,

----

vbKeySpace,
32,
Touche ESPACE,

----

vbKeyPageUp,
33,
Touche PG PRÉC.,

----

vbKeyPageDown,
34,
Touche PG SUIV.,

----

vbKeyEnd,
35,
Touche FIN,

----

vbKeyHome,
36,
Touche ORIGINE,

----

vbKeyLeft,
37,
Touche FLÈCHE VERS LA GAUCHE,

----

vbKeyUp,
38,
Touche FLÈCHE VERS LE HAUT,

----

vbKeyRight,
39,
Touche FLÈCHE VERS LA DROITE,

----

vbKeyDown,
40,
Touche FLÈCHE VERS LE BAS,

----

vbKeySelect,
41,
Touche SELECT,

----

vbKeyPrint,
42,
Touche IMPR.ÉCRAN,

----

vbKeyExecute,
43,
Touche EXÉCUTE,

----

vbKeySnapshot,
44,
Touche INSTANTANÉ,

----

vbKeyInsert,
45,
Touche INSER,

----

vbKeyDelete,
46,
Touche SUPPR.,

----

vbKeyHelp,
47,
Touche AIDE,

----

vbKeyNumlock,
144,
Touche VERR.NUM



Les constantes KeyA à KeyZ sont identiques à leurs équivalents ASCII : 'A' à 'Z'




Constante,
Valeur,
Description,

----

vbKeyA
,
65,
Touche A,

----

vbKeyB,
66,
Touche B,

----

vbKeyC,
67,
Touche C,

----

vbKeyD,
68,
Touche D,

----

vbKeyE,
69,
Touche E,

----

vbKeyF,
70,
Touche F,

----

vbKeyG,
71,
Touche G,

----

vbKeyH,
72,
Touche H,

----

vbKeyI,
73,
Touche I,

----

vbKeyJ,
74,
Touche J,

----

vbKeyK,
75,
Touche K,

----

vbKeyL,
76,
Touche L,

----

vbKeyM,
77,
Touche M,

----

vbKeyN,
78,
Touche N,

----

vbKeyO,
79,
Touche O,

----

vbKeyP,
80,
Touche P,

----

vbKeyQ,
81,
Touche Q,

----

vbKeyR,
82,
Touche R,

----

vbKeyS,
83,
Touche S,

----

vbKeyT,
84,
Touche T,

----

vbKeyU,
85,
Touche U,

----

vbKeyV,
86,
Touche V,

----

vbKeyW,
87,
Touche W,

----

vbKeyX,
88,
Touche X,

----

vbKeyY,
89,
Touche Y,

----

vbKeyZ,
90,
Touche Z



Les constantes Key0 à Key9 sont identiques à leurs équivalents ASCII : '0' à '9




Constante,
Valeur,
Description,

----

vbKey0,
48,
Touche 0,

----

vbKey1,
49,
Touche 1,

----

vbKey2,
50,
Touche 2,

----

vbKey3,
51,
Touche 3,

----

vbKey4,
52,
Touche 4,

----

vbKey5,
53,
Touche 5,

----

vbKey6,
54,
Touche 6,

----

vbKey7,
55,
Touche 7,

----

vbKey8,
56,
Touche 8,

----

vbKey9,
57,
Touche 9



Touches du pavé numérique




Constante,
Valeur,
Description,

----

vbKeyNumpad0,
96,
Touche 0,

----

vbKeyNumpad1,
97,
Touche 1,

----

vbKeyNumpad2,
98,
Touche 2,

----

vbKeyNumpad3,
99,
Touche 3,

----

vbKeyNumpad4,
100,
Touche 4,

----

vbKeyNumpad5,
101,
Touche 5,

----

vbKeyNumpad6,
102,
Touche 6,

----

vbKeyNumpad7,
103,
Touche 7,

----

vbKeyNumpad8,
104,
Touche 8,

----

vbKeyNumpad9,
105,
Touche 9,

----

vbKeyMultiply,
106,
Touche SIGNE MULTIPLICATION (*),

----

vbKeyAdd,
107,
Touche SIGNE PLUS (+),

----

vbKeySeparator,
108,
Touche ENTRÉE (pavé numérique),

----

vbKeySubtract,
109,
Touche SIGNE MOINS (-),

----

vbKeyDecimal,
110,
Touche POINT DÉCIMAL (.),

----

vbKeyDivide,
111,
Touche SIGNE DIVISION (/)



Touches de fonction




Constante,
Valeur,
Description,

----

vbKeyF1,
112,
Touche F1,

----

vbKeyF2,
113,
Touche F2,

----

vbKeyF3,
114,
Touche F3,

----

vbKeyF4,
115,
Touche F4,

----

vbKeyF5,
116,
Touche F5,

----

vbKeyF6,
117,
Touche F6,

----

vbKeyF7,
118,
Touche F7,

----

vbKeyF8,
119,
Touche F8,

----

vbKeyF9,
120,
Touche F9,

----

vbKeyF10,
121,
Touche F10,

----

vbKeyF11,
122,
Touche F11,

----

vbKeyF12,
123,
Touche F12,

----

vbKeyF13,
124,
Touche F13,

----

vbKeyF14,
125,
Touche F14,

----

vbKeyF15,
126,
Touche F15,

----

vbKeyF16,
127,
Touche F16




Voilà, en espérant avoir aidé @+
3
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
30 août 2006 à 12:37
Violent Ken

Ce qu'a dit DARKSIDIOUS résume bien ;)

Mais précisons tout de même que la touche "Entrée" n'est pas captée dans l'evenement KeyDown.
@+
0
chouchou270403 Messages postés 46 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 30 octobre 2007
30 août 2006 à 12:44
Merci à tous les deux, au fait je me compliquais la vie mdr alors que c'était si simple maintenant grâce à vous je peux continuer un grand merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
palm56 Messages postés 8 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 20 juin 2007 2
31 janv. 2007 à 14:52
> Violent Ken

La touche entrée est correctement captée dans l'évènement keyDown.

L'exemple ci-dessous fonctionne correctement.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then
        MsgBox ("ok")
    End If
End Sub
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
31 janv. 2007 à 16:33
Violent Ken

Salut, euh oui, bien sur, "Entrée" est évidemment récupérée dans l'evenement KeyDown (je l'ai d'ailleurs moi même dit "Dans ce cas, la valeur correspondant à "Entrée" est la constante VbKeyReturn")

Je pense que j'ai voulu dire que vbKeyTab n'est pas récupérée quand on a plusieurs controles qui peuvent prendre le focus avec la tabulation.

Exemple, mettre une textbox dans une form et appuyer sur Tab en étant dessus et avec ce code
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyTab Then MsgBox "ok"
End Sub
> détecte l'appui de la touche

Rajouter une seconde textbox, et plus de msgbox.

Je pense que c'est ce que j'avais voulu dire.

@+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
31 janv. 2007 à 16:37
Violent Ken

lol en fait non, je suis pas fou, c'est bien l'évênement KeyDown pour la touche Entrée qui ne peut pas être captée dans le cas d'un CommandButton.

Exemple :
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyCode
End Sub
Marche pas avec vbKeyReturn (entrée)

@+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
31 janv. 2007 à 16:37
Violent Ken

lol en fait non, je suis pas fou, c'est bien l'évênement KeyDown pour la touche Entrée qui ne peut pas être captée dans le cas d'un CommandButton.

Exemple :
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyCode
End Sub
Marche pas avec vbKeyReturn (entrée)

@+
0
palm56 Messages postés 8 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 20 juin 2007 2
31 janv. 2007 à 16:44
Effectivement, je viens de le tester.

Je n'ai pas tilté que ton message plus haut concernait le CommandButton.

Désolé d'avoir dit des bêtises

Bye.
0
Rejoignez-nous