Recherche double liste
Résolu
Apollo
-
Mike-31 Messages postés 19571 Statut Contributeur -
Mike-31 Messages postés 19571 Statut Contributeur -
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 ?
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:
- Recherche double liste
- Double ecran - Guide
- Liste déroulante excel - Guide
- Whatsapp double sim - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Double driver - Télécharger - Pilotes & Matériel
5 réponses
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
https://www.cjoint.com/c/CGdp5Gz65HJ
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
J'ai fait quelques modifs (et les accents dans le code...)