Salut
Deux autres solutions, qui me semblent plus simple à mettre en œuvre et (exepté pour une ) plus simple à maintenir dans le temps en cas de modification du classeur.
La 1ère est un peu plus longue mais l'avantage c'est qu'elle est insensible en cas de modification du nom du tableau structuré.
Les 2 formules possible sont les suivantes:
=INDEX(INDIRECT("Tableau1[" & $C$30 & "]");SOMMEPROD((Tableau1[Semaine]=$C$31)*(Tableau1[Activité]=$C$32)*(LIGNE(Tableau1[Activité])-LIGNE(Tableau1[[#En-têtes];[Semaine]]))))
Ici l'utilisation de Indirect interdit la possibilité de changer le nom du tableau sur la feuille Excel puisqu'il est écrit en dur dans la formule. SI je change le nom du tableau sur ma feuille Tableau1 -> Tab_Semaine par exemple, la formule retournera une erreur parce qu'elle ne trouvera plus Tableau1.
Donc prudence avec l'utilisation de indirect dans les formules, il vaut mieux éviter si possible
Je lui préfère donc cette version, plus polyvalente
=INDEX(Tableau1[[Lundi]:[Dimanche]];SOMMEPROD((Tableau1[Semaine]=$C$31)*(Tableau1[Activité]=$C$32)*(LIGNE(Tableau1[Activité])-LIGNE(Tableau1[[#En-têtes];[Semaine]])));EQUIV($C$30;Tableau1[[#En-têtes];[Lundi]:[Dimanche]];0))
[Edit]
Un autre en version matricielle (à valider par Ctrl+Maj+Enter)
=INDEX(Tableau1[[Lundi]:[Dimanche]];EQUIV(1;(Tableau1[Semaine]=$C$31)*(Tableau1[Activité]=$C$32);0);EQUIV($C$30;Tableau1[[#En-têtes];[Lundi]:[Dimanche]];0))
Et une autre en remplaçant le indirect par décaler() [CElle qui j’utiliserais si je devais en choisir une]
=SOMMEPROD((Tableau1[Semaine]=$C$31)*(Tableau1[Activité]=$C$32)*DECALER(Tableau1[Activité];0;EQUIV($C$30;Tableau1[[#En-têtes];[Lundi]:[Dimanche]];0)))
Fichier démo joint
[/Edit]
++
Qwaz
Partager