Récuperer code Ascii d'une entées clavier

cletou
Messages postés
4
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
26 avril 2005
- 8 avril 2005 à 15:47
crenaud76
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
- 9 avril 2005 à 21:32
Salut à tous,

Je souhaiterais savoir comment on récupere le code ascii que l'utilisateur saisi
au clavier.
Par exemple pour la procédure

Private Sub TextBoxCodePostal_KeyPress(KeyAscii As Integer)

Que dois je faire pour récupérer la valeur à donner à KeyAscii ??

Merci d'avance,

Cletou

8 réponses

Starec
Messages postés
152
Date d'inscription
mercredi 30 mars 2005
Statut
Membre
Dernière intervention
5 mars 2007

8 avril 2005 à 15:54
Exemple :

Si l'utilisateur doit taper sur la touche Return, pour valider la saisie, ton code devient :

Private Sub TextBoxCodePostal_KeyPress(KeyAscii As Integer)

if keyascii = vbKeyreturn then
+++++
else
+++++
end if
end sub

Cherche les constantes dans l'aide tape KeyPress, il te dira toutes les constantes

Starec
0
crenaud76
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
28
8 avril 2005 à 16:01
Starec < vbKeyReturn n'est pas un code Ascii !! C'est un code de touche !!!! IL est utilisable conjointement avec le paramètre KeyCode des evt KeyDown et KeyUp !!!
Les code ascii sont simple à obtenir : Asc("A") pour un A majuscule par exemple. Pour le retour chariot, c'est vbCR, etc ...

Christophe R
0
cletou
Messages postés
4
Date d'inscription
samedi 11 novembre 2000
Statut
Membre
Dernière intervention
26 avril 2005

8 avril 2005 à 16:13
Merci christophe,

je me suis peut être mal exprimé je cherche simplement
à récupérer le code Ascii de la touche saisie par
l'utilisateur afin de vérifier, dans le cas présent pour un
code postal, s'il s'agit bien d'un chiffre :

If KeyAscii < 48 Or KeyAscii > 57 Then
error ......
End if

merci,

cletou
0
Starec
Messages postés
152
Date d'inscription
mercredi 30 mars 2005
Statut
Membre
Dernière intervention
5 mars 2007

8 avril 2005 à 16:27
Exact, j'ai mal saisi, si tu veux contrôler ce qui est saisi tu peux obliger l'utilisateur à ne saisir que des chiffres (voir l'emple ci dessous qui se trouve dans le forum et les sources avec plein d'autre tape "Validation Saisie", et de plus je crois qu'en mettant la propriété de ta textbox Maxlenght à 5, tu ne peux saisir plus de 5 chiffres comme un code postal

Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not Chr(KeyAscii) Like "[0123456789]" Then KeyAscii = 0
End Sub

Starec
0

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

Posez votre question
crenaud76
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
28
8 avril 2005 à 17:26
Le test direct sur le Keyascii est tout aussi judicieux, même plus ...
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <48 Or KeyAscii > 57 then
KeyAscii = 0
' Mettre éventuellement un msg d'erreur si tu le veux içi.
Endif
End Sub

Tu peux aussi remplacer ta textbox par une MaskedEditBox et jouer sur sa propriété Mask

Christophe R
0
EMSIEN
Messages postés
194
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2009

8 avril 2005 à 17:56
Pour ma part je te suggère dans le cas ou tu veux tester si c'est des numéros d'utiliser la fonction Isnuméric(expression) qui Retourne une valeur booléenne indiquant si une expression peut être évaluée sous la forme d'un nombre.
mais dans ce cas meme les réels sont considérés Numériques ce qui est normal mais pour le code postale.
mais ça te serviras peut etre un jour.
0
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
8 avril 2005 à 21:46
Je ne vais sans doute rien ajouter de positif à la discussion mais je me permet quand même de donner mon avis.

J'aime bien la soluce de Starec :
If Not Chr(KeyAscii) Like "[0123456789]" Then KeyAscii = 0
sauf que je l'aurais écrite :
If Not Chr$(KeyAscii) Like "[0123456789]" Then KeyAscii = 0

car on oublie trop souvent l'opérateur Like qui est souvent plus rapide que de jouer avec des mid$, left$ et right$ lors de recherches dans des enregistrements et fichiers.

Mais, en terme de performance, dans ce cas précis, je préfère celle de
crenaud76 :
If KeyAscii <48 Or KeyAscii > 57 then KeyAscii = 0

car cela évite une première conversion en caractère ascii ( chr$(KeyAscii) ) puis une recherche dans une chaîne "[0123456789]".

Je sais bien qu'avec les sytèmes actuels la différence est minime voire proche de nulle (puisque dans ce cas, la différence du temps d'exécution est absorbée par le temps de saisie) mais je pense qu'il est bon de connaître les 2 méthodes et les utiliser à bon escient.

Loup Gris
0
crenaud76
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
28
9 avril 2005 à 21:32
Canis Lupus < Même analyse que toi du pb, donc même déduction et donc proposition de ce code, plutot que de la solution avec le Like, comme toi.
On est sur la même longueur d'onde toi et moi !! Pour un Félin et un "Canis Lupus", c'est un comble !!!

Christophe R
0