Evénement KeyDown et vbKeyReturn [Résolu]

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

Votre réponse

9 réponses

Meilleure réponse
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Dernière intervention
4 mars 2013
30 août 2006 à 12:31
3
Merci
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

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Meilleure réponse
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
30 août 2006 à 12:34
3
Merci
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é @+

Merci violent_ken 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
30 août 2006 à 12:37
0
Merci
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
Messages postés
46
Date d'inscription
mercredi 1 février 2006
Dernière intervention
30 octobre 2007
30 août 2006 à 12:44
0
Merci
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
Messages postés
8
Date d'inscription
mercredi 26 février 2003
Dernière intervention
20 juin 2007
31 janv. 2007 à 14:52
0
Merci
> 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
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
31 janv. 2007 à 16:33
0
Merci
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
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
31 janv. 2007 à 16:37
0
Merci
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
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Dernière intervention
26 octobre 2010
31 janv. 2007 à 16:37
0
Merci
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
Messages postés
8
Date d'inscription
mercredi 26 février 2003
Dernière intervention
20 juin 2007
31 janv. 2007 à 16:44
0
Merci
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.