Qu'est-ce que la fonction REDUCE ?
Tu passes à REDUCE dès que SOMME, PRODUIT ou MAX ne suffisent plus, parce que ta règle d'accumulation est trop spécifique pour tenir dans une fonction toute faite. Tu l'écris une seule fois dans une LAMBDA, et REDUCE l'applique élément par élément jusqu'à ne te rendre qu'un seul résultat final.
Concrètement, REDUCE brille là où SOMME, PRODUIT ou MAX ne suffisent plus : calculer un rendement composé sur des taux variables, construire un identifiant en concaténant des champs conditionnellement, simuler des pièces qui passent des contrôles successifs, ou retrouver le meilleur vendeur avec son nom ET son chiffre en une seule formule.
Syntaxe
=REDUCE(valeur_initiale; tableau; lambda)Clique sur un argument pour aller à son explication.
REDUCE fait partie des fonctions LAMBDA disponibles uniquement dans Microsoft 365. Sur Excel 2019, 2016 ou versions antérieures, elle affiche #NOM?.

Comprendre chaque paramètre de la fonction REDUCE
Les trois arguments arrivent toujours dans cet ordre : d'abord la valeur de départ de ton accumulateur, ensuite le tableau à parcourir, enfin la LAMBDA qui dit comment combiner les deux. Aucun n'est facultatif.
Retiens surtout que la LAMBDA reçoit ses paramètres dans l'ordre inverse de ce qu'on croit : le premier, c'est l'accumulateur (le résultat en cours), le second seulement la valeur de la cellule courante.
valeur_initiale
: la valeur de départ de ton accumulateur, celle avec laquelle tu commences le calculÇa peut être 0 pour une somme, 1 pour un produit, "" pour de la concaténation de texte, ou n'importe quelle valeur pertinente pour ta logique métier.
Cette valeur détermine aussi le type de résultat final : si tu commences avec un nombre, ton résultat sera numérique ; si tu commences avec du texte, ce sera du texte. Choisis-la avec soin : la règle est de prendre l'élément neutre de ton opération (0 pour l'addition, 1 pour la multiplication).
tableau
: le tableau ou la plage que tu veux réduire en une seule valeurÇa peut être une plage simple comme A1:A10, un tableau multi-colonnes comme B2:D20, ou même le résultat d'une autre fonction comme SEQUENCE(10).
REDUCE va parcourir chaque cellule de ce tableau, une par une, en les passant à ta fonction LAMBDA. Pour les tableaux 2D, il traite d'abord toute la première ligne, puis la deuxième, etc.
lambda
: ta fonction LAMBDA personnalisée qui définit comment combiner l'accumulateur avec chaque valeurElle doit avoir exactement 2 paramètres : le premier reçoit l'accumulateur (le résultat en cours), le deuxième reçoit la valeur courante du tableau.
Par exemple : LAMBDA(acc; val; acc + val) pour une somme, ou LAMBDA(acc; val; acc * val) pour un produit. Pour faciliter la lecture dans 3 mois, utilise des noms explicites : LAMBDA(total_ventes; vente_du_jour; total_ventes + vente_du_jour).

Exemples pratiques pas à pas
Comment additionner toutes les valeurs d'une plage avec les fonctions REDUCE et LAMBDA
Le budget de fonctionnement passe en revue à la rentrée et tu dois annoncer ce que le service a réellement dépensé depuis janvier. Tes huit mois de dépenses sont saisis les uns sous les autres, et tu veux un montant unique, pas une colonne de sous-totaux à rallonge. La fonction REDUCE parcourt la plage ligne par ligne, additionne au fur et à mesure et ne te ressort que le total final.
- 1Dans une cellule, écris
=REDUCE(. - 2En 1er argument : saisis le point de départ du cumul,
0. Ajouter zéro à la première dépense ne change rien, ce qui en fait le bon départ pour une addition. - 3En 2ᵉ argument : sélectionne les huit dépenses de janvier à août,
B2:B9. La fonction les lit une par une, dans l'ordre où elles sont saisies. - 4En 3ᵉ argument : écris la fonction qui dit comment cumuler et referme-la,
LAMBDA(cumul; valeur; cumul+valeur). Ses deux paramètres arrivent toujours dans cet ordre, l'accumulateur d'abord (nommé icicumul) et la dépense courante ensuite, puis vient le calculcumul+valeurrenvoyé à chaque tour, qui devient le cumul du tour suivant. - 5Ferme la parenthèse de la fonction REDUCE et appuie sur Entrée. Celle de la LAMBDA a déjà été refermée à l'étape précédente, et seul le tout dernier cumul sort de la formule.
=REDUCE(0; B2:B9; LAMBDA(cumul; valeur; cumul+valeur))1 200, puis 2 150, et ainsi de suite jusqu'à août. Seul le tout dernier cumul sort de la formule (9 500 €), les sept totaux intermédiaires restent invisibles.Comment calculer un rendement composé avec la fonction REDUCE
Un client te demande ce que son placement lui a vraiment rapporté sur cinq ans, et les taux ont changé chaque année. Tu as une ligne par année avec son taux, et tu ne peux pas te contenter d'additionner les pourcentages : chaque taux s'applique au capital déjà augmenté l'année d'avant. La fonction REDUCE part du capital de départ et le fait grossir taux après taux, jusqu'au coefficient final.
- 1Dans une cellule, écris
=REDUCE(. - 2En 1er argument : saisis
1, autrement dit 100 % du capital de départ. C'est l'élément neutre de la multiplication, alors qu'un0à cette place écraserait tout le calcul et renverrait0sans afficher la moindre erreur. - 3En 2ᵉ argument : sélectionne les cinq taux annuels de 2020 à 2024,
B2:B6. Ils sont rangés dans l'ordre chronologique, car l'ordre de lecture est aussi celui du calcul. - 4En 3ᵉ argument : écris la règle de capitalisation et referme-la,
LAMBDA(capital; taux; capital*(1+taux)). L'accumulateurcapitalporte le coefficient déjà accumulé et le paramètretauxreçoit le pourcentage de l'année courante, puis le calculcapital*(1+taux)conserve le capital et n'ajoute que le gain de l'année, là où un simplecapital*tauxne garderait que les intérêts. - 5Ferme la parenthèse de la fonction REDUCE et appuie sur Entrée. Celle de la LAMBDA a déjà été refermée à l'étape précédente, et le coefficient final
1,2757en ressort.
=REDUCE(1; B2:B6; LAMBDA(capital; taux; capital*(1+taux)))1+taux à chaque année : 1,05, puis 1,1235, jusqu'à 1,2757 après 2024. Ce coefficient vaut +27,57 % sur cinq ans, davantage que la simple addition des taux (25 %), parce que chaque année profite des gains des précédentes.Comment concaténer une colonne en une seule chaîne avec les fonctions REDUCE et SI
On te réclame l'itinéraire de la tournée du jour en une seule ligne, prête à coller dans un message au chauffeur. Tes étapes sont saisies dans une colonne, une ville par ligne, et tu veux les enchaîner avec un séparateur propre, sans flèche qui traîne au début. La fonction REDUCE assemble le texte ville après ville et ne renvoie que la chaîne complète.
- 1Dans une cellule, écris
=REDUCE(. - 2En 1er argument : saisis une chaîne vide,
"". C'est l'élément neutre du texte, et c'est elle qui fixe le type du résultat, puisque tu démarres en texte et tu finis en texte. - 3En 2ᵉ argument : sélectionne les quatre villes de la tournée,
B2:B5, dans l'ordre où tu veux les voir apparaître dans l'itinéraire. - 4En 3ᵉ argument : écris la règle d'assemblage et referme-la,
LAMBDA(chaine; ville; SI(chaine=""; ville; chaine&" > "&ville)). L'accumulateurchaineporte l'itinéraire déjà construit et le paramètrevillereçoit la ligne en cours, puis la fonction SI pose la ville seule au premier tour, quand la chaîne est encore vide, et colle" > "devant chaque ville aux tours suivants. - 5Ferme la parenthèse de la fonction REDUCE et appuie sur Entrée. Celles de la LAMBDA et du SI ont déjà été refermées à l'étape précédente, et seul l'itinéraire complet sort de la formule.
=REDUCE(""; B2:B5; LAMBDA(chaine; ville; SI(chaine=""; ville; chaine&" > "&ville)))> Lyon > Dijon). La fonction REDUCE ne rend que l'assemblage terminé, jamais les bouts de phrase construits en chemin.Comment ignorer une erreur #VALEUR! avec les fonctions REDUCE et SIERREUR
L'export des capteurs arrive brut de l'outil de supervision, et deux lignes affichent une erreur au lieu d'un relevé. Tu as besoin du total des mesures valides pour boucler ton rapport, sauf qu'une seule cellule en erreur suffit à faire tomber toute l'addition. La fonction REDUCE peut neutraliser ces cellules au passage et ne compter que ce qui est exploitable.
- 1Dans une cellule, écris
=REDUCE(. - 2En 1er argument : saisis
0. C'est le point de départ de l'addition, et zéro ne change rien au premier relevé ajouté, ce qui en fait le bon élément neutre pour une somme. - 3En 2ᵉ argument : sélectionne les six relevés bruts,
B2:B7, erreurs comprises. Tu n'as aucun nettoyage à faire en amont, la LAMBDA s'en charge au vol. - 4En 3ᵉ argument : écris la règle d'accumulation et referme-la,
LAMBDA(cumul; releve; cumul+SIERREUR(releve; 0)). L'accumulateurcumulgarde le total valide en cours et le paramètrerelevereçoit la cellule lue, qui vaut parfois#VALEUR!, puis la fonction SIERREUR ramène toute cellule en erreur à0avant de l'ajouter, au lieu de la laisser faire échouer l'accumulation. - 5Ferme la parenthèse de la fonction REDUCE et appuie sur Entrée. Celle de la LAMBDA a déjà été refermée à l'étape précédente, et le total des quatre relevés exploitables,
48,5, en ressort.
=REDUCE(0; B2:B7; LAMBDA(cumul; releve; cumul+SIERREUR(releve; 0)))#VALEUR!. Ici, les deux capteurs en erreur comptent pour 0 le temps du calcul, et la fonction REDUCE additionne les quatre relevés exploitables (12,4 + 9,8 + 15,2 + 11,1).
Les erreurs fréquentes avec la fonction REDUCE
Avec REDUCE, les bugs ne viennent presque jamais du tableau mais de ta LAMBDA et de ta valeur de départ. Un #CALC! signale que ta LAMBDA n'a pas ses deux paramètres ; un #VALEUR! que tu mélanges nombre et texte en cours de route.
Les deux autres pièges sont plus sournois : une valeur initiale mal choisie (un 0 qui écrase une multiplication) donne un résultat faux sans erreur visible, et un #NOM? veut juste dire que ta version d'Excel ne connaît pas encore les fonctions LAMBDA.
#CALC! : la LAMBDA n'a pas exactement 2 paramètres
REDUCE exige que ta fonction LAMBDA ait exactement 2 paramètres : l'accumulateur et la valeur courante. Pas un seul, pas trois.
Solution : Vérifie que ta LAMBDA a bien cette forme : LAMBDA(acc; val; ton_calcul). Même si tu n'utilises qu'un des deux paramètres dans ton calcul, déclare-les tous les deux.
Mauvaise valeur initiale qui fausse tout le calcul
Utiliser 0 comme valeur initiale pour une multiplication donne toujours 0 (car 0 × n'importe quoi = 0). Utiliser 1 pour une addition ajoute +1 au total.
Solution : Choisis l'élément neutre de ton opération : 0 pour addition, 1 pour multiplication, "" pour concaténation. Teste mentalement : "Si je combine cette valeur avec mon premier élément, est-ce que j'obtiens juste mon premier élément ?"
#VALEUR! : incohérence de type entre l'accumulateur et le retour
Si ta valeur initiale est un nombre mais que ta LAMBDA retourne du texte à un moment (ou l'inverse), Excel génère #VALEUR!. Le type doit rester cohérent du début à la fin.
Solution : Assure-toi que ta LAMBDA retourne toujours le même type que la valeur initiale. Utilise TEXTE() ou CNUM() pour convertir si nécessaire, ou enveloppe les opérations risquées dans SIERREUR.
#NOM? : REDUCE n'est pas disponible dans cette version
REDUCE fait partie des fonctions LAMBDA introduites avec Microsoft 365. Elle n'existe pas dans Excel 2019, 2016 ou versions antérieures.
Solution : Vérifie ta version d'Excel via Fichier puis Compte. Pour utiliser REDUCE, tu as besoin de Microsoft 365 à jour. Sinon, passe par des formules matricielles classiques (Ctrl+Maj+Entrée) ou VBA.

REDUCE vs SCAN vs MAP vs fonctions classiques
Choisis selon ce que tu veux récupérer en sortie. Tu veux une seule valeur agrégée par ta propre logique ? REDUCE. Tu veux voir chaque étape du cumul (ou déboguer) ? SCAN, qui fait la même accumulation mais renvoie tout l'historique. Tu veux transformer chaque élément sans rien accumuler ? MAP.
Les fonctions classiques (SOMME, PRODUIT, MAX) restent imbattables sur les calculs simples : ne sors REDUCE que quand ta logique d'accumulation dépasse ce qu'elles savent faire.
| Critère | REDUCE | SCAN | MAP | Fonctions classiques |
|---|---|---|---|---|
| Type de résultat | Une seule valeur | Tableau des étapes | Tableau transformé | Une seule valeur |
| Logique personnalisée | ✅ Totale avec LAMBDA | ✅ Totale avec LAMBDA | ✅ Totale avec LAMBDA | ❌ Limitée |
| Voir les étapes intermédiaires | ❌ Non | ✅ Oui | ❌ N/A | ❌ Non |
| Accumulation | ✅ Oui | ✅ Oui | ❌ Non | ⚠️ Limitée |
| Complexité | ⭐⭐⭐ Expert | ⭐⭐⭐ Expert | ⭐⭐ Avancé | ⭐ Débutant |
| Cas d'usage typique | Agréger en 1 valeur | Debug ou cumuls | Transformer chaque élément | Calculs simples |

Astuces avancées avec REDUCE
Utilise SCAN pour déboguer
Si ton REDUCE retourne un résultat inattendu, remplace-le temporairement par SCAN avec exactement les mêmes paramètres. SCAN retourne toutes les valeurs intermédiaires de l'accumulateur : tu vois exactement à quelle étape le calcul déraille.
Une fois le problème identifié, tu reviens à REDUCE.
Protège-toi des erreurs avec SIERREUR dans ta LAMBDA
Une seule cellule en erreur peut faire planter toute ton accumulation. Enveloppe les opérations risquées dans SIERREUR : =REDUCE(0; A:A; LAMBDA(acc; val; acc + SIERREUR(val; 0))) ignore les erreurs en les traitant comme 0.
Tu peux aussi retourner l'accumulateur inchangé : SIERREUR(acc*val; acc) pour sauter les valeurs problématiques.
Combine REDUCE et SEQUENCE pour des calculs mathématiques
Pour calculer une factorielle, combine SEQUENCE et REDUCE : =REDUCE(1; SEQUENCE(5); LAMBDA(acc; n; acc*n)) calcule 5! = 120. SEQUENCE(n) génère [1, 2, 3, ..., n] que REDUCE multiplie un par un.
Parfait pour les calculs de probabilités et combinatoires dans les modèles statistiques.
Questions fréquentes
SOMME additionne simplement des valeurs. REDUCE te permet de définir n'importe quelle opération d'accumulation avec LAMBDA : multiplication, concaténation, maximum, minimum, ou des logiques métier ultra-personnalisées. C'est comme si tu pouvais programmer ta propre version de SOMME, mais pour n'importe quoi.
La valeur initiale est le point de départ de ton accumulation. Pour une somme, utilise 0. Pour un produit, utilise 1. Pour de la concaténation, utilise une chaîne vide "". Elle détermine aussi le type de résultat final et ce avec quoi ton premier calcul va commencer.
Oui. REDUCE traite les tableaux 2D élément par élément, ligne par ligne, puis colonne par colonne. Ta fonction LAMBDA reçoit chaque cellule individuellement avec l'accumulateur. C'est parfait pour des calculs complexes sur des matrices ou des plages multi-colonnes.
REDUCE brille quand les fonctions standards ne peuvent pas faire ce que tu veux. Besoin de multiplier tous les éléments sauf ceux supérieurs à 100 ? Concaténer avec des séparateurs variables ? Compter selon une logique métier complexe ? REDUCE te donne le contrôle total sur comment tes données sont agrégées.
Pour aller plus loin
Continue sur ta lancée après la fonction REDUCE : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir




