Tester la conformité d'une immatriculation

Résolu/Fermé
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017 - 25 avril 2014 à 15:23
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017 - 26 mai 2014 à 16:51
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.
A voir également:

19 réponses

alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
25 avril 2014 à 15:28
Salut, je pense que la fonction GAUCHE peut t'aider, je te conseille d'aller sur l'aide en ligne sur cette fonction, çà reste clair et concis.
https://support.microsoft.com/fr-fr/office/gauche-gaucheb-fonctions-9203d2d2-7960-479b-84c6-1ea52b99640c?ocmsassetid=hp010062568&correlationid=f78ce82c-097c-41de-8af7-6adf0140faa4&ui=fr-fr&rs=fr-fr&ad=fr
0
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017
25 avril 2014 à 15:33
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
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
25 avril 2014 à 15:52
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
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017
25 avril 2014 à 15:55
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
alexdu17200 Messages postés 1302 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 7 mars 2016 835
25 avril 2014 à 15:59
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
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
Modifié par Mike-31 le 25/04/2014 à 16:05
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
Mazzaropi Messages postés 1985 Date d'inscription lundi 16 août 2010 Statut Contributeur Dernière intervention 24 mai 2023 70
25 avril 2014 à 15:59
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

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

Posez votre question
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017
25 avril 2014 à 16:07
Merci Mazzaropi, cela fonctione, tu m'enlèves une épine du pied

Merci également aux autres pour l'aide
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 25/04/2014 à 16:43
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
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
Modifié par Mike-31 le 25/04/2014 à 18:11
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
25 avril 2014 à 19:13
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
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
25 avril 2014 à 19:58
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
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017
28 avril 2014 à 15:19
Encore un grand Merci à tous pour votre aide qui m'a été très précieuse.
0
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017
23 mai 2014 à 15:48
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
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
23 mai 2014 à 16:18
Re,

Explique ce que tu veux après on verra si c'est possible
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
24 mai 2014 à 08:55
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
24 mai 2014 à 10:52
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 24/05/2014 à 19:49
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
Raymond PENTIER Messages postés 58760 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 décembre 2024 17 253
25 mai 2014 à 04:21
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
25 mai 2014 à 09:44
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
Raymond PENTIER Messages postés 58760 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 décembre 2024 17 253
Modifié par Raymond PENTIER le 26/05/2014 à 05:43
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
26 mai 2014 à 13:58
Je n'aurais jamais imaginé ça...
Intégré dans une nouvelle version un peu plus complète (voir plus bas)
eric
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
25 mai 2014 à 09:10
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 25/05/2014 à 15:08
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
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017
25 mai 2014 à 09:35
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
25 mai 2014 à 14:47
3711 LLL 77

t'es sûr ?
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 25/05/2014 à 16:01
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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
26 mai 2014 à 13:59
Bonjour,

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

eric
0
Raymond PENTIER Messages postés 58760 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 décembre 2024 17 253
26 mai 2014 à 14:57
... 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
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
26 mai 2014 à 15:54
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
bod77 Messages postés 50 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 3 juillet 2017
26 mai 2014 à 16:51
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