Recherche chaine de caractères liste

Bonjour,

Je cherche un petit peu d'aide pour résoudre un problème sur lequel je n'ai pas la solution.

Je dispose de deux listes :

  • la première reprend des éléments de manière détaillée ;
  • la seconde est simplifiée et me permet de définir des catégories.

Liste n°1 en A1-A6 (feuille 1) :

Documentation affaire2
Plan appartement1
Plan Montage affaire3
Plan Montage composant en 2 parties
Rapport Finance affaire1
Rapport Finance affaire en 2 parties 2

Liste n°2 en A1-A4 (feuille 2) :

Documentation
Plan
Plan Montage
Rapport Finance

Je cherche la formule qui me permettrait d'associer les éléments de la liste n°1 aux éléments de la liste n°2 pour donner le résultat :

Documentation affaire2Documentation
Plan appartement1Plan
Plan Montage affaire3Plan Montage
Plan Montage composant en 2 partiesPlan Montage
Rapport Finance affaire1Rapport Finance
Rapport Finance affaire en 2 parties 2Rapport Finance

Dans la mesure où j'ai beaucoup d'éléments, j'aimerais éviter de passer par un tableau intermédiaire qui consisterait à chercher la liste n°2 dans la liste n°1.

Merci

Bonjour,

Il faut utiliser cette formule à côté de la liste1 qui ici commence en A2 :

=INDEX(Liste2;EQUIV(1;NB.SI($B2;Liste2&"*");0))

La formule est matricielle, il faut valider par ctrl + shift + entrée.

Cdlt,

Merci.

Pour l'instant ça fonctionne sous réserve d'organiser la liste n°2 dans un ordre particulier.
Par exemple avec les listes que j'ai présenté "Plan Montage affaire3" se verra affecter "Plan" et non "Plan Montage".
Je suppose qu'en comptant le nombre d'éléments qui valident le NB.SI() et en créant un décalage ça pourrait résoudre ce point.
Je dois vérifier mais en l'état je pense que ça pourrait fonctionner sur mon fichier réel, merci.

Bonjour le fil

Pour info, en général on fait l'inverse

Liste 1 = Type de document

Liste 2 = affinage du document enregistré

Je dis ça, je ne dis rien

Bonjour @ tous,

en Feuil2 - B1 :

=SIERREUR(INDEX(Feuil1!A$1:A$6;EQUIV(VRAI;ESTNUM(CHERCHE(A1;Feuil1!A$1:A$6));0));"")

@ valider par Ctrl+Maj+Entrée

@ tirer vers le bas

Cordialement

Bonjour à tous,

Voici un nouvel essai avec une liste triée de A à Z (qui commence en ligne 2) :

=INDEX(Liste;MAX(NB.SI(A1;Liste&"*")*(LIGNE(Liste)-1)))

en matriciel encore une fois.

Cdlt,

Bonjour,

Merci pour vos propositions.

@BrunoM45, je suis d'accord, on devrait plutôt faire dans l'autre sens.
Ici, j'aimerais analyser des données par type de document mais je n'ai que la liste des intitulés, il n'y a pas de catégorie.
D'où ce fonctionnement inversé.

@R@chid : je ne suis pas sûr de comprendre ce que vous faites. La Feuil2 est réservée à la liste des catégories.
C'est au niveau de la Feuil1 que je cherche à associer nom de document et catégorie.

@3GB : j'ai testé en triant une liste après l'autre, ne sachant pas de laquelle vous parlez mais ça n'a pas fonctionné.
Par contre si j'ajoute en Feuil2 / colonne B un NBCAR() et en triant la liste n°2 en ordre décroissant de nombre de caractères ça "force" l'ordre d'apparition dans le NB.SI() et ça fonctionne.
Dans la mesure où c'est juste pour faire l'association documents/catégories une seule fois je devrais m'en sortir avec ça.

Re,

Ici, c'est la liste2 qu'on cherche à obtenir à partir de A1 qui est la première valeur de la liste 1. On saisit donc en B1, à côté de la Liste1 la formule :

=INDEX(Liste2;MAX(NB.SI(A1;Liste2&"*")*(LIGNE(Liste2)-LIGNE(Liste2[#En-têtes]))))

Mais il faut bien valider avec ctrl + shift + entrée, sinon ça renvoie de mauvais résultats ou des erreurs.

20oupssss.xlsx (10.52 Ko)

Cdlt,

Bonjour @ tous,

@R@chid : je ne suis pas sûr de comprendre ce que vous faites. La Feuil2 est réservée à la liste des catégories.
C'est au niveau de la Feuil1 que je cherche à associer nom de document et catégorie.

Désolé pour cette erreur qui provient du manque du fichier exemple.

En Feuil 1 / B1 :

=SIERREUR(INDEX(Feuil2!A$1:A$4;GRANDE.VALEUR(ESTNUM(CHERCHE(Feuil2!A$1:A$4;A1))*LIGNE(Feuil2!A$1:A$4);1));"")

@ valider par Ctrl+Maj+Entrée

@ tirer vers le bas

Cordialement

Re,

Ici, c'est la liste2 qu'on cherche à obtenir à partir de A1 qui est la première valeur de la liste 1. On saisit donc en B1, à côté de la Liste1 la formule :

=INDEX(Liste2;MAX(NB.SI(A1;Liste2&"*")*(LIGNE(Liste2)-LIGNE(Liste2[#En-têtes]))))

Mais il faut bien valider avec ctrl + shift + entrée, sinon ça renvoie de mauvais résultats ou des erreurs.

20oupssss.xlsx (10.52 Ko)

Cdlt,

Bravo.

j'ai répondu avant de lire ta réponse, j'ai pas recopier sur toi

Bonjour R@chid,

Ne t'inquiète pas, je n'y ai même pas pensé .

A bientôt,

Merci à vous deux. J'ai testé chacune des solutions et ça fonctionne correctement.
Rechercher des sujets similaires à "recherche chaine caracteres liste"