Tester la conformité d'une immatriculation

Résolu
bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite vérifier dans des cellules Excel la conformité de plaques d'immatriculation sous le format suivant "AA-123-CC".

J'aimerai que si la cellule a ce bon format avec les 2 "-" alors il ressort la valeur 1 sinon la valeur 0.

Merci pour votre aide

Cordialement.

19 réponses

  1. bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
     
    Complément d'information, la Numéro de plaque m'est donné par un prestaire (une grosse liste de plusieurs centaines de plaques) et je veux être sur qu'il n'y a pas un loupé comme une lettre manquantes ou un chiffre.
    Aussi, je n'arrive pas à comprendre le raisonnement avec la fonction GAUCHE
    0
    1. alexdu17200 Messages postés 1579 Statut Membre 841
       
      Je l'utilise pas souvent, mais je viens de la tester sous Excel, alors:
      J'ai ma case A1 qui contient "AA-123-CC", je dis à ma cellule d'à côté, =GAUCHE(A1;2), elle me retourne "AA" soit les 2 premiers caractères de la case A1.
      Et la fonction GAUCHEB fonctionne pareil sauf qu'un seul caractère équivaut à 2 donc si tu mettais GAUCHEB(A1;2) t'aurais "AA-1", celle-ci j'en vois pas trop l'intérêt.
      0
    2. bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
       
      Ce que je souhaite par exemple c'est que si la personne saisie la plaque :
      AA-12-CC : Faux
      A-123-f : faux
      AA-123-CC : VRAI
      0
    3. alexdu17200 Messages postés 1579 Statut Membre 841
       
      Tu as la fonction NBCAR() qui te renvoie le nombre de caractère, ensuite du fait un contrôle sur ce nb
      MAJUSCULE() pour passer toute ta cellule en MAJ.

      Si j'ai bien compris, ta plaque doit être selon le format suivant "XX-111-XX" où X est une lettre et 1 un chiffre, tu peux donc vérifier que =CHERCHE("-";A1) te renvoie 3 (la position de "-" dans la chaine) et tu vérifie ensuite que =CHERCHE("-";A1;(B4+1)) où B4 est la position du premier caractère "-" soit à 7.
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    Essaye comme cela pour tester la cellule A1, la formule est à incrémenter vers le bas sur la hauteur de ta liste de donnée

    = SI(SOMME(NBCAR(A1)-NBCAR(SUBSTITUE(A1;"-";"")))/NBCAR("-")=2;1;0)

    Tu peux également forcer la saisie, par exemple tu mets la plage A1:A100 en surbrillance, puis Données/Validation de données/sélectionne Personnalisé dans Autoriser et colle cette formule dans Formule

    = SOMME(NBCAR(A15)-NBCAR(SUBSTITUE(A15;"-";"")))/NBCAR("-")=2

    ensuite onglet Alerte d'erreur tu peux saisir un titre et un message comme la saisie n'est pas conforme etc ...

    si cette solution t'intéresse je regarderai un code pour imposer le tiret après deux chiffres et avant les deux derniers

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  3. Mazzaropi Messages postés 1983 Date d'inscription   Statut Contributeur Dernière intervention   72
     
    bod77, Bonjour.

    "...J'aimerai que si la cellule a ce bon format avec les 2 "-" alors il ressort la valeur 1 sinon la valeur 0. ..."

    A1 = AA-123-CC

    Essayez d'utiliser cette formule.
    B1 --> =SI(ET(STXT(A1;3;1)="-";STXT(A1;7;1)="-");1;0)

    Était-ce ce que vous vouliez?
    J'espère que j'ai aidé.
    --
    Belo Horizonte, Brasil.
    Marcílio Lobão
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci Mazzaropi, cela fonctione, tu m'enlèves une épine du pied

    Merci également aux autres pour l'aide
    0
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous

    Et si on veut tester tous les caractères de l'immatriculation (mais ne tien pas compte des lettres interdites)
    =SI(NBCAR(A2)=9;SI(ET(ET(CODE(STXT(A2;1;1))>=65;CODE(STXT(A2;1;1))<=90);ET(CODE(STXT(A2;2;1))>=65;CODE(STXT(A2;2;1))<=90);STXT(A2;3;1)="-";ET(CODE(STXT(A2;4;1))>=48;CODE(STXT(A2;4;1))<=57);ET(CODE(STXT(A2;5;1))>=48;CODE(STXT(A2;5;1))<=57)*ET(CODE(STXT(A2;6;1))>=48;CODE(STXT(A2;6;1))<=57);STXT(A2;7;1)="-";ET(CODE(STXT(A2;8;1))>=65;CODE(STXT(A2;8;1))<=90);ET(CODE(STXT(A2;9;1))>=65;CODE(STXT(A2;9;1))<=90));1;0);0)

    Cdlmnt
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    je reviens à la charge avec ma proposition de liste de validation, dans ma proposition précédente, si on remplace ma formule par cette dernière, il sera impossible de ne pas respecter la saisie deux lettres, le tiret, nombre aléatoire, tiret et deux lettres pour terminer

    =ET(TROUVE("-";A18)=3;NBCAR(A18)-(TROUVE("-";A18;4)-1)=3)

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Salut Mike

    Avec ta dernière proposition ceci est accepté
    $p-123-!m ou 12-123-12
    En plus je crois que certaines lettres (O, I, U) ne sont pas valides dans un N° immatriculation

    Cdlmnt
    0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Merci ccm, oui c'est tout à fait cela, mais ma formule se base sur deux caractères et un tiret au début, trois caractères minimum au centre et un tiret et deux caractères pour terminer
    si la saisie n'est pas conforme message d'erreur personnalisé

    ci joint fichier exemple pour ceux qui suivent la discussion

    https://www.cjoint.com/?DDzt5hae6UY
    0
  10. bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
     
    Encore un grand Merci à tous pour votre aide qui m'a été très précieuse.
    0
  11. bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Je dois maintenant réaliser un test Excel sur les anciennes plaques d'immatriculation afin de savoir si elles sont valides lors de la saisie.

    Pouvez-vous m'aider de nouveau ?

    Merci par avance.
    0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Explique ce que tu veux après on verra si c'est possible
    0
  13. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    pour le fun avec fonctions personnalisées


    Option Explicit
    '-------
    ''anciennes plaques
    Function Verifier_oldplaque(Plaque As String) As Boolean
    Dim Separe, Nbre_lettres As Byte
    Dim Reg As Object
    Dim Verif As Object

    Separe = Split(Plaque)
    Set Reg = CreateObject("vbscript.regexp")
    With Reg
    If Len(Separe(1)) < 3 Then
    .Pattern = "^[0-9]{1,4}[\s][A-Z]{1,2}[\s][0-9]{1,2}$"
    Else
    .Pattern = "^[0-9]{1,3}[\s][A-Z]{1,3}[\s][0-9]{1,2}$"
    End If
    Set Verif = .Execute(Plaque)
    End With
    Verifier_oldplaque = (Verif.Count = 1)
    End Function
    '------------------------------------
    'Nouvelles plaques
    Function Verifier_newplaque(Plaque As String) As Boolean
    Dim Reg As Object
    Dim Verif As Object

    Set Reg = CreateObject("vbscript.regexp")
    With Reg
    .Pattern = "^[A-Z]{2}[-][0-9]{3}[-][A-Z]{2}$"
    Set Verif = .Execute(Plaque)
    End With
    Verifier_newplaque = (Verif.Count = 1)
    End Function

    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Re,
      Par MP, Eriic vient de me signaler que les I,O,V étaient interdits dans les plaques ainsi que "WW" et "SS"
      donc mes jouets proposés ce matin ne sont pas valables.

      désolé
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Pas non valables, mais on peut affiner le résultat ;-)
      D'ailleurs je me suis trompé c'est le U à la place du V qui n'est pas utilisé.
      Voilà où j'en suis :
      Function plaqueOK(Plaque As String) As Boolean
          Dim Separe, Nbre_lettres As Byte
          Dim Reg As Object
          Dim Verif As Object
      
          Set Reg = CreateObject("vbscript.regexp")
          With Reg
              If InStr(Plaque, "-") > 0 Then
                  ' nouvelle plaque
                  ' 2 lettres-3 chiffres-2lettres
                  .Pattern = "^[A-HJ-NP-TV-Z]{2}[-][0-9]{3}[-][A-HJ-NP-TV-Z]{2}$"
              Else
                  ' ancienne Plaque
                  Separe = Split(Plaque)
                  If Len(Separe(1)) < 3 Then
                      ' 1 à 4 chiffres, 1 ou 2 lettres, 2 chiffres
                      .Pattern = "^[0-9]{1,4}[\s][A-HJ-NP-TV-Z]{1,2}[\s]((0[1-9])|([1-8][0-9])|(9[0-5])|(2[AB]))$"
                  Else
                      .Pattern = "^[0-9]{1,3}[\s][A-HJ-NP-TV-Z]{3}[\s]((0[1-9])|([1-8][0-9])|(9[0-5])|(2[AB]))$"
                  End If
              End If
              Set Verif = .Execute(Plaque)
          End With
          plaqueOK = (Verif.Count = 1)
      End Function

      Contrôle anciennes et nouvelles plaques, lettres valides et départements de 01 à 95 (avec 20, 2A, 2B acceptés).

      Je précise que j'ai fait ça à partir du travail de michel car je découvre les regex. Je suis loin de pouvoir garantir une correction à une éventuelle anomalie constatée.
      https://www.cjoint.com/?DEytTaOcdtW

      eric
      0
  14. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Pour être exhaustifs et éviter d'être accusés d'ostracisme, veuillez noter que les anciennes plaques dans les départements d'Outre-Mer se terminent par
    3 chiffres
    : 971 = la Guadeloupe, 972 = la Martinique, 973 = la Guyane, 974 = la Réunion.
    Vérifiez aussi quelle est la réglementation pour Mayotte, la Nouvelle-Calédonie, Tahiti, Wallis et Futuna, Saint-Pierre et Miquelon, etc.

    Merci pour nous !
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour raymond,

      Et combien de chiffres au début, et de lettres possibles ?
      Je m'étais renseigné. Si tu sais ce que veux dire la partie soulignée :
      Les départements et collectivités 971 à 978 utilisent un système identique à celui utilisé en métropole avec un maximum de neuf caractères, les deux premiers chiffres du numéro de département étant de plus en plus fréquemment superposés pour ramener le nombre maximum de caractères à huit.
      Il faut comprendre quoi ? 97 ?
      En plus ils parlent de 9 caractères maxi alors qu'en métropole c'est 8. J'ai trouvé ça bizarre... Trop flou tout ça.
      Le problème c'est que si les règles ne sont pas claires et exhaustives, plein de plaques valides seront annoncées fausses.
      Pour les autres iles, trop de cas particuliers.

      eric
      0
    2. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
       
      https://www.cjoint.com/?DEAfNIpQQyP

      C'était effectivement ma façon de signaler que ce "test de conformité" était loin de couvrir tous les cas de figure. Comme le correcteur orthographique et grammatical de Word, c'est une aide intéressante, mais ne couvrant pas 100% des situations.

      Amicalement.
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Je n'aurais jamais imaginé ça...
      Intégré dans une nouvelle version un peu plus complète (voir plus bas)
      eric
      0
  15. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    BONJOUR ?


    Eric,
    Concernant les DOM, peut-^tre ajouter un "OU" avec 97[1_8]
    Pour les TOM, le système est différent : généralement des chiffres suivis d'1ou 2 lettres (P pour Polynésie)

    mais la numérotation des anciennes plaques est en fait compliquée avec p+q+n +1 exceptions et quelques niches fiscales ;o)
    la source:
    https://fr.wikipedia.org/wiki/Plaque_d%27immatriculation_fran%C3%A7aise

    il faudrait donc savoir où le demandeur s désire limiter son contrôle

    Bon dimanche à tous
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Salut michel,

      D'accord, j'attend que ça décante un peu avant d'ajouter. Pour les TOM on fera comme pour les mobylettes : on tombera dans l'ostracisme.
      Et si on veut être exhaustif j'ai trouvé un site intéressant : http://plaque.free.fr/f_f.html :-)
      eric
      0
  16. bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour

    Le test doit donc se faire sur Excel mais avec une formule SI et non pas par une macro (dsl) Sur la base des anciennes plaques d'immatriculation.
    Je dois vérifier que le format soit bien =>
    exemple : 3711 LL 77 ou 3711 LLL 77 ou 371 LL 974 par exemple. Si ok, cela ressort la valeur 1 sinon 0.
    aussi si 371 L 99 ressort faux par exemple.

    J'espère que j'ai été assez clair. Merci de votre aide encore
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      3711 LLL 77

      t'es sûr ?
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Et pourquoi pas par macro ? Une allergie ?
      4 exemple dont 1 faux ne suffisent pas, il faut la liste exhaustive des cas valides.

      Et avec des si() ça risque de te faire une formule imbuvable et impossible à modifier en cas de besoin.

      eric

      edit: par formule tu as eu des propositions par ccm81 et mike. A toi de les compléter sur le même principe.
      0
  17. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Nouvelle version un peu plus complète, ajout des DOM-TOM et des cyclomoteurs.
    https://www.cjoint.com/?DEAn6eyLKZO

    eric
    0
  18. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    ... et volontairement je n'ai pas évoqué les véhicules des Services de l'Etat, les véhicules militaires, les voitures avec plaque diplomatique (ambassades), les plaques provisoires (en transit temporaire) !
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Tu as bien fait, ça n'y sera jamais je pense, à moins d'un besoin bien spécifique.
      Au passage les CD et autres TU et TT sont du ressort de la préfecture pour l'attribution et ne nécessitent pas de traitement particulier pour le contrôle.
      eric
      0
  19. bod77 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention  
     
    Mon chef ne souhaite pas de macro et ça m'arrange car je n'en ai jamais fait. De plus, on doit transmettre le fichier et les destinataires n'ont pas les mêmes version d'Excel.
    De mon côté, je vais me borner aux anciennes plaques, les cylcos ne nous intéressent pas.

    Format retenu =>
    1234 AB 01
    123 ABC 01
    124 ABC 2A
    12 AB 01
    1 A 01
    1234 AB 971
    123 ABC 972

    123 ABC 00
    123-ABC-01
    123 ABC 96
    123 AB 1
    1234 ABC 01
    123 AI 01
    1234 AO 01
    1234 UB 01
    1234 ABC 01
    AB 123 AB
    123 AB 979
    1234 ABC 971
    0