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
A voir également:
Aide sur vérification du nombre de lettres et de chiffres dans une donnée
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
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
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é).
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
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é ...
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!
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 !!!
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