Un textbox que peut contenir uniquement des chiffre
cricri_b34
Messages postés223Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention15 février 2006
-
4 août 2004 à 02:04
pcpunch
Messages postés1247Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention18 février 2019
-
6 août 2004 à 16:06
J'aimerais savoir comment faire pour que lorsque l'utilisateur de mon programme tape un lettre un message d'erreur saffiche lui indiquant qu'il peut uniquement entré des chifre.
le code devrait ressembler a ceci
If Text1.text = une lettre then
msgbox("tu peut seulement entré des chiffre"
Mais comment on fait pour spécifier en un seul mot, toutes les lettres de l'alphabet??
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 4 août 2004 à 02:46
Salut
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
MsgBox "Uniquement les numériques", vbInformation, "Erreur"
End If
End Sub
mais il insere quand meme le caractere apres le message, donc prevoir un code qui ne le met pas
Bonne prog, poele_a_frire@hotmail.com
liquide
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 4 août 2004 à 03:24
L'evenement KeyPress retroune en permanence le code de la touche presser c'est le KeyAscii
Windows ne reconnait pas les touche en tant que lettre mais en tant que constante numérique.
le 1 vaut 49
2 vaut 50
3 vaut 51
a vaut 97
b vaut 98
A vaut 65
etc etc
regarde dans l'aide msdn a "Jeu de caractères (0 à 127)" et il y en a jusqu'a 255, en rapidos, tu peux tout trouver dans la fonction Chr(), Chr$() ou encore Asc(), tout les caracteres y sont indiqués.
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 4 août 2004 à 09:14
Petite correction du code de Liquide afin que celui-ci affiche le msg d'erreur ET n'ajoute pas la lettre tapée à la textbox :
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
MsgBox "Uniquement les numériques", vbInformation, "Erreur"
KeyAscii = 0
End If
End Sub
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 4 août 2004 à 09:16
PS : J'ai l'impression que vousd ne lisez vraiment pas souvent la doc, car c'est écrit en gros dedans : "Mettre le KeyAscii à zéro annule la frappe de touche" !!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202171 4 août 2004 à 09:17
Tout simplement :
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const ES_NUMBER As Long = &H2000&
Private Const GWL_STYLE As Long = -16
Private Sub Form_Load()
Dim Style As Long
Style = GetWindowLong(Text1.hwnd, GWL_STYLE)
Style = Style Or ES_NUMBER
SetWindowLong Text1.hwnd, GWL_STYLE, Style
End Sub
cricri_b34
Messages postés223Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention15 février 2006 6 août 2004 à 06:07
comment je fais pour dire une a la foi toute les touches pouvant être tapé?
Private Sub Text1_KeyPress(KeyAscii As Integer)
If not KeyAscii 1,2,4,5,6 Then
MsgBox "Uniquement les numériques", vbInformation, "Erreur"
KeyAscii = 0
End If
End Sub
pcpunch
Messages postés1247Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention18 février 20195 6 août 2004 à 13:20
Slt Reinfield, c'est pas Jack mais Pcpunch lol
je vide le textbox car g vu cette question un peu plus haut :
"comment je peux faire si je veux que lorsqu'il y une lettre dans le
textbox, le textebox ce vide?"
Pour cricri_34b : toujour dans l evenement keypress du textbox :
If InStr("azerty123", Chr(KeyAscii)) 0 Then KeyAscii 0
azety123 seront les touche accepté !!!
Mais comme je l'ai écrit précedement il suffit d'utiliser la fonction isnumeric de vb :
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then KeyAscii = 0
Si la touche n'est pas numéric et que c pas backspace qui est préssé alors on annule la frappe!!!!
cricri_b34
Messages postés223Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention15 février 2006 6 août 2004 à 14:35
mais ma question c'était:
comment je fais pour dire une a la foi toute les touches pouvant être tapé?
Private Sub Text1_KeyPress(KeyAscii As Integer)
If not KeyAscii 1,2,4,5,6 Then
MsgBox "Uniquement les numériques", vbInformation, "Erreur"
KeyAscii = 0
End If
End Sub
pcpunch
Messages postés1247Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention18 février 20195 6 août 2004 à 16:06
Bon j'ai l impression de me repéter mais pour la derniere fois :
la fonction instr permet de recherche une chaine de caractére dans une autre :
ici on recherche chr(keyascii) c a dire la touche présser dans "azerty123"
exemple si la touche tapé est 1 alors instr renvoie 7, c'est la position du caractére dans la chaine
exemple si la touche tapé est x alors instr renvoie 0, car elle n'est pas présente dans la chaine
Donc
If InStr("azerty123", Chr(KeyAscii)) = 0 Then keyascii=0
traduction lol :
Si la touche taper "(chr(keyascii) " n'est pas dans la chaine "azerty123" (donc instr renvoie 0) alors on annule la frappe (keyascii=0)
Pour ceux qui est du retour arriere (backspace) c le keyascii 8 : donc :
If InStr("azerty123", Chr(KeyAscii)) = 0 and keyascii<>8 Then keyascii=0
Ce qui se traduit par :
Si la touche taper "(chr(keyascii) " n'est pas dans la chaine "azerty123" (donc instr renvoie 0) et
si le keyascii de la touche taper n'est pas 8 (backspace) alors
on annule la frappe (keyascii=0)