Recherche d'au moins une ss-chaîne de carac, parmi une liste de ss-chaine, dans cellule

Bonjour,

Je vais essayer d’être clair
J’ai un gros fichier de données avec x lignes et y colonnes.
Je joins au présent message le fichier Excel sur lequel je travaille

Certaines valeurs ou parties de valeurs présentes dans les cellules doivent m’indiquer si “OUI” ou “NON” je dois prendre en compte la ligne en question.
Exemple_01 : si dans la colonne “P” je lis la valeur “930003”, alors ma fonction de test doit m’afficher le résultat “NON” car je ne dois pas prendre en compte les lignes dont la colonne “P” contient cette valeur;
En bref, je dois actuellement tester les valeurs ou parties de valeurs de 9 colonnes.

Le premier hic est que pour 2 de ces colonnes (cf. colonnes “N” et “Y”), je dois tester non pas la valeur mais une partie de la valeur (ou sous-chaînes de caractères… je ne connais pas bien le nom usuel).
Exemple_02 : si dans la colonne “N” je lis la sous-chaîne “REFON” (comme dans “PROJET REFONTE ETABLISSEMENT”, par exemple), alors ma fonction de test doit m’afficher le résultat “NON” car je ne dois pas prendre en compte les lignes dont la colonne “N” contient cette sous-chaîne;
Pour se faire, j’avais trouver sur le net la fonction suivante me permettant de chercher un bout de texte dans une cellule :
=SI(ESTNUM(CHERCHE(“REFON”;[@[ref_client]]));“NON”;“OUI”)
Cette fonction marche parfaitement, mais ne répond pas pleinement au besoin car oblige à imbriquer de nombreuses fonctions “SI”, etc.

Ceci étant, ayant beaucoup de tests à faire, pour faciliter l’évolutivité de la formule (ajout suppression de valeurs et parties de valeurs à chercher) et pour éviter de faire trop d’empilements de la fonction “SI”, j’ai créé un tableau dans l’onglet “PARAM” contenant, par colonne à tester, une liste (facilement évolutive) de valeurs et parties de valeurs à chercher. De fait, chaque liste a été nommé (une par colonne à tester).
Exemple_03 : Dans l’onglet “PARAM”, la liste qui doit filtrer de la colonne P (qui s’appelle [@compte]) a été nommée “FILTRE_P”;
J’ai ainsi trouvé une formule me permettant de tester une cellule selon une liste de mots :
=SI(NB.SI(FILTRE_P;[@compte])>0; “NON”;“OUI”)
Cette fonction aussi marche parfaitement, mais ne répond pas pleinement au besoin car cette formule va chercher les termes exactes contenus dans la liste de filtre, alors que pour 2 des colonnes à tester (cf. colonnes “N” et “Y”), je cherche des parties de valeurs…

Et là je bloque
Je ne sais pas si je suis clair en disant que je cherche une formule qui teste tout ou partie d’une cellule en fonction d’une liste (nommée ou plage de données) contenant elle-même des valeurs à chercher ou partie de valeurs à chercher.

Y a-t-il une fusion à faire entre ces 2 formuleRECHERCHE.xlsx (2,0 Mo)
s ou existe-t-il une autre solution ?
Sachant que je ne sais pas faire de VBA ou autre macro, pouvez-vous m’aider ??

D’avance merci d’avoir lu,
Bravo à ceux qui auront compris mon problème,
Félicitation à celui qui résolvera ce problème.

1 J'aime

Bonjour

Voilà comment je procéderai pour simplifier ton fichier

  • Au lieu d’utiliser OUI / NON j’utiliserai des Booléens VRAI/FAUX. Ca va simplifier tes formules

    =SI(NB.SI(FILTRE_P;[@compte])>0; “NON”;“OUI”) devient =NB.SI(FILTRE_P;[@compte])<=0 )

et surtout tu peux facilement faire des opérations sur plusieurs booléens pour vérifier des conditions.

  • Plutôt que vérifier toutes les recherches de sous chaines dans la même cellule, je le ferai autant que possible dans ces colonnes séparées pour chaque test, avec un intitulé explicite

  • Pour savoir si une cellule contient au moins une des valeurs dans une liste, tu peux utiliser la formule
    =SOMMEPROD(--ESTNUM(CHERCHE(liste;DR5)))>0

Dans ton cas, cette liste serait PARAM!B13:B14, mais le mieux est de lui donner un nom explicite. Attention cette liste ne doit pas compter de case vide.

Est-ce que ça t’aide à y voir plus clair?

Malheureusement “non” ça ne m’aide pas franchement :slightly_frowning_face:
La formule “=NB.SI(FILTRE_P;[@compte])<=0 )” est intéressante mais la mienne fonctionne pareil donc pas trop d’intérêt immédiat même la tienne est sûrement plus efficace.
Mon réel souci comme je le disais est de chercher une liste de “bouts de textes” dans une colonne.

C’est pour ça que j’ai précisé:

As-tu essayé cette formule?

Merci
Pour l’instant, pressé par le temps, j’ai rentré manuellement une centaine de valeurs exactes dans mes filtres.
Pour ce qui est des valeurs incomplètes, je testerai dès que possible ta solution.
Cdt,

Bonjour,

Au bout d’un moment, les conditions vont bloquer par rapport au texte à rechercher
Une solution VBA serait possible, à condition de savoir si le texte à chercher est variable (REFONT - DEK - PROJ - etc)
si oui, un nouvel onglet avec un gestionnaire de noms qui prendrais en charge les noms déjà inscrit, + les nouveau (liste dynamique)
et une recherche sur les deux conditions pour afficher OUI ou NON