Monsieur Excel
Pour tout savoir faire sur Excel !

20 mars 2014

Validation sans formule matricielle

Comme nous l’avons vu dans l’article précédent, il y a un problème si une formule de validation de données est une formule matricielle : en effet, dans ce cas, la validation fonctionne bien au moment où elle est créée, mais elle ne fonctionne plus si le fichier est fermé, puis rouvert ensuite.

Quand elle ne fonctionne plus, on peut la réactiver en la re-définissant. Il suffit pour cela, la cellule étant active, de passer par la commande « Validations des données » de l’onglet « Données », puis de re-valider la validation par « OK ».

Pour éviter ces problèmes, une autre solution – quand elle est possible – consiste à utiliser pour la validation une formule qui n’est pas matricielle.

Dans le cas qui nous intéresse, c’est-à-dire pour ne valider que des contenus dans lesquels il n’y a aucun chiffre, on peut utiliser une formule courante, non matricielle, trouvée par Daniel Ferry.

La condition est la suivante :
=sierreur(recherche(1=1;0>--stxt(A1;ligne(decaler(A1;;;nbcar(A1)));1));1=1)

Reprenons l’exemple où « ABCD » est le contenu de A1.

LIGNE(DECALER(A1;;;NBCAR(A1))) donne {1;2;3;4}

STXT(A1;{1;2;3;4};1) donne {"A";"B";"C";"D"}

0>--{"A";"B";"C";"D"} donne {#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!}

Les deux 1=1 ne sont que des artifices pour obtenir VRAI en 3 caractères au lieu de 4… Cela me TRUE, comme aurait pu dire Coluche...

Remarque 1 – Eh oui ! Les développeurs sont une caste à part, ils trouvent un plaisir ineffable à gratter ne serait-ce qu'un caractère par rapport à ce que ferait le vulgum pecus.

RECHERCHE(vrai;{#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!}) donne #N/A

Et l’on obtient donc VRAI comme résultat.

Qu'arriverait-il s'il y avait un chiffre dans le texte saisi ?

Si l’on entrait « AB1D », avec donc la présence d’un chiffre...

0>--{"A";"B";"C";"D"} donnerait {#VALEUR!;#VALEUR!;1;#VALEUR!}

RECHERCHE(1=1;0>{#VALEUR!;#VALEUR!;1;#VALEUR!}) donnerait FAUX

Et =SIERREUR(FAUX;1=1) donnerait enfin FAUX car FAUX n’est pas une erreur !

Remarque 2 – Cet exemple est intéressant, car il nous permet de décortiquer comment fonctionne une formule certes puissante mais dont le moins que l'on puisse dire, c'est qu'elle n'est pas intuitive...