EST CE UN CHIFFRE OU UNE LETTRE

nagattaque Messages postés 230 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 5 juin 2007 - 15 juil. 2004 à 12:15
 cs_ShayW - 22 sept. 2011 à 22:12
Bonjour,

Existe t'il un moyen rapide de savoir si une chaine est composée uniquement de lettres ou de chiffres ?

Je suis sur un formulaire, je récupère une entrée et je dois vérifier que le texte rentré est une suite de 6 chiffres.

Merci de votre aide...

:-p :-p :-p :-p :-p :-p :-p :-p
Nag
mail : nagattaque@free.fr
msn : giraudnba@msn.com
:-p :-p :-p :-p :-p :-p :-p :-p

29 réponses

dandyjulio Messages postés 3 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 15 juillet 2004
15 juil. 2004 à 12:19
Il faut utiliser des expressions régulières.
Consulte l'aide .NET en cherchant "expressions régulières"
(le type ca doit être regex)
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
15 juil. 2004 à 12:24
Ou, tout simple :

for i = 1 to 6

if mid(ta_chaine, i, 1) <> 1 or mid(ta_chaine, i, 1) <> 2 or mid(ta_chaine, i, 1) <> 3 or mid(ta_chaine, i, 1) <> 4 or mid(ta_chaine, i, 1) <> 5 or mid(ta_chaine, i, 1) <> 6 or mid(ta_chaine, i, 1) <> 7 or mid(ta_chaine, i, 1) <> 8 or mid(ta_chaine, i, 1) <> 9 or mid(ta_chaine, i, 1) <> 0 then goto err

next i

exit sub

err:

msgbox "la chaine n'est pas composé de 6 chiffres"

Enfin bon... il y a surement plus simple, mais c'est ce qu'il m'est venu là ! ;-)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
15 juil. 2004 à 12:53
Il y a effectivement bcp plus simple :
for i = 1 to 6
  if not isnumeric(mid$(ta_chaine, i, 1)) then goto err
next
exit sub

err:
msgbox "la chaine n'est pas composé de 6 chiffres"

Christophe R.
0
MOONWAX Messages postés 19 Date d'inscription mercredi 14 juillet 2004 Statut Membre Dernière intervention 16 août 2004 1
15 juil. 2004 à 13:14
Ou, également tout simple :

Private Function IsNumeric(ByVal sTest As String) As Boolean

Dim i As Integer

For i = 1 To 6
If Val(Mid(sTest, i, 1)) = 0 And Mid(sTest, i, 1) <> "0" Then
IsNumeric = False
Exit Function
End If
Next
IsNumeric = True

End Function
0

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

Posez votre question
MOONWAX Messages postés 19 Date d'inscription mercredi 14 juillet 2004 Statut Membre Dernière intervention 16 août 2004 1
15 juil. 2004 à 13:22
Désolé Christophe, tu as gagné...

Ta solution n'apparaissait pas encore à mon écran, et j'avais complètement oublié que la fonction IsNumeric était déjà incorporé dans VB6...
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
15 juil. 2004 à 13:31
Oui, on aurait aussi put faire autre chose :
on passe la valeur dans une variable de type integer, et l'on voit si cela génère une erreur.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
15 juil. 2004 à 13:33
On peut aussi faire cela :
Function Is6Digit(LaChaine as String) as Boolean
  Is6digit = (LaChaine like "[0-9][0-9][0-9][0-9][0-9][0-9]")
End Function

comme cela, elle me plait bien !!

Christophe R.
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
15 juil. 2004 à 13:33
Evidemment, on récupère l'erreur à l'aide On error goto.

Comme ça, pas de boucle for...

Mais bon, je chipotte là ;-)
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
15 juil. 2004 à 13:35
Je connaissais pas cette manière de faire, crenaud76. C'est effectivement très simple comme ça.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
15 juil. 2004 à 13:37
Scalpweb !! Non car la chaine "10E+02" rentre dans un integer sans faire d'erreur, or tu n'as pas une chaine de 6 digits la !!!!

Christophe R.
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
15 juil. 2004 à 13:41
Ah oui mince. J'avais pas penser à cette éventualité. Désolé...
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
15 juil. 2004 à 13:50
Une suite de 6 chiffres ... pas de point décimal.

Function bIsChampValide(psMaChaine as String) as BooleanbIsChampValide (CStr(Val(psMaChaine)) psMaChaine) And (Len(psMaChaine)=6)
End Function
0
nagattaque Messages postés 230 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 5 juin 2007
15 juil. 2004 à 14:26
Bon ba maintenant je vais fair eun plouf plouf... Merci en tout cas, et la meme chose pour que des lettres ca existe aussi ??? lol

merci de votre devouement!!

:-p :-p :-p :-p :-p :-p :-p :-p
Nag
mail : nagattaque@free.fr
msn : giraudnba@msn.com
:-p :-p :-p :-p :-p :-p :-p :-p
0
nagattaque Messages postés 230 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 5 juin 2007
15 juil. 2004 à 14:28
Bon ba maintenant je vais fair eun plouf plouf... Merci en tout cas, et la meme chose pour que des lettres ca existe aussi ??? lol

merci de votre devouement!!

:-p :-p :-p :-p :-p :-p :-p :-p
Nag
mail : nagattaque@free.fr
msn : giraudnba@msn.com
:-p :-p :-p :-p :-p :-p :-p :-p
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
15 juil. 2004 à 14:40
La même chose que pour 6 digits, à deux ou trois détails près
Function Is6Letters(LaChaine as String) as Boolean
Is6digit = (Lcase$(LaChaine) like "[a-z][a-z][a-z][a-z][a-z][a-z]")
End Function


Christophe R.
0
nagattaque Messages postés 230 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 5 juin 2007
15 juil. 2004 à 15:21
merki !!!

:-p :-p :-p :-p :-p :-p :-p :-p
Nag
mail : nagattaque@free.fr
msn : giraudnba@msn.com
:-p :-p :-p :-p :-p :-p :-p :-p
0
rgautomatisation Messages postés 12 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 6 mars 2005
19 juil. 2004 à 03:02
Il y a une autre facon assez simple...

Dim tachaine$
    tachaine$ = Val(tachaineTB.Text)
    If tachaineTB.Text = tachaine Then
        'Nombre seulement
    ElseIf tachaineTB.Text = tachaine Then
        'Contient autre que nombre
    End If


RGautomatisation
0
rgautomatisation Messages postés 12 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 6 mars 2005
19 juil. 2004 à 03:04
oups... j'ai oublier le $ apres tachaine a 2 endroits -> tachaine$
RGautomatisation
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
19 juil. 2004 à 11:51
La solution de crenaud 76 reste tout de même la plus simple au final il me semble.
0
MOONWAX Messages postés 19 Date d'inscription mercredi 14 juillet 2004 Statut Membre Dernière intervention 16 août 2004 1
19 juil. 2004 à 12:04
Non mais ! RGautomatisation, regarde le commentaire de crenaud76 sur l'exception crée par un string comme "1E+999". Ou le "10D999", ça crée des jolies erreurs aussi; en plus, avec la fonction "Val", tu ne peux pas gérer les cas comme "000001", pourtant une suite de 6 chiffres correcte...

Moi aussi, je préfère celle avec l'opérateur "Like" - merci Christophe !
0
Rejoignez-nous