Recherche double liste

Résolu
Apollo -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous !

Soit un tableau comme ceci :

A B
toto momo
toto mimi
toto mumu
toto mama
tutu mama
tata mimi
tata mumu

Ce que j'aimerais obtenir c'est quelque chose de la forme :

C D
toto momo;mimi;mumu;mama
tutu mama
tata mimi;mumu

Soit "en clair": chercher sur la liste des mots de la colonne C (ex: toto) ceux qui apparaissent dans la colonne A (ex: toto est bien au moins 1 fois dans la colonne A), et agréger dans la colonne D les termes (pour le cas où il y a plusieurs fois le même terme dans A) qui apparaissent dans la colonne B sur la même ligne que le mot trouvé (donc ici, écrire en D1 "momo;mimi;mumu;mama", en face de C1="toto").

Avant le vba (oui je sais...) j'aimerais tenter avec RECHERCHEV ou le combo EQUIV+INDEX.
La formule s'écrivant dans les cellules de la colonne D.

Des idées ?
A voir également:

5 réponses

RachelMartel Messages postés 435 Date d'inscription   Statut Membre Dernière intervention   25
 
J'avais fait quelque chose du genre l'autre jour pour une autre personne. Bon, il y a un petit code VBA, mais je te l'envoie quand même :

https://www.cjoint.com/c/CGdp5Gz65HJ
1
Apollo25 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
C'est parfait merci énormément !!

J'ai fait quelques modifs (et les accents dans le code...)
0
Raymond PENTIER Messages postés 58988 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
Avec RECHERCHEV, c'est exclu : la recherche s'arrête à la première occurence ...
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Bonjour,

Pas tout à fait dans ta présentation du moins pour commencer

Il est possible d'isoler les valeurs de la deuxième colonne avec une formule matricielle qu'il faudra confirmer en clicant en même temps sur les trois touches du clavier Ctrl, Shift et Entrée et si tu fais correctement la formule se placera entre {}

exemple les mots sont en colonne A et les seconds en colonne B le mot critère exemple toto en G1

=INDEX($B$1:$B$20;PETITE.VALEUR(SI($A$1:$A$20=$G$1;LIGNE(INDIRECT("1:"&LIGNES($A$1:$A$20))));LIGNES($1:1)))

une fois confirmée en matricielle, incrémenter vers le bas

mais je te conseille de nommer tes plages exemple $A$1:$A$20 nommée col_A
et $B$1:$B$20 nommée col_B
la formule devient

=INDEX(col_B;PETITE.VALEUR(SI(col_A=$G$1;LIGNE(INDIRECT("1:"&LIGNES(col_A))));LIGNES($1:1)))

dans le même genre avec gestion d'erreur

=SI(LIGNES($1:1)<=NB.SI(col_A;$G$1);INDEX(col_B;PETITE.VALEUR(SI(col_A=$G$1;LIGNE(INDIRECT("1:"&LIGNES(col_A))));LIGNES($1:1)));"")

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Apollo25 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Voilà ! Je ne me souvenais plus de la commande Ctrl+SHift+Enter

Je teste ça. Merci !
0
Apollo25 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Parfait à vous deux !

Merci, merci et encore MERCI !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Pour confirmer une matricielle, soit tu fais un double clic dans la cellule qui contient la formule,
soit tu clic sur la cellule et clic sur la formule dans la barre des formules

et ensuite, dans les deux cas tu clic en même temps sur les 3 touches Ctrl, Shift (touche majuscule) et Entrée

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0