Validation de saisie avec un format complexe

Je dois saisir un code produit limité à 8 caractères dont les 3 premiers sont des lettres, puis 3 chiffres puis 2 lettres. Comment utiliser données/validation dans ce cas ?

Dans données/validation, choisis personnalisé et entre cette formule (adapte les ref à tes besoins)

=0<(NBCAR(A1)=8)*ESTTEXTE(STXT(A1;1;3))*ESTNUM(1*STXT(A1;4;3)) *ESTTEXTE(DROITE(A1;1))*ESTERR(1*STXT(A1;7;1))
(sur une seule ligne !)

Lorsqu'une règle de validation définie le type de données pouvant être saisies dans une cellule, et que cette règle est de type "Personnalisée", il faut que la formule utilisée comme critère de validation soit une formule logique. Cette formule renverra donc VRAI ou FAUX.
Pour qu'une saisie puisse être validée, il faut que la formule renvoie VRAI, sinon elle n'est pas acceptée, et c'est le message indiqué sur l'onglet Alerte d'erreur qui est alors affiché.
La difficulté ici est que tu n'as pas un critère, mais quatre, qui peuvent chacun être définis séparément comme suit:

  • le 1er: que le code soit limité à 8 caractères. la formule suivante le vérifie: =NBCAR(A1)=8 elle renverra donc VRAI ou FAUX
  • le 2e: que les trois premiers caractères soient des lettres la formule suivante le vérifie =ESTTEXTE(STXT(A1;1;3)) elle renverra donc VRAI ou FAUX
  • le 3e: que les trois caractères suivants soient des chiffres la formule suivante le vérifie =ESTNUM(1*STXT(A1;4;3)) elle renverra donc VRAI ou FAUX
  • le 4e: que les deux derniers caractères soient des lettres la formule suivante le vérifie =ESTTEXTE(DROITE(A1;2)) elle renverra donc VRAI ou FAUX

Pour que l'ensemble de ces critères soient vérifiés, et que notre règle de validation renvoie VRAI seulement si tous les critères sont VRAI, on aurait pu utiliser la fonction logique ET() de la façon suivante:

=ET((NBCAR(A1)=8);ESTTEXTE(STXT(A1;1;3));ESTNUM (1*STXT(A1;4;3));ESTTEXTE(DROITE(A1;2)))
Le résultat aurait été le même qu'avec la fonction que je t'ai proposée. On peut aussi (c'est ce que j'ai fait...) utiliser une autre méthode qui exploite l'équivalence VRAI=1 et FAUX=0 Imaginons que les 4 critères soient vérifiés, donc VRAI, la formule

=(NBCAR(A1)=8)*ESTTEXTE(STXT(A1;1;3))*ESTNUM (1*STXT(A1;4;3))*ESTTEXTE(DROITE(A1;2))
serait donc équivalente à: =VRAI*VRAI*VRAI*VRAI
donc équivalente à: =1*1*1*1 résultat =1 et 1, est bien supérieur à 0 (c'est ici qu'intervient le 0< en début de formule) (=0<1) la formule globale renvoie donc VRAI, la saisie est acceptée.
Si un au moins des arguments n'avait pas été vérifié, par ex, le 2e critère, on aurait eu: =VRAI*FAUX*VRAI*VRAI
soit: =1*0*1*1 soit: =0 la formule =0<0 aurait renvoyé FAUX, la saisie aurait été refusée, et le message d'Alerte d'erreur se serait affiché.
Il n'aurait pas été possible ici d'utiliser l'opérateur de concaténation &, qui aurait produit, pour la première formule une valeur d'erreur: =ET("VRAIVRAIVRAIVRAI") = #VALEUR!
et pour la seconde, une valeur "erronée", =0<"VRAIVRAIVRAIVRAI" qui renvoie systématiquement VRAI puisque les valeurs num sont toujours < aux valeurs alpha.

Auteur :

Mots clefs associés à cette page : , , , , , ,