Recherche multiples de caine de caractère et formule matricielle

Bonjour;

Je cherche à faire ressortir des critères d'une zone de caractères de longueur et de contenu variable.

J'ai pour ça une table de critères et j'ai pensé aux formules matricielles pour faire une recherche "multiple" et me renvoyer le critère trouvé.

Par exemple si la chaine "crit1" se trouve dans la cellule A2, je veux que "crit1" apparaisse dans ma cellule.

{=SI(NB.SI(A2;"*"&$H$2:$H$4&"*");$H$2:$H$4)}

(les zones de caractères sont en colonne A, les critères en colonne H)

Seulement, cela fonctionne uniquement pour le premier critère de la table..

Je suis un bloqué et j'ai assez peu d'expérience avec les formules matricielles.

Merci d'avance pour vos lumières

17recherchecrit.xlsx (9.25 Ko)

PS: ma table de critères est assez longue donc je préférerai éviter de rechercher les critères 1 à 1

Bonjour

Formule en E2 (valdation normale)

=STXT(A2;CHERCHE("crit";A2);5)

Cordialement

bonjour,

Merci pour la réponse par contre cela ne répond pas exactement à ma problématique : mes critères réels dans mon fichiers sont tous différents.

Je vous joins un autre fichier plus proche de la réalité

Merci d'avance

cordialement

Bonjour,

il y a sans doute plus simple :

=INDEX($H:$H;(MAX(ESTTEXTE(SI(NB.SI(A2;"*"&$H$2:$H$4&"*");$H$2:$H$4))*LIGNE($1:$3)))+1)

Matricielle

En supposant qu'il y a toujhours un critère de trouvé. Sinon il faudra compléter.

eric

Super Merci Eric ça fonctionne très bien ! J'ai pu l'adapter sur mon fichier sans problème

j'ai contourné le problème de la valeur inconnue en mettant "Valeur inconnue" dans la première ligne du tableau

Pour bien comprendre, à quoi sert la partie "*LIGNE($1:$3)" ?

Merci

Bonjour,

à générer les n° de ligne dans ta liste de critères.

ESTTEXTE(SI(NB.SI(A2;"*"&$H$2:$H$4&"*");$H$2:$H$4)) te retourne une matrice de VRAI/FAUX selon si ton critère est apparu ou pas => {FAUX;VRAI;FAUX}

Si tu la multiplies par la matrice des n° de ligne, il ne te reste que les ° qui conviennent :

{FAUX;VRAI;FAUX}*LIGNE($1:$3)

=> {FAUX;VRAI;FAUX}*{1;2;3}

=> {0;2;0}

plus qu'à prendre le Max() de cette matrice pour avoir le n° de l'élément de la liste à retourner, et donc +1 pour avoir le n° de ligne.

Si ta liste est amenée à changer en taille, il vaut mieux rendre dynamique LIGNE($1:$3) avec :

LIGNE(INDIRECT("$1:$"&NBVAL($H:$H)-1))

S'adaptera si ta liste passe à 2 ou 15 élements.

eric

Rechercher des sujets similaires à "recherche multiples caine caractere formule matricielle"