Lolyshia
Messages postés5Date d'inscriptiondimanche 28 septembre 2008StatutMembreDernière intervention 9 novembre 2008
-
9 nov. 2008 à 08:49
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 juin 2009
-
9 nov. 2008 à 20:21
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
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 juin 2009 9 nov. 2008 à 09:33
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
Lolyshia
Messages postés5Date d'inscriptiondimanche 28 septembre 2008StatutMembreDernière intervention 9 novembre 2008 9 nov. 2008 à 08:56
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
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 9 nov. 2008 à 09:04
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é).
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 9 nov. 2008 à 09:54
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
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 9 nov. 2008 à 10:13
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é ...
Lolyshia
Messages postés5Date d'inscriptiondimanche 28 septembre 2008StatutMembreDernière intervention 9 novembre 2008 9 nov. 2008 à 15:49
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!
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 9 nov. 2008 à 15:58
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 !!!
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 juin 2009 9 nov. 2008 à 20:21
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