EXCEL: verifier le bon format d'une cellule.

Résolu
rapt -  
michel_m Messages postés 18903 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 :)

5 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. rapt
       
      merci =)
      0
    2. 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
    3. rapt
       
      enfin de ramener le nb de caractere total a 12 max
      0
    4. 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
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Ok, merci de la précision! pas toujours faciles ces regexp !!! :à)

      a bientôt
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  3. rapt
     
    je vais tester vos deus solution je reviens vers vous, deja merci :)
    0
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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