EXCEL: verifier le bon format d'une cellule.

Résolu
rapt -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous !

Je cherche à vérifier le bon format d'une cellule je m'expliques:

La cellule devrait ressembler a ça : Lettre = L , Chiffre = C


Cellule = LLLC-L(L)CCCCC la lettre entre parenthèse est optionnelle.


En gros je veux tester si il y a bien 3 lettre et un chiffre en début de cellule, juste apres vérifier qu'il y a bien un tiret, puis une lettre obligatoire avec une optionnel derriere. et 5 chiffre juste apres. Je précise que je veux pas pour le moment verifier le contenu de ces lettres ou chiffres. Quoique ^^.

Je ne sais pas si j'ai été assez claire? Je suis un novice en macro ou formule excel.

Merci d'avance pour ceux qui traineront sur mon post :)
A voir également:

5 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Bonjour

test avec une expression rationnelle (à vérifier) mais c'est peut-^tre un peu ardu si tu es novice. la fonction insensible à la casse, te renvoie VRAI ou FAUX
Function verifier_format(texto As String) As Boolean
     Dim reg As Object
     Dim verif As Object
     
     Set reg = CreateObject("vbscript.regexp")
     reg.Global = False
     'admet les majuscules
     reg.IgnoreCase = True
     
     reg.Pattern = "^[a-z]{3,}[0-9]+[-][a-z]{1,2}[0-9]{5,}"
     Set verif = reg.Execute(texto)
     verifier_format = (verif.Count = 1)
     
     Set verif = Nothing
     Set reg = Nothing
End Function


pour installer:
copier ce code
aller dans VBA par Alt+F11
insertion-module
coller le code
enregistrer au format "macro" si tu as XL>=2007

pour fonctionner
formules-fonction personnalisée

il faut autoriser les macros: tu dis ta version si tu ne sais pas faire

j'ai testé la fonction mais peut-^tre pas tout : a toi de jouer et dire si OK ou pas :o)

3
rapt
 
merci =)
0
rapt
 
Je viens de tester en rajoutant un chiffre a la fin ( donc ramenant le compte de chiffre a 6) et il ne voit pas d'erreur alors que j'aimerais qu'il me dise faux. peut t'on limiter le nb de chiffre a 5?
0
rapt
 
enfin de ramener le nb de caractere total a 12 max
0
rapt
 
J'ai trouvé :) il suffit de mettre un dollar : $ et d'enlever la virgule :p

reg.Pattern = "^[a-z]{3,}[0-9]+[-][a-z]{1,2}[0-9]{5}$"
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
Ok, merci de la précision! pas toujours faciles ces regexp !!! :à)

a bientôt
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour, bonjour michel,
Une autre approche ?
Sub Test() 
Dim T As Boolean 
    T = "LLLC-L(L)22223" Like "????[-]?[(]?[)]#####" 
    If T Then MsgBox ("Format conforme") 
End Sub

A+
Edit : pour que ce ne soit pas sensible à la case (accepté maju et minuscule) mettre en tête de module
    Option Compare Text

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
2
rapt
 
je vais tester vos deus solution je reviens vers vous, deja merci :)
0
rapt
 
euh je me demandes ou enregistrer au fromat macro. J'ai reussi a crée le module et copier/coller le code mais je viens de chercher comment enregistrer en macro et j'avoue que je seches ^^'
0

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

Posez votre question
rapt
 
Nan c'est bon j'ai trouvé merci beaucoup a vous deux, j'ai opté pour la première réponse qui est plus claire pour moi :) (j'ai quelque notion de programmation c)

MERCI BEAUCOUP
0