Recherche double liste

Résolu/Fermé
Apollo - 3 juil. 2013 à 14:33
Mike-31
Messages postés
17957
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
- 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
56112
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
17 204
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
17957
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
4 947
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
17957
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 mai 2022
4 947
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