Bonjour,
Je dois faire une somme de produits selon une condition. Ça donne cette formule de base:
Mais la première colonne à multiplier change selon une liste déroulante en $T$29. La plage $Y$3:$Y$28 devient ainsi $Z$3:$Z$28 ou $AA$3:$AA$28 selon le choix fait. Pour obtenir la bonne plage, j'utilise ADRESSE, COLONNE, INDEX et EQUIV:
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SOMMEPROD(($B3:$B$28=$B$29)*$Y$3:$Y$28*AB$3:AB$28)
EQUIV va chercher la position du choix fait dans la plage d'en-tête. INDEX donne la référence de la cellule selon cette position dans la plage d'en-tête. COLONNE donne le numéro de colonne de cette référence. Le reste vous comprenez, je pense.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =ADRESSE(3;COLONNE(INDEX($Y$1:$AA$1;;EQUIV($T$29;$Y$1:$AA$1;0))))&":"&ADRESSE(28;COLONNE(INDEX($Y$1:$AA$1;;EQUIV($T$29;$Y$1:$AA$1;0))))
Le problème, c'est qu'en remplaçant cette formule dans la précédente entourée de INDIRECT, la cellule renvoie l'erreur #VALEUR!:
J'ai conclu en lisant d'autres discussions que INDIRECT ne fonctionnait pas avec SOMMEPROD.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SOMMEPROD(($B3:$B$28=$B$29)*INDIRECT(ADRESSE(3;COLONNE(INDEX($Y$1:$AA$1;;EQUIV($T$29;$Y$1:$AA$1;0))))&":"&ADRESSE(28;COLONNE(INDEX($Y$1:$AA$1;;EQUIV($T$29;$Y$1:$AA$1;0)))))*AB$3:AB$28)
Est-ce qu'il y a une solution alternative ou une manière détournée de l'utiliser?
Sans les SI insérés les uns dans les autres, svp, d'autant que la formule va se complexifier encore avec une deuxième plage dans INDEX selon une autre liste déroulante...
Cordialement
Partager