Aller au contenu principal

Qu'est-ce que la fonction REDUCE ?

Définition
La fonction REDUCE parcourt chaque élément d'un tableau et applique une fonction LAMBDA personnalisée pour combiner progressivement tous les éléments en une seule valeur finale.

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

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?.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

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.

1

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).

2

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.

3

lambda

: ta fonction LAMBDA personnalisée qui définit comment combiner l'accumulateur avec chaque valeur

Elle 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).

Le combo gagnant
REDUCE et SCAN sont jumelles : elles accumulent de la même façon, mais SCAN renvoie toutes les étapes intermédiaires au lieu de la seule valeur finale. Quand un REDUCE donne un résultat bizarre, remplace-le temporairement par SCAN avec les mêmes arguments pour voir exactement où le calcul déraille.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =REDUCE(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 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é ici cumul) et la dépense courante ensuite, puis vient le calcul cumul+valeur renvoyé à chaque tour, qui devient le cumul du tour suivant.
  5. 5
    Ferme 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.
Au final, ta formule devrait ressembler à ça :=REDUCE(0; B2:B9; LAMBDA(cumul; valeur; cumul+valeur))
Explication
La fonction REDUCE part de zéro et ajoute chaque dépense au total en cours : 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =REDUCE(.
  2. 2
    En 1er argument : saisis 1, autrement dit 100 % du capital de départ. C'est l'élément neutre de la multiplication, alors qu'un 0 à cette place écraserait tout le calcul et renverrait 0 sans afficher la moindre erreur.
  3. 3
    En 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.
  4. 4
    En 3ᵉ argument : écris la règle de capitalisation et referme-la, LAMBDA(capital; taux; capital*(1+taux)). L'accumulateur capital porte le coefficient déjà accumulé et le paramètre taux reçoit le pourcentage de l'année courante, puis le calcul capital*(1+taux) conserve le capital et n'ajoute que le gain de l'année, là où un simple capital*taux ne garderait que les intérêts.
  5. 5
    Ferme 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,2757 en ressort.
Voici la formule que tu obtiens à la fin :=REDUCE(1; B2:B6; LAMBDA(capital; taux; capital*(1+taux)))
Explication
Ici, la fonction REDUCE multiplie le capital en cours par 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.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =REDUCE(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 3ᵉ argument : écris la règle d'assemblage et referme-la, LAMBDA(chaine; ville; SI(chaine=""; ville; chaine&" > "&ville)). L'accumulateur chaine porte l'itinéraire déjà construit et le paramètre ville reç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.
  5. 5
    Ferme 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.
Une fois les morceaux assemblés, ta formule donne ça :=REDUCE(""; B2:B5; LAMBDA(chaine; ville; SI(chaine=""; ville; chaine&" > "&ville)))
Explication
La fonction SI imbriquée dans la LAMBDA distingue le premier tour des suivants : sans elle, l'itinéraire démarrerait par un séparateur orphelin (> Lyon > Dijon). La fonction REDUCE ne rend que l'assemblage terminé, jamais les bouts de phrase construits en chemin.
Exemple 4

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.

Les étapes
  1. 1
    Dans une cellule, écris =REDUCE(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 3ᵉ argument : écris la règle d'accumulation et referme-la, LAMBDA(cumul; releve; cumul+SIERREUR(releve; 0)). L'accumulateur cumul garde le total valide en cours et le paramètre releve reçoit la cellule lue, qui vaut parfois #VALEUR!, puis la fonction SIERREUR ramène toute cellule en erreur à 0 avant de l'ajouter, au lieu de la laisser faire échouer l'accumulation.
  5. 5
    Ferme 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.
En mettant tout bout à bout, tu écris :=REDUCE(0; B2:B7; LAMBDA(cumul; releve; cumul+SIERREUR(releve; 0)))
Explication
Sans la fonction SIERREUR, la première erreur rencontrée contaminerait le cumul et la formule entière renverrait #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).
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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.

Le conseil du pro
Prends toujours l'élément neutre de ton opération comme valeur de départ : 0 pour une addition, 1 pour une multiplication, une chaîne vide pour une concaténation. Un 0 en tête d'une multiplication écrase tout le calcul et te renvoie 0, sans la moindre erreur affichée.
Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreREDUCESCANMAPFonctions classiques
Type de résultatUne seule valeurTableau des étapesTableau 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 typiqueAgréger en 1 valeurDebug ou cumulsTransformer chaque élémentCalculs simples
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec REDUCE

1Astuce

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.

2Astuce

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.

3Astuce

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.

FAQ

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.

Ressources

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