Tester la conformité d'une immatriculation
Résolu
bod77
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
bod77 Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
bod77 Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- 1234ao
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Tester composant pc - Guide
- Tester disque dur - Télécharger - Informations & Diagnostic
- Tester compatibilité windows 11 - Guide
19 réponses
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
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
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
Aussi, je n'arrive pas à comprendre le raisonnement avec la fonction GAUCHE
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.
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.
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.
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.
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.
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.
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
"...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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci Mazzaropi, cela fonctione, tu m'enlèves une épine du pied
Merci également aux autres pour l'aide
Merci également aux autres pour l'aide
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
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
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.
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.
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
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
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
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
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.
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.
bonjour,
pour le fun avec fonctions personnalisées
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
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 :
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
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
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
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 !
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 !
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
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
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.
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.
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
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
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
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
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
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
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.
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.
Bonjour,
Nouvelle version un peu plus complète, ajout des DOM-TOM et des cyclomoteurs.
https://www.cjoint.com/?DEAn6eyLKZO
eric
Nouvelle version un peu plus complète, ajout des DOM-TOM et des cyclomoteurs.
https://www.cjoint.com/?DEAn6eyLKZO
eric
... 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) !
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
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