Recherche double liste

Résolu/Fermé
Apollo - 3 juil. 2013 à 14:33
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 - 3 juil. 2013 à 16:28
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 ?

5 réponses

RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
3 juil. 2013 à 15:57
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 mercredi 3 juillet 2013 Statut Membre Dernière intervention 14 août 2013
3 juil. 2013 à 16:23
C'est parfait merci énormément !!

J'ai fait quelques modifs (et les accents dans le code...)
0
Raymond PENTIER Messages postés 58834 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 janvier 2025 17 275
3 juil. 2013 à 15:44
Avec RECHERCHEV, c'est exclu : la recherche s'arrête à la première occurence ...
0
Mike-31 Messages postés 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 111
Modifié par Mike-31 le 3/07/2013 à 16:09
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 mercredi 3 juillet 2013 Statut Membre Dernière intervention 14 août 2013
3 juil. 2013 à 16:24
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 mercredi 3 juillet 2013 Statut Membre Dernière intervention 14 août 2013
3 juil. 2013 à 16:23
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 18354 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 1 janvier 2025 5 111
Modifié par Mike-31 le 3/07/2013 à 16:29
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