Evénement KeyDown et vbKeyReturn [Résolu]

chouchou270403 46 Messages postés mercredi 1 février 2006Date d'inscription 30 octobre 2007 Dernière intervention - 30 août 2006 à 12:12 - Dernière réponse : palm56 8 Messages postés mercredi 26 février 2003Date d'inscription 20 juin 2007 Dernière intervention
- 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
Afficher la suite 

9 réponses

Répondre au sujet
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 30 août 2006 à 12:31
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_DARKSIDIOUS
violent_ken 1822 Messages postés mardi 31 mai 2005Date d'inscription 26 octobre 2010 Dernière intervention - 30 août 2006 à 12:34
+3
Utile
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é @+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de violent_ken
violent_ken 1822 Messages postés mardi 31 mai 2005Date d'inscription 26 octobre 2010 Dernière intervention - 30 août 2006 à 12:37
0
Utile
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.
@+
Commenter la réponse de violent_ken
chouchou270403 46 Messages postés mercredi 1 février 2006Date d'inscription 30 octobre 2007 Dernière intervention - 30 août 2006 à 12:44
0
Utile
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
Commenter la réponse de chouchou270403
palm56 8 Messages postés mercredi 26 février 2003Date d'inscription 20 juin 2007 Dernière intervention - 31 janv. 2007 à 14:52
0
Utile
> 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
Commenter la réponse de palm56
violent_ken 1822 Messages postés mardi 31 mai 2005Date d'inscription 26 octobre 2010 Dernière intervention - 31 janv. 2007 à 16:33
0
Utile
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.

@+
Commenter la réponse de violent_ken
violent_ken 1822 Messages postés mardi 31 mai 2005Date d'inscription 26 octobre 2010 Dernière intervention - 31 janv. 2007 à 16:37
0
Utile
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)

@+
Commenter la réponse de violent_ken
violent_ken 1822 Messages postés mardi 31 mai 2005Date d'inscription 26 octobre 2010 Dernière intervention - 31 janv. 2007 à 16:37
0
Utile
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)

@+
Commenter la réponse de violent_ken
palm56 8 Messages postés mercredi 26 février 2003Date d'inscription 20 juin 2007 Dernière intervention - 31 janv. 2007 à 16:44
0
Utile
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.
Commenter la réponse de palm56

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.