Re : remplacer SOMMEPROD ?
Bonsoir ThomLau, Jean-Claude
Ci-joint la proposition au niveau formule, pour diminuer les temps de calcul.
Dans ton cas, la diminution des plages est possible, l'un des deux critères (Colonne G) est trié. Si ce n'était le cas, la seule possibilité hormis VBA est de passer par un TCD, (et même cela serait la solution à retenir).
J'ai modifié un petit peu ton tableau, en rajoutant deux lignes (13 et 14), qui calcul la position de la première occurrence du critère, et le nombre de fois que le critère est présent dans ta base. Je le répète encore, si la base n'est pas triée sur la colonne G, le tableau retournera des valeurs erronées.
A partir de ces deux calculs, on utilise la fonction DECALER ou la fonction INDIRECT
Tu trouveras les deux exemples dans la même feuille.
DECALER permet de définir une plage de cellules, en partant d'une référence de base, d'un décalage (ici vertical) et d'une longueur.
INDIRECT, transforme une référence de cellules écrite sous forme de texte, en une référence utilisable aux autres fonctions d'Excel.
En ligne (15) tu trouveras la formule pour écrire sous forme de texte la plage.
Ensuite dans ton tableau, j'ai supprimé la fonction SOMMEPROD par la fonction SOMME.SI(). Il n'y a plus qu'un critère, la plage étant limitée.
Dans cette formule, tu verras que j'ai utilisé des plages nommées. C'est au niveau de la définition des noms que la fonction DECALER intervient. (Menu Insertion/Nom/Définir...)
En dessous de ton tableau d'origine, j'ai rajouté les formules utilisant la plage écrite en texte, en Insérant INDIRECT dans la fonction SOMME.SI
Désolé je ne sais pas te dire entre DECALER et INDIRECT, quelle version utilisée.
@+Jean-Marie