Keypress a deux reprises dans textbox

cs_jeanduri Messages postés 1 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 20 décembre 2005 - 20 déc. 2005 à 12:32
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 22 déc. 2005 à 15:48
Bonjour,

Je fais une petite application de calcul, et lorsque l'utilisateur appuie sur la touche correcte, on passe au calcul suivant:7 + 2 9 (KeyAscii asc"9"), c'est OK
mais lorsqu'on a :7 + 3 10 (KeyAscii asc"1" puis KeyAscii = asc "0"), KO

18 réponses

cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
20 déc. 2005 à 16:50
Bonjour,
Vérifie que tu n'ai pas un courcircuit événementiel
Du style Evénement Exit ou lostfocus ou encore Affectation de bouton par défaut au formulaire... etc
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
21 déc. 2005 à 09:25
Non, il n'y a pas tout ça et d'aileurs ca marche très bien avec les simples keypress, mais pourquoi, ca devrait marcher normalement ? voici la fonction:

Private sub reponse_keypress (KeyAscii as integer)

if KeyAscii = asc("1") then

if KeyAscii = asc("0") then

etc


merci en tout cas
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
21 déc. 2005 à 09:27
bah désolé pour la mise en page, mais c'est chaque fois comme ça sous MAC os X
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
21 déc. 2005 à 09:42
c normal que ça ne marche qu'une seule fois....
au lieu de faire : if 1 then if 0
il faut que tu sauvegarde le 1 dans une variable puis
lorsque tu es de retour dans ta procedure vérifier si elle est égale à 1 en même temps que tu vérifies si on tape 0
bref lors d'un appui sur une touche tu passes dans la procedure
mais tu ne fais pas un appui sur une touche entre deux "if"
0

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

Posez votre question
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
21 déc. 2005 à 10:20
bon voilà, j'ai fait ceci


If KeyAscii Asc("1") Then vard 1 If KeyAscii Asc("0") Then vardu 1 If vard 1 And vardu 1 Then
resultat.Caption = "BRAVO !"
recommence.Visible = True
End If

ne marche pas

et puis ceci aussi ne marche pas
If KeyAscii Asc("1") Then vard 1
If KeyAscii = Asc("0") Then
If vard = 1 Then MsgBox "ok"
End If
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
21 déc. 2005 à 11:37
J'espère que ta variable "vard" est public.... ?
If KeyAscii = Asc("1") Then
vard = 1
ElseIf KeyAscii = Asc("0") Then
If vard = 1 Then MsgBox "ok"
End If
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
21 déc. 2005 à 11:58
oui oui
ceci dit, il y a peut-être une solution ici: http://www.vbfrance.com/forum.v2.aspx?ID=623458
mais ca me semble bien compliqué.
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
21 déc. 2005 à 12:13
Ben ça dit de remplacer ta fonction KeyPress par le code en question
Et ton code il faut le placer dans "KeyboardProc" a priori...

Mais en théorie tu n'a pas besoins de passer par les API si tu ne fais pas des acces simultanés...
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
21 déc. 2005 à 12:23
merci de ton aide
je vais peut-être voir autre chose que keypress
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
21 déc. 2005 à 13:43
sinon y a keydown ki fonctionne mieux
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
22 déc. 2005 à 14:08
ben j'ai essayé ceci mais ca ne marche pas: If KeyCode vbKey1 Or KeyCode vbKeyNumpad1 Then
vard = 1
End If If KeyCode vbKey0 Or KeyCode vbKeyNumpad0 Then
If vard = 1 Then

Dans certains posts, on parle de keylogger, de hook clavier, pourtant, dans le cas d'une inputbox, on entre du texte tant qu'on veut !?
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
22 déc. 2005 à 14:09
bien sûr, j'ai mis ceci avant keycode:


Private Sub reponse_KeyDown(KeyCode As Integer)
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
22 déc. 2005 à 14:24
Au fait, j'ai oublié de te dire... lors d'un appuis clavier ton focus risque de changer...
si ton focus change ton événement généré par l'appui clavier sera celui d'un autre control...
Je ne sais pas comment est ton code mais si tu veux être sur de faire un test correctement crée un nouveau formulaire vide et met le code keydown à ton formulaire et fais le test
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
22 déc. 2005 à 15:09
voilàn j'ai refait un simple form avec un seul textbox et le code qui suit mais nada:

Private Sub reponse_KeyDown(KeyCode As Integer, shift As Integer)
Dim vard As Integer If KeyCode vbKey1 Or KeyCode vbKeyNumpad1 Then
MsgBox KeyCode OK
vard = 1
End If If KeyCode vbKey0 Or KeyCode vbKeyNumpad0 Then
MsgBox KeyCode OK
If vard = 1 Then
MsgBox "ok" KO
End If
End If
End Sub
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
22 déc. 2005 à 15:23
pas de texte box, rien....
que le formulaire....
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
22 déc. 2005 à 15:36
comme ceci ?
Private Sub Form1_KeyDown(KeyCode As Integer, shift As Integer)
mais il n'y a plus rien qui apparaît alors
0
cs_eldim Messages postés 956 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 21 août 2014 1
22 déc. 2005 à 15:44
pas grave tu met une msgbox ou un debug.printline et tu regarde dans la fenetre de commande
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
22 déc. 2005 à 15:48
ben oui j'ai mis un msgbox comme dans le code précédent, mais rien de rien !
0
Rejoignez-nous