Compiler plusieurs index dans une même cellule sur Excel 365
bigoudiii Messages postés 274 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous,
Cela fait un moment que je cherche sur ce forum une réponse à mon questionnement mais sans succès. Je vous pose donc la question en direct.
J'utilise Excel 365 en français.
Sur une feuille noté "Liste" j'ai : en C3 une liste déroulante, en D3 une liste déroulante en cascade découlant de celle en C3, et en E3 je souhaite qu'une donnée apparaisse automatiquement en fonction de la donnée qui apparaît en D3.
J'utilise donc cette formule : =INDEX(Méta!$M$3:$M$10; EQUIV(D3; Méta!$D$3:$D$10; 0))
Mes listes déroulante sont sur une autre feuille nommée "Méta".
Cette formule fonctionne correctement si en C3 je sélectionne le premier choix de la liste déroulante puis en D3 n'importe quel choix.
Par contre, pour que ça puisse fonctionner pour les autre choix de la liste déroulante de C3 il faudrait que je puisse compiler dans la formule en D3 plusieurs index.
Jai essayé d'ajouter des index les uns à la suite des autres, en séparant avec de ; ou avec des "", des () , des "& &" mais jusqu'ici rien ne fonctionne.
Savez-vous si c'est possible et comment faire ?
Faut-il passer obligatoirement par du code VBA ?
Windows / Chrome 113.0.0.0
- Compiler plusieurs index dans une même cellule sur Excel 365
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Proteger cellule excel - Guide
10 réponses
Bonjjour
Non c'est surement possible par formule, tout dépend comment se présentent tes index
Fournis un exemple de ton fichier avec ses différents index en expliquant à partir d'exemples précis ce que tu veux obtenir
Fichier à poster sur cjoint.com, daire créer un lien, le copier et revenir le coller iciDans l'attente
Cdlmnt
Vai
Bonjour à tous,
"Faut-il passer obligatoirement par du code VBA ?"
- - - Un fichier EXCEL (test ou non), complété par des explications exhaustives et des exemples remplis à la main, mis sur https://www.cjoint.com/ , ainsi que la version d'Excel, permettrait aux intervenants de répondre plus précisément à ta question.
Crdmt
tout depend de comment tu as goupillé tes "listes".
Crdlmt
Merci pour la rapidité des réponses.
Voici le fichier en question : https://www.cjoint.com/c/MFcogt12vTT
En espérant que le tout soit compréhensible.
Hello,
Une proposition à tester, pour Excel 365 uniquement, en E3 et à recopier :
=SIERREUR(INDEX(DANSCOL(Méta!$M$3:$T$10;;1);EQUIV(D3;DANSCOL(Méta!$D$3:$K$10;;1)));"")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionAutre possibilité à mettre en E3 :
=DECALER(Méta!$L$2;DROITE(D3;1);EQUIV(Liste!C3;Méta!$D$2:$K$2;0))
puis étirer la formule
Je n'avais pas vu la réponse.
Ça fonctionne également. Seul petit bémol, pas bien grave, quand je sélectionne "Option_4" (par exemple) dans la colonne "C", la référence change déjà dans la colonne "E" avant que je fasse une sélection dans la colonne "D".
Mais je retiens tout de même cette option car si l'autre option ne fonctionne plus quand j'ouvre le document sur une autre version d'Excel que 365, elle me sera sûrement bien utile.
Merci beaucoup !
Super !
Merci beaucoup, ça fonctionne parfaitement.
Plusieurs questions :
- Comment fonctionne cette formule ?
- Si j'ouvre ce fichier avec une autre version d'Excel est-ce que ça va toujours fonctionner ?
- Comment faire si maintenant les tableaux à indexer ne sont pas collés sur la même feuille mais séparés sur des feuilles différentes comme dans l'exemple ci-dessous ?
https://www.cjoint.com/c/MFcpmaQtIdT
RHello,
1- La fonction DANSCOL empile toutes les colonnes du tableau les unes sous les autres. C'est ainsi très facile de faire un EQUIV. Elle ne fonctionne que pour Excel 365 !
2 - Si tes tableaux sont séparés sur des feuilles différentes; c'est autre chose. Avec tes noms déjà définis Option_x et Référence_x, une proposition en E3 :
=SIERREUR(INDEX(INDIRECT("Référence_"&DROITE(C3));EQUIV(D3;INDIRECT("Option_"&DROITE(C3));0));"")
à condition que tes différentes options se terminent bien par 1, 2, 3 etc
Bonjour,
Effectivement, tout ça fonctionne très bien.
Encore merci.
Une petite difficulté en plus, si les données dans les tableaux d'index et d'équivalence sont totalement différentes comme dans l'exemple ci-dessous, quelle formule peut fonctionner ?
https://www.cjoint.com/c/MFflTPCowS4
Je suis désolé de vous fournir ça en plusieurs étapes. Je ne peux pas vous fournir le tableau sur lequel je travaille réellement et mes tableaux "exemple" auraient dû être dès le départ strictement équivalents à mon tableau de travail. Je ne pensais pas qu'il pouvait y avoir tant d'options intermédiaires selon le niveau de complexité. En tout cas cela ma déjà permis d'apprendre beaucoup de choses.
Merci bien.
Hello,
T'es le Roi De L'embrouille toi !
En nommant tes listes 2.1, 2.2, 2.3, une proposition Excel 365 :
=INDEX(ASSEMB.V(Liste_3.1;Liste_3.2;Liste_3.3);EQUIV(D4;ASSEMB.V(Liste_2.1;Liste_2.2;Liste_2.3);0))
En rajoutant un indice sous-liste à la liste 1 et en le nommant, une proposition autre version Excel (il y a peut-être plus simple) :
=INDEX(INDIRECT("Liste_3."&INDEX(Liste_1.1;EQUIV(C3;Liste_1;0)));EQUIV(D3;INDIRECT("Liste_2."&INDEX(Liste_1.1;EQUIV(C3;Liste_1;0)));0))
Edit : Pb avec Cjoint pour l'instant pour transmettre le fichier
Edit2 : lien Wetransfer :
https://wetransfer.com/downloads/cdacfc5a6b352b6cd69cd6feba4fb34720230605130245/8b1e46
:D vraiment désolé.
En tout cas la solution pour 365 fonctionne parfaitement sur le classeur "exemple" et sur le classeur réel.
Pour le moment j'ai une erreur avec la solution pour les autres versions mais je regarderai plus en détail plus tard.
Merci beaucoup à toutes les personnes qui m'ont aidé pour ce projet, vous êtes top !
Bonjour,
Je reviens à la charge :)
J'essaie de faire fonctionner cette formule donnée plus haut sans succès :
=INDEX(INDIRECT("Liste_3."&INDEX(Liste_1.1;EQUIV(C3;Liste_1;0)));EQUIV(D3;INDIRECT("Liste_2."&INDEX(Liste_1.1;EQUIV(C3;Liste_1;0)));0))
Je pense que c'est tout simplement car il faut, comme indiqué : " rajouter un indice sous-liste à la liste 1 et le nommer".
Mais je n'arrive pas à comprendre ce que ça veut dire et donc je n'arrive pas à la faire.
Quelqu'un peut-il m'aider ?
hello,
Me voici de retour, dans la feuille Méta0, j'avais rajouté le numéro de sous-liste correspondant à chaque valeur de la liste 1, 1 pour vert listes 2.1 et 3.1, 2 pour rouge listes 2.2 et 3.2, 3 pour jaune listes 2.3 et 3.3, et j'ai nommé cette liste Liste_1.1
voiili, voilà
https://www.cjoint.com/c/MFmhelESMaA
Bonjour,
Me voici de retour également.
J'ai eu le temps de me pencher sur la solution pour toutes les versions d'Excel.
Je suis parvenue à adapter la formule pour mon tableau (encore merci beaucoup).
Par contre... ponctuellement, ça ne fonctionne pas.
Si dans la colonne "Type_de_demande" je sélectionne "Parcours_de_scolarisation", dans la colonne "Intitulé" la liste en cascade fonctionne mais dans les colonnes "Code_Motiv" et "Motivation" apparaît l'erreur "#N/A" sauf pour certains choix de la colonne "Intitulé" (comme par exemple : "Rejet hors définition du handicap enfant").
Pareil si dans la colonne "Type_de_demande" je sélectionne "Demandes_génériques".
J'ai l'impression que les choix qui fonctionnent dans ces deux listes en cascade, parviennent à fonctionner car ils vont chercher l'info autre part. Par exemple pour "Rejet hors définition du handicap enfant", ce choix est également présent dans le Type_de_demande : "Orientation_ESMS".
J'espère que l'explication est claire :)
Je ne sais pas s'il est possible de résoudre le problème ou s'il y a des conflits qui rendent la solution inopérante.
Finalement je partage une version soft du fichier d'origine : https://www.cjoint.com/c/MGgsvvnEs2J