Validation de données par formule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

argonos

XLDnaute Nouveau
Bonjour à tous,
je suis nouveau sur le forum. Mon problème est le suivant:
je voudrais effectuer une validation de données sur une cellule pour qu'il reconnaisse une immatriculation de voiture.

Par exemple, la première série de caractères doit être des chiffres (nombre compris entre 2 et 4), la seconde doit être des lettres (nombre compris entre 1 et 3) et la dernière doit être des chiffres (nombre égal à 2)
ex: 5466 WNN 57, 21 PW 75 =>validées
45665 ADPR 45, 2 TR 03 => non validées

merci d'avance, en espérant que cela soit possible...
 
Re : Validation de données par formule

Bonsoir,

La question se résume à créer une validation de données sur base de six conditions, avec pour chacune une extraction préalable d'une chaine de caractères à tester, ce qui représente une formule très, très longue.

J'ai déjà rencontré un problème de longueur de formule dans une liste de validation, mais je ne me souviens plus du nombre de caractères autorisé.

Pour contourner cette limite il y a moyen de nommer des bouts de formules, ce qui a été fait sous la pièce jointe.
La validation est placée sur la cellule A9.

J'ai laissé en C1:F9 le cheminement pour aboutir à la formule en D9.

Si tu désires une explication complémentaite, n'hésites pas.

abcd
 

Pièces jointes

Re : Validation de données par formule

Bonjour argonos, salut abcd, bruno,

Un essai en une seule formule pour la validation sur A1:A... :

Code:
=ET(ESTNUM(GAUCHE(A1;TROUVE(" ";A1)-1)*1);(GAUCHE(A1;TROUVE(" ";A1)-1)
*1)>9;(GAUCHE(A1;TROUVE(" ";A1)-1)*1)<10000;SOMMEPROD((ESTNUM(STXT(STXT(A1;
TROUVE(" ";A1)+1;3);LIGNE(INDIRECT("1:3"));1)*1)*1))=0;ESTNUM(DROITE(A1;2)*1))

A tester quand même

@+
 
Re : Validation de données par formule

Bonsoir,

BrunoM45,
Il y a effectivement quelque chose de bizarre, pourtant la formule =ET(chaine11;chaine21;chaine31) renvoie VRAI, donc il ne devrait pas il y avoir de message d'erreur puisque 1745 TF 45 répond aux conditions.
J'ai testé la même valeur avec une MFC et là c'est bon.
Je regarde cela demain.

Tibo,
J'ai testé ta formule, mais je ne parviens pas à obtenir le résultat attendu.

abcd
 
Re : Validation de données par formule

Re,

C'est tout bête 😛

Dans -> Données -> Validation
il ne faut pas mettre : ET(chaine11;chaine21;chaine31)
mais : =ET(chaine11;chaine21;chaine31)

Voilà, ça marche super bien après 😉

A+
 
Re : Validation de données par formule

Bonjour,

Effectivement, problème très intéressant.

J'ai finalement recouru aux formules nommées.

Une solution avec contrôle du numéro, des lettres (seules les majuscules sont acceptées) et du département.

Cela dit, ca ne devrait bientôt plus servir à grand chose avec les futures plaques.

Voir le fichier joint

@+
 

Pièces jointes

Re : Validation de données par formule

Bonjour à tous,

Je me joins au fil avec une solution vba.

Il suffit d'entrer dans une cellule la fonction "=estimmat(cellule)"

J'ai utiliser 2 fonctions dans un module dont une qui en fonction de la lettre mini et maxi et la longueur mini et maxi données, me dit si c'est valide.

Cordialement
 

Pièces jointes

Re : Validation de données par formule

Merci à tous pour ces solutions.
C'est la qu'on voit que ça relève d'un certain niveau. J'ai pris ta solution tibo qui a l'air de convenir (je n'ai pas trop compris en revanche le "=estimmat(cellule)", donc pas testé).

Je voudrais juste savoir un dernier truc. Je voudrais mettre automatiquement la case en majuscule donc je suppose qu'il vaut mieux utiliser une macro. Mais comme je ne connais pas le basic. Je ne sais pas comment e tquoi rajouter dans VBA. J'ai trouvé ce code sur google, que dois-je en faire ? (ma case est I16 uniquement)

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("I16")) Is Nothing Then Exit Sub
Target.Value = UCase(CStr(Target.Value))
End Sub

Merci !

PS : 321 aze 211 => validée :-(
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Retour