Aide sur vérification du nombre de lettres et de chiffres dans une donnée [Résolu]

Signaler
Messages postés
5
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
9 novembre 2008
-
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
-
Bonjour

je dois créer un programme qui doit vérifier un numéro de licence. Il doit vérifier que dans mon numéro de licence est composé de trois lettre entre A et Z suivie de 10 chiffres. ex: MIC2344347879

mais je sais pas comment faire ca. J'ai essayé plusieurs fois mais j'ai toujours des erreurs voici ce que j'avais commencé (je sais que ca n'a pas de sens)

Merci de votre aide!
__________________

Function No_licence_valide(numero_licence as string,affichage as integer)

If Val(numero_licence, 4, 10) = 10 Then
Else
Call MsgBox("Vous devez avoir dix chiffres dans votre licence!")
affichage = 1
Exit Function
End If


If Val(numero_licence, 1, 3) = 0 Then
Else
Call MsgBox("Vous devez avoir trois lettres dans votre licence!")
affichage = 1
Exit Function
End If

End Function

16 réponses

Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Bonjour,

Alors une solution possible.
Tu parcours ta chaine, et tu regarde le caractere. Si le code ascii est compris entre x et y (désolée j'ai plus les valeurs la en tete) alors c'est un chiffre, si la valeur est comprise entre m et n alors c'est une lettre. Tu incrémente un compteur de chaque et au final tu compare la valeur du compteur.
en algo ca donne :
tant que pas fin de chaine alors
   si valeur ascci caractere est compris entre x et y (inclus) alors
      compteurNum = compteurNum+1
   sinon
      si valeur ascii caractere est compris entre (debpa et finpa) ET compris entre (debga et debga)
        compteurAlpha = compteurAlpha + 1
      fin si
   fin si
   si compteurAlpha 3 et compteurNum 10 alors
      Test ok
   sinon
      TestNOK
   fin si

Bon courage

S.L.B.
<hr />
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonjour,

Je débute (il faut donc que tu te contentes de la réponse d'un débutant de chez débutant) :

Utilise directement et très facilement et simplement  l'opérateur Like (il est fort bien expliqué, avec exemples, dans ton aide en ligne)
Messages postés
5
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
9 novembre 2008

merci de ta réponse
par contre dans mon cours, je n'ai pas appris l'opération LIKE dans mon cours
je vais me fais tapper sur les doigts si j'utilise ca
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Ah ?
Faire, mais sans Like ? parce que imposé par ton exercice ?
C'est un exercice scolaire, donc ?
Je ne crois pas que ce forum serve à celà !

Mais bon :

Travaille alors avec une boucle utilisant Isnumeric et Mid ...
S'agissant d'un exercice, je n'irai pas plus loin, personnellement ...(et tu es maintenant guidé).
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Tu peux même n'utiliser, avec un peu de réflexion, que Left et Len dans une boucle (si tu n'as pas appris Mid non plus ...) ...
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonjour,

Tu peux t'inspirer de ce qu'a écrit lillith212, mais en modifiant son algo ...

A lillith212 : gaffe ! la chaîne sera reconnue correcte, avec ton algo, même si elle est de type "#####AA##A###"
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Bonjour,

une boucle avec comparaison de char que tu met dans 2 tableau (les chr$)
1 contenant les chiffres l'autre contenant les lettres

a+
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
A gillardg: gaffe toi aussi ! la chaîne sera reconnue correcte, avec ta proposition , même si elle est de type "#####AA##A###"
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Il pourrait également (mais je doute fort qu'il ait déjà vu la chose dans son "cours", s'il n'a pas appris l'opérateur Like bien plus simple ...) :
utiliser strconv pour transformer sa chaine en un seul tableau de bythes, puis :
vérifier que le Ubound = 9 et si oui :
- une boucle de 0 à 2 pour vérifier que les 3 1ers sont des lettres
- une boucle de 3 à 9 pour vérifier que les autres sont des chiffres

Mais il y a quand même plus simple, non, y compris sans Mid !
Left, Right, Len et Val suffisent conjugués à Asc

Deb de chez deb
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Bonjour,

jmf0, si tu mets l'alphabet dans un tableau , et que tu vérifies si # est dedans ça dezvrait pas retourner False avec chr()??

a+
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Euh...
Avec mon tableau de Bytes  obtenu par StrConv ?
Mais qui t'a parlé d'alphabet ? et pourquoi chr() ??? je n'en aurais nul besoin !!
Mais te dire comment serait déjà faire ce que je ne veux pas !: son exercice imposé ...
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Bonjour,

je crois que nous pouvons tomber ( pas trop bas ) daccord sur 1 point
c'est un problème simple et il y a plusieurs façon de le résoudre

a+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
çà va juste en devenir totalement désagréable de venir même rien que lire, voilà tout ce qu'y sera gagné

sans oublier qu'à faux débutant



, vrai débutant et demi...
Messages postés
5
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
9 novembre 2008

wow merci des reponses... oui c'est un cours que je fais afin de pouvoir programmer du VB plutard. Je dois programmer de la meme maniere qu'on me forme afin que mon stagiaire puisse comprendre ce que j'ai fait. (il prend le meme cours) mais l'idee des chaines avec mid et len c'est bien j'avais pensé à ça mais je ne savais pas comment le partir. Alors merci encore!
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Ouais...
Juste une petite remarque, à ce niveau :
Les opérateurs sont l'une des premières choses que l'on apprend, lorsque l'on apprend un langage de développement !
Et Like est l'un de ces opérateurs !
Et ta chaine est bonne lorsque, tout simplement :
la_chaine Like "[A-Z][A-Z][A-Z]##########"
est vérifié à True !!!
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Bonsoir,
Pour info en prenant le code ascii tu n'a pas de problème avec une chaine de type #######
Ensuite, pour les caracteres spéciaux, tu fais juste un controle de touche afin de permettre que la saisir des alpha et des numériques.
Bonne soirée

SLB