🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Fonction SUMPRODUCT d'Excel — multiplier puis additionner, et les conditions que SUMIFS ne sait pas faire

|

Fonction SUMPRODUCT d'Excel — multiplier puis additionner, et les conditions que SUMIFS ne sait pas faire

En brefSUMPRODUCT aligne deux plages de même taille (ou plus), les multiplie cellule par cellule et additionne les produits. Syntaxe : =SUMPRODUCT(matrice1; [matrice2]; …). En une seule cellule, elle fait ce qu'une colonne intermédiaire suivie d'un SUM faisait autrefois. Ses deux super-pouvoirs face à SUMIFS : les totaux pondérés (=SUMPRODUCT(Qté; Prix)) et la logique multi-conditions à base de tableaux booléens — on multiplie les tableaux pour le ET, on les additionne pour le OU, et on ne met jamais AND()/OR() à l'intérieur (ils réduisent le tableau à une seule valeur). Chaque tableau doit avoir la même taille, sinon vous obtenez #VALUE!. Fonctionne dans toutes les versions jusqu'à Excel 2003.

Remarque : dans l'interface française d'Excel, cette fonction s'appelle SOMMEPROD (séparateur d'arguments : point-virgule ;).

=SUMPRODUCT(Qty, Price)                          ' chiffre d'affaires total : Σ qté×prix
=SUMPRODUCT((Region="West")*(Month=1)*Sales)     ' somme conditionnelle : Ouest ET janvier

La plupart des gens découvrent SUMPRODUCT comme une formule mystérieuse copiée sur un forum pour faire marcher une « somme si deux choses sont vraies ». Elle mérite mieux. C'est l'une des fonctions les plus discrètement puissantes d'Excel — un petit moteur de calcul matriciel qui vivait dans les feuilles de calcul une décennie avant l'existence de SUMIFS, et qui résout encore des problèmes que SUMIFS ne sait pas traiter. Ce guide s'articule autour du modèle mental qui fait tout comprendre, puis des tâches pour lesquelles elle reste le bon outil.

Ce que vous allez apprendre

  • Le modèle mental : SUMPRODUCT est un produit scalaire en une seule cellule
  • Le piège #VALUE! — chaque tableau doit avoir exactement la même taille
  • La logique multi-conditions : multiplier pour le ET, additionner pour le OU
  • Quand vous avez vraiment besoin de la double négation -- (et quand vous n'en avez pas besoin)
  • Les deux tâches que SUMIFS ne sait pas faire : totaux pondérés et OU entre colonnes
  • Le bon arbitrage : SUMPRODUCT vs SUMIFS vs anciennes formules matricielles CSE

Le modèle mental : un produit scalaire en une seule cellule

Oubliez les conditions un instant. À la base, SUMPRODUCT fait exactement ce que son nom indique — elle prend les produits et les additionne. Donnez-lui deux colonnes et elle multiplie la ligne 1 par la ligne 1, la ligne 2 par la ligne 2, jusqu'en bas, puis additionne chaque produit en un seul nombre :

' Qty = {2; 5; 3}, Price = {10; 4; 20}
=SUMPRODUCT(Qty, Price)     ' = 2*10 + 5*4 + 3*20 = 100

Voilà toute l'idée. Si vous avez déjà construit une colonne intermédiaire de =A2*B2, tirée vers le bas, puis sommée — SUMPRODUCT fait cela, condensé en une seule cellule, sans colonne intermédiaire. Gardez cette image en tête et tout le reste n'en est qu'une variation : les « conditions » que vous verrez ensuite ne sont que des tableaux supplémentaires de 1 et de 0 intégrés dans la même opération multiplier-puis-additionner.

La règle qui mord en premier : les tableaux doivent avoir la même taille

Voici l'erreur que vous rencontrerez avant toute autre. Chaque tableau que vous passez à SUMPRODUCT doit avoir la même forme — même nombre de lignes, même nombre de colonnes — car elle les apparie cellule par cellule. Une incompatibilité et vous obtenez #VALUE! :

=SUMPRODUCT(A2:A10, B2:B11)     ' #VALUE!  — 9 lignes contre 10 lignes
=SUMPRODUCT(A2:A10, B2:B10)     ' OK       — 9 lignes des deux côtés

La version classique de ce bug est subtile : vous construisez la formule, elle marche, puis quelqu'un insère une ligne dans une plage mais pas dans l'autre, et d'un coup c'est #VALUE! — ou pire, vous avez ancré une plage une ligne trop court et elle apparie silencieusement les mauvaises lignes ensemble. Rendez chaque plage identique, idéalement en les pointant vers les mêmes colonnes de tableau (Table[Qty], Table[Price]) pour qu'elles grandissent et rétrécissent ensemble. Cette seule habitude élimine toute la catégorie des erreurs d'incompatibilité.

Les conditions : multiplier pour le ET, additionner pour le OU

Voilà la partie qui vaut la peine d'être intériorisée, car c'est la même logique qui fait fonctionner FILTER et les formules matricielles dans l'Excel moderne. Une comparaison comme (Region="West") ne renvoie pas une seule réponse — elle renvoie un tableau entier de TRUE/FALSE, un par ligne. Excel traite TRUE comme 1 et FALSE comme 0 dès l'instant où vous faites une opération arithmétique dessus. Donc :

' ET — multiplier les conditions : une ligne ne compte que si LES DEUX valent 1
=SUMPRODUCT((Region="West")*(Product="Widget")*Sales)

' OU — additionner les conditions : une ligne compte si L'UNE des deux vaut 1
=SUMPRODUCT(((Region="West")+(Region="East"))*Sales)

Multiplier deux tableaux de 1/0 donne 1 uniquement là où les deux valent 1 — c'est le ET. Les additionner donne 1 (ou plus) partout où l'une ou l'autre vaut 1 — c'est le OU. L'erreur fatale est de se tourner vers les fonctions de feuille de calcul AND() et OR() : celles-ci réduisent le tableau entier à un seul TRUE/FALSE, si bien que votre formule évalue discrètement une seule condition pour toute la colonne au lieu de ligne par ligne. La règle est sans appel — à l'intérieur de SUMPRODUCT, utilisez * et +, jamais AND()/OR().

Pour le OU, encadrez les conditions additionnées de sorte qu'une ligne satisfaite deux fois ne compte qu'une seule fois si vous avez besoin d'un décompte ; pour une somme comme l'exemple ci-dessus, le double comptage ne peut pas se produire car le Sales de chaque ligne est ajouté au plus une fois par parenthèse.

Quand vous avez besoin de la double négation --

Vous verrez -- parsemé dans les formules SUMPRODUCT en ligne et vous vous demanderez si c'est de la magie. Ça ne l'est pas. C'est une double négation qui force les TRUE/FALSE en 1/0. Vous n'en avez besoin que lorsqu'un tableau de conditions n'a rien à multiplier :

=SUMPRODUCT(--(Region="West"))          ' COMPTE des lignes Ouest — il faut -- pour convertir
=SUMPRODUCT((Region="West")*Sales)      ' SOMME des ventes Ouest — le *Sales convertit déjà

Dans la seconde formule, la multiplication par Sales transforme déjà les booléens en nombres, donc -- serait redondant. Dans la première, il n'y a qu'un seul tableau booléen et aucune opération arithmétique pour déclencher la conversion — sans -- vous additionneriez des TRUE/FALSE, ce qui donne 0. Règle empirique : un seul tableau de condition isolé → ajoutez -- ; toute condition multipliée par autre chose → elle est déjà convertie.

Les deux tâches que SUMIFS ne sait vraiment pas faire

Si tout ce dont vous avez besoin est une simple somme multi-conditions en ET, utilisez SUMIFS — elle est plus rapide sur les grandes feuilles et bien plus lisible. SUMPRODUCT gagne sa place dans les deux cas que SUMIFS ne peut tout simplement pas exprimer :

' 1) total / moyenne PONDÉRÉ(E) — multiplier deux colonnes PUIS sommer
=SUMPRODUCT(Qty, Price) / SUM(Qty)       ' prix moyen pondéré

' 2) OU entre colonnes DIFFÉRENTES
=SUMPRODUCT(((Region="West")+(Channel="Online")>0)*Sales)

SUMIFS peut filtrer, mais elle ne peut pas multiplier deux colonnes ensemble avant de sommer — une moyenne pondérée (unités × prix, sommées, divisées par les unités) est donc hors de sa portée, et AVERAGEIFS ne fait qu'une moyenne simple. Et SUMIFS ne relie ses conditions que par un ET ; un OU qui s'étend sur deux colonnes différentes n'a pas de forme SUMIFS propre. Ces deux-là — la pondération et le OU entre colonnes — sont la raison pour laquelle SUMPRODUCT figure encore dans la trousse de tout analyste.

Le bon arbitrage : SUMPRODUCT vs SUMIFS vs matrices CSE

Trois époques d'une même idée, et le bon choix a évolué avec le temps :

  • Sommes/comptages conditionnels simples → utilisez SUMIFS/COUNTIFS. Elles sont optimisées, lisibles, et l'ordre des arguments ne change jamais. N'écrivez pas SUMPRODUCT((A="x")*(B="y")*C) quand SUMIFS(C,A,"x",B,"y") dit la même chose.
  • Totaux pondérés, OU entre colonnes, multiplier-puis-filtrerSUMPRODUCT. C'est son vrai terrain, et rien de plus récent ne la remplace pleinement en une seule cellule.
  • Anciennes {=SUM(IF(…))} saisies avec Ctrl+Maj+Entrée → mettez-les à la retraite. SUMPRODUCT gère les tableaux nativement sans le rituel CSE, et sur l'Excel moderne FILTER couvre les cas d'extraction-puis-somme de façon plus lisible. Si vous voyez encore des accolades autour d'un SUM-de-IF, c'est presque toujours un SUMPRODUCT (ou un SUMIFS) qui s'ignore.

L'avis tranché : SUMPRODUCT n'est plus votre outil quotidien de somme conditionnelle — mais c'est celui que vous gardez pour les tâches que la famille des -IFS ne peut pas atteindre, et il fonctionne à l'identique dans toutes les versions d'Excel que quiconque utilise encore.

Comment ExcelMaster vous aide

Le plus dur avec SUMPRODUCT n'est jamais la saisie — c'est de décider si vous en avez besoin, et de bien gérer le ET/OU et le -- lorsque c'est le cas. ExcelMaster lit la question en termes métier — coût moyen pondéré sur ces commandes, ou ventes totales qui sont soit en Ouest soit vendues en ligne — et écrit la formule avec des tableaux de même taille, les booléens multipliés ou additionnés correctement, et -- uniquement là où il a sa place. Vous décrivez le nombre ; il choisit pour vous entre SUMPRODUCT, SUMIFS et FILTER.

Questions fréquentes

Pourquoi mon SUMPRODUCT renvoie-t-il #VALUE! ?

Presque toujours une incompatibilité de taille : deux de vos tableaux n'ont pas le même nombre de lignes (ou de colonnes). SUMPRODUCT apparie les cellules une à une, donc A2:A10 (9 lignes) et B2:B11 (10 lignes) ne peuvent pas s'aligner. Donnez à chaque plage exactement la même forme — utiliser des colonnes de tableau les garde synchronisées automatiquement. Une valeur texte égarée dans une plage numérique peut aussi le déclencher.

Comment utiliser SUMPRODUCT avec plusieurs critères ?

Multipliez les conditions pour le ET, additionnez-les pour le OU : =SUMPRODUCT((Region="West")*(Product="Widget")*Sales). Chaque condition comme (Region="West") est un tableau de TRUE/FALSE qui devient 1/0 lors de la multiplication. N'utilisez pas AND()/OR() à l'intérieur — ils réduisent le tableau à une seule valeur.

À quoi sert le double moins (--) dans SUMPRODUCT ?

Il force les TRUE/FALSE en 1/0. Vous en avez besoin quand un tableau de conditions n'est multiplié par rien d'autre — par exemple pour compter des lignes : =SUMPRODUCT(--(Region="West")). Si vous multipliez déjà par une colonne numérique, la conversion se fait gratuitement et -- est redondant.

SUMPRODUCT vs SUMIFS — laquelle choisir ?

Pour une simple somme conditionnelle, utilisez SUMIFS — elle est plus rapide et plus claire. Utilisez SUMPRODUCT quand vous devez multiplier deux colonnes avant de sommer (totaux pondérés), ou pour exprimer un OU entre deux colonnes différentes, ce que SUMIFS ne sait pas faire.

SUMPRODUCT fonctionne-t-elle dans les anciennes versions d'Excel ?

Oui — c'est l'une des plus anciennes fonctions matricielles, qui fonctionne dans toutes les versions jusqu'à Excel 2003 (et avant), sans Ctrl+Maj+Entrée requis. Cette fiabilité multiversion est l'une des raisons de sa popularité durable.

Testé dans

Testé dans : Excel 365 (Windows 11) — dernière vérification le 30/06/2026.

Guides associés : Excel SUMIFS · Excel COUNTIFS · Excel SUBTOTAL · Excel AGGREGATE · Excel FILTER