EXCEL: verifier le bon format d'une cellule.

Résolu/Fermé
rapt - 6 mars 2012 à 09:49
michel_m
Messages postés
16574
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 août 2022
- 6 mars 2012 à 16:26
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 :)

5 réponses

michel_m
Messages postés
16574
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 août 2022
3 277
6 mars 2012 à 11:19
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
merci =)
0
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
enfin de ramener le nb de caractere total a 12 max
0
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
16574
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 août 2022
3 277
6 mars 2012 à 16:26
Ok, merci de la précision! pas toujours faciles ces regexp !!! :à)

a bientôt
0
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 195
Modifié par lermite222 le 6/03/2012 à 11:38
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
je vais tester vos deus solution je reviens vers vous, deja merci :)
0
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
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