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

Moyenne pondérée dans Excel — SUMPRODUCT ÷ SUM (et pourquoi la moyenne des moyennes ment)

|

Moyenne pondérée dans Excel — SUMPRODUCT ÷ SUM (et pourquoi la moyenne des moyennes ment)

L'essentiel — Excel n'a pas de fonction WEIGHTEDAVG ; l'idiome est =SUMPRODUCT(values, weights)/SUM(weights). SUMPRODUCT multiplie chaque valeur par son poids et additionne les résultats (le total pondéré) ; diviser par SUM(weights) reconvertit ce total en une moyenne par unité. Vous en avez besoin dès que vos nombres portent une importance différente — des notes pondérées par des crédits, des prix pondérés par la quantité vendue, des rendements pondérés par le montant investi. L'erreur qu'elle corrige est la plus courante des erreurs de moyenne : prendre une AVERAGE simple de chiffres qui résument chacun un groupe de taille différente, ce qui donne autant voix à un groupe minuscule qu'à un groupe énorme et produit un nombre faux avec assurance.

=SUMPRODUCT(B2:B10, C2:C10)/SUM(C2:C10)   ' valeurs en B, poids en C
=SUMPRODUCT(Scores, Credits)/SUM(Credits) ' moyenne générale : points de note pondérés par les crédits
=SUMPRODUCT(B2:B10, C2:C10)               ' raccourci UNIQUEMENT si les poids somment déjà à 1

La plupart des pages classées sur « moyenne pondérée Excel » vous tendent =SUMPRODUCT(...)/SUM(...) avec une moyenne générale déroulée, puis s'arrêtent là. Mais la formule n'a jamais été le plus dur — vous la mémorisez en une minute. Le plus dur, c'est de savoir quand une moyenne simple est discrètement fausse et qu'une pondérée s'impose, et pourquoi les deux peuvent différer au point de raconter des histoires opposées. C'est ce jugement qui sauve un rapport, alors c'est par là que commence cette page.

Remarque : dans une interface Excel en français, ces fonctions s'appellent SOMMEPROD (SUMPRODUCT) et SOMME (SUM). Équivalents : AVERAGE = MOYENNE, AVERAGEIFS = MOYENNE.SI.ENS, SUMIFS = SOMME.SI.ENS, IFERROR = SIERREUR. Les codes d'erreur sont eux aussi localisés : #VALUE! devient #VALEUR! et #DIV/0! reste #DIV/0!. Les formules ci-dessous utilisent les noms anglais ; le comportement est identique.

Ce que vous allez apprendre

  • Le modèle mental : un poids, c'est le nombre de « voix » attribuées à chaque valeur
  • Pourquoi la formule est SUMPRODUCT ÷ SUM, terme à terme
  • L'erreur centrale : pourquoi la AVERAGE de résumés de groupes donne une mauvaise réponse
  • Le raccourci quand les poids somment déjà à 1 (ou 100 %)
  • Les schémas réels : moyenne générale, rendement de portefeuille, prix mélangé
  • Les pièges : du texte dans les plages, des longueurs qui ne correspondent pas, et une moyenne pondérée conditionnelle

Le modèle mental : les poids sont des voix

Une moyenne simple donne une voix à chaque valeur. Une moyenne pondérée laisse chaque valeur voter proportionnellement à un poids — une quantité, un effectif, un montant en euros, un nombre de crédits. Une valeur de poids 10 tire le résultat dix fois plus fort qu'une valeur de poids 1. C'est toute l'idée ; le reste n'est que de la comptabilité pour faire bien additionner les voix.

La comptabilité tient en deux étapes. D'abord, multiplier chaque valeur par son poids et additionner le tout — c'est SUMPRODUCT(values, weights), l'« influence » totale. Ensuite, diviser par le nombre total de voix, SUM(weights), pour ramener le résultat à l'échelle d'une seule valeur. Sautez la seconde étape et vous obtenez un total pondéré, pas une moyenne pondérée — un nombre qui grossit juste parce que vous avez plus de données, ce qui est rarement ce que vous voulez.

Pourquoi diviser par SUM(weights)

Cela vaut la peine de voir l'arithmétique une fois, car elle explique toutes les variantes suivantes. Supposons trois achats : 2 unités à 10 $, 3 unités à 20 $, 5 unités à 30 $. Le prix moyen réellement payé par un client n'est pas (10+20+30)/3 = 20 — cela ferait comme si une unité avait été achetée à chaque prix. C'est l'argent total divisé par le nombre total d'unités :

' Prix en B2:B4 = 10, 20, 30   |   Quantités en C2:C4 = 2, 3, 5
=SUMPRODUCT(B2:B4, C2:C4)   ' -> 20 + 60 + 150 = 230   (argent total dépensé)
=SUM(C2:C4)                 ' -> 2 + 3 + 5    = 10      (unités totales achetées)
=SUMPRODUCT(B2:B4,C2:C4)/SUM(C2:C4)  ' -> 230 ÷ 10 = 23  (prix unitaire mélangé)

La moyenne simple donne 20 ; la moyenne pondérée donne 23, parce que plus d'unités se sont vendues au prix élevé. SUMPRODUCT construit le numérateur (l'argent), SUM construit le dénominateur (les unités), et le quotient est le prix par unité qui s'est réellement produit. Toute moyenne pondérée a cette même forme argent-sur-unités, quels que soient l'« argent » et les « unités » du moment.

L'erreur centrale : la AVERAGE de moyennes

C'est l'erreur que les moyennes pondérées existent pour éviter, et elle est partout. Disons que trois régions rapportent leur valeur de commande moyenne, et que vous voulez la moyenne à l'échelle de l'entreprise :

' Moyennes régionales en B : 50, 40, 90   |   Nombres de commandes en C : 300, 250, 3
=AVERAGE(B2:B4)                       ' -> 60    (FAUX : chaque région compte pareil)
=SUMPRODUCT(B2:B4, C2:C4)/SUM(C2:C4)  ' -> 45.6  (JUSTE : pondéré par le nombre de commandes)

La AVERAGE simple dit 60. Mais une région a 3 commandes et une autre en a 300, et la moyenne simple leur donne un poids identique — la région aberrante à 3 commandes tire le chiffre de l'entreprise vers le haut de 14 points sur la foi de presque rien. La moyenne pondérée, 45,6, reflète là où les commandes se trouvent vraiment. Chaque fois que vous vous surprenez à moyenner des nombres qui sont déjà des moyennes (ou des taux, ou des chiffres par unité) de groupes de tailles inégales, une AVERAGE simple est presque à coup sûr le mauvais outil. Demandez-vous : chacun de ces nombres représente-t-il un tas de données sous-jacentes de taille différente ? Si oui, pondérez-les.

Le raccourci : quand les poids somment déjà à 1

Si vos poids sont des proportions qui somment déjà à 1 (ou 100 %) — une allocation d'actifs, une grille de notation, une distribution de probabilité —, alors SUM(weights) vaut 1 et diviser par lui ne change rien. Vous pouvez laisser tomber le dénominateur :

' Les poids en C somment déjà à 100% : 0.5, 0.3, 0.2
=SUMPRODUCT(B2:B4, C2:C4)   ' -> moyenne pondérée directement, sans ÷

C'est la forme que vous verrez dans les rendements de portefeuille et les grilles de notation pondérées. Une mise en garde : elle n'est valable que si les poids somment vraiment à 1. Si un arrondi égaré les laisse à 0,99, le SUMPRODUCT nu est faux en silence. Garder le /SUM(weights) ne coûte rien et s'auto-corrige, alors utilisez la forme complète tant que vous n'êtes pas certain — elle ne peut jamais avoir tort.

Les schémas réels à mémoriser

Le même squelette couvre la plupart des tâches réelles :

' Moyenne générale — points de note pondérés par les crédits
=SUMPRODUCT(GradePoints, Credits)/SUM(Credits)

' Rendement de portefeuille — rendement de chaque ligne pondéré par sa valeur en euros
=SUMPRODUCT(Returns, MarketValues)/SUM(MarketValues)

' Taux d'intérêt mélangé sur des prêts de soldes différents
=SUMPRODUCT(Rates, Balances)/SUM(Balances)

' Score d'enquête pondéré par le nombre de répondants par groupe
=SUMPRODUCT(GroupScores, Respondents)/SUM(Respondents)

Dans chacun, la seconde plage est la colonne « combien cette ligne pèse-t-elle ». Si vous savez nommer cette colonne, vous savez écrire la moyenne pondérée.

Les pièges : texte, longueur et conditions

SUMPRODUCT est moins indulgente qu'AVERAGE. Là où AVERAGE saute le texte, SUMPRODUCT renvoie #VALEUR! dès qu'une des plages contient du texte qu'elle ne peut pas multiplier — nettoyez donc les plages d'abord, ou convertissez avec IF/-- si certaines cellules sont délibérément non numériques. Les deux plages doivent aussi avoir la même longueur ; des hauteurs discordantes donnent #VALEUR!, faute de partenaire à multiplier. Et une colonne de poids vide ou tout à zéro rend SUM(weights) nul, si bien que l'ensemble renvoie #DIV/0! — enveloppez avec IFERROR si c'est possible.

Pour une moyenne pondérée conditionnelle — disons, seulement la région « Ouest » —, placez la condition à l'intérieur des deux SUMPRODUCT sous forme d'un tableau (condition) qui vaut 1 ou 0 :

=SUMPRODUCT((Region="West")*Value*Weight)/SUMPRODUCT((Region="West")*Weight)

Le terme (Region="West") met à zéro chaque ligne non concordante, au numérateur comme au dénominateur, si bien que seules les lignes Ouest contribuent — la cousine pondérée d'AVERAGEIFS, qui ne sait faire qu'une moyenne conditionnelle non pondérée. Voyez le guide SUMPRODUCT pour le fonctionnement général de l'astuce de la condition-tableau.

Comment ExcelMaster vous aide

Le piège des moyennes pondérées, ce n'est pas d'écrire SUMPRODUCT/SUM — c'est de repérer que vous aviez besoin d'une moyenne pondérée dès le départ, à l'instant où vous aviez déjà tapé =AVERAGE(...) sur une colonne de moyennes régionales. Demandez à ExcelMaster « la valeur de commande moyenne sur toutes les régions » et, voyant que chaque ligne est elle-même la moyenne d'un nombre différent de commandes, il écrit la version pondérée et vous dit de combien la moyenne simple se serait trompée. Dites « le prix mélangé sur ces achats » ou « ma moyenne générale à partir de ce relevé » et il câble =SUMPRODUCT(...)/SUM(...) avec les bonnes colonnes de valeurs et de poids déjà mises en correspondance.

Questions fréquentes

Comment calculer une moyenne pondérée dans Excel ?

Utilisez =SUMPRODUCT(values, weights)/SUM(weights). SUMPRODUCT multiplie chaque valeur par son poids et additionne les produits (le total pondéré) ; diviser par SUM(weights) convertit ce total en une moyenne par unité. Par exemple, =SUMPRODUCT(B2:B10, C2:C10)/SUM(C2:C10) moyenne les valeurs de B pondérées par les montants de C.

Pourquoi ne pas simplement utiliser AVERAGE ?

Parce qu'AVERAGE donne un poids égal à chaque valeur. Quand vos nombres résument des groupes de tailles différentes — moyennes régionales, prix par unité, notes sur des crédits différents —, la pondération égale laisse un groupe minuscule compter autant qu'un énorme, ce qui produit un résultat trompeur. Une moyenne pondérée laisse chaque valeur compter proportionnellement à sa taille.

Dois-je toujours diviser par SUM(weights) ?

Seulement quand les poids ne somment pas déjà à 1. Si vos poids sont des proportions qui somment à 1 (ou 100 %), SUM(weights) vaut 1 et la division ne fait rien : =SUMPRODUCT(values, weights) seul suffit. Dans le doute, gardez le /SUM(weights) — il est toujours correct et s'auto-corrige si les poids ne somment pas exactement à 1.

Pourquoi ma moyenne pondérée renvoie-t-elle #VALEUR! ou #DIV/0! ?

#VALEUR! signifie en général qu'une des plages contient du texte que SUMPRODUCT ne peut pas multiplier, ou que les plages de valeurs et de poids ont des longueurs différentes — elles doivent correspondre cellule pour cellule. #DIV/0! signifie que SUM(weights) est ressorti à zéro (une colonne de poids vide ou tout à zéro). Nettoyez les plages et vérifiez que les poids somment à un nombre positif.

Comment faire une moyenne pondérée avec une condition ?

Placez la condition à l'intérieur des deux SUMPRODUCT sous forme de tableau : =SUMPRODUCT((Region="West")*Value*Weight)/SUMPRODUCT((Region="West")*Weight). Le terme (Region="West") devient 1 pour les lignes concordantes et 0 sinon, si bien que seules ces lignes comptent, au numérateur comme au dénominateur.

Testé dans

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

Guides associés : Excel SUMPRODUCT · Fonction AVERAGE d'Excel · Excel GEOMEAN, TRIMMEAN et HARMEAN · Excel AVERAGEIF et AVERAGEIFS · Excel SUMIFS