REDUCE est une fonction révolutionnaire qui te permet d'agréger tous les éléments d'un tableau en une seule valeur en appliquant ta propre logique avec LAMBDA. C'est comme avoir un super-pouvoir pour créer tes propres fonctions d'accumulation personnalisées, impossibles avec les fonctions standards.
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 de la fonction REDUCE
=REDUCE(valeur_initiale; tableau; lambda)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).
Astuce : Pour déboguer une formule REDUCE qui ne donne pas le bon résultat, remplace temporairement REDUCE par SCAN. SCAN retourne toutes les valeurs intermédiaires au lieu d'une seule, te permettant de voir exactement où ton calcul déraille.
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).
Pas envie d'écrire la formule REDUCE à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Analyste financier : calculer le rendement composé sur plusieurs années
Tu dois calculer le rendement total d'un investissement sur 5 ans où les taux varient chaque année. Tu ne peux pas simplement additionner les taux : tu dois appliquer chaque taux au résultat de l'année précédente (intérêts composés).
On part de 1 (100% du capital initial). À chaque année, REDUCE multiplie le capital accumulé par (1 + taux) : 1 × 1,05 × 1,07 × 1,03 × 1,06 × 1,04 = 1,2679. Après 5 ans avec ces taux, un placement de 10 000 € vaudrait 12 679 €. REDUCE gère parfaitement les calculs d'accumulation successive.
| A | B | |
|---|---|---|
| 1 | Année | Taux annuel |
| 2 | 2020 | 5% |
| 3 | 2021 | 7% |
| 4 | 2022 | 3% |
| 5 | 2023 | 6% |
| 6 | 2024 | 4% |
| 7 | Valeur finale | 126,79% |
=REDUCE(1; B2:B6; LAMBDA(capital; taux; capital * (1 + taux)))Data analyst : construire un identifiant unique depuis plusieurs colonnes
Tu dois créer un identifiant unique pour chaque client en combinant son code région, son numéro de département et son ID. Le format cible est REG-75-4523 avec des tirets entre chaque partie, mais uniquement quand les valeurs sont présentes.
On commence avec une chaîne vide. Pour la première partie (REG), comme l'accumulateur est vide, on retourne juste "REG". Pour la deuxième (75), on a déjà "REG", donc on ajoute "-75". Idem pour "4523". Résultat : pas de tiret en début de chaîne.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Code région | Département | ID client | ID complet |
| 2 | REG | 75 | 4523 | REG-75-4523 |
| 3 | IDF | 92 | 1890 | IDF-92-1890 |
| 4 | ARA | 69 | 7621 | ARA-69-7621 |
=REDUCE(""; A2:C2; LAMBDA(texte; partie; SI(texte=""; partie; texte&"-"&partie)))Contrôleur qualité : calculer le taux de conformité cumulé
Tu dois calculer combien de pièces passent tous les contrôles successifs. Une pièce doit passer le test 1 (95% de réussite), puis le test 2 (92%), puis le test 3 (98%). Tu veux savoir combien de pièces sur 1000 arrivent au bout.
On commence avec 1000 pièces. Après le premier test, il reste 1000 × 0,95 = 950 pièces. Après le deuxième, 950 × 0,92 = 874 pièces. Après le troisième, 874 × 0,98 = 856 pièces. REDUCE multiplie successivement les taux au nombre de pièces restantes.
| A | B | |
|---|---|---|
| 1 | Contrôle | Taux de passage |
| 2 | Test résistance | 95% |
| 3 | Test étanchéité | 92% |
| 4 | Test conformité | 98% |
| 5 | Pièces OK/1000 | 856 pièces |
=REDUCE(1000; B2:B4; LAMBDA(pieces; taux; pieces * taux))Manager commercial : trouver le meilleur vendeur du trimestre avec son chiffre
Tu veux identifier non seulement le CA maximum, mais aussi mémoriser quel vendeur l'a réalisé. MAX ne peut pas faire ça, mais REDUCE oui en stockant les deux infos dans l'accumulateur.
L'accumulateur stocke une chaîne "Nom: Valeur". À chaque ligne, on extrait le CA courant, on le compare au maximum stocké, et si c'est plus grand, on met à jour l'accumulateur avec le nouveau nom et le nouveau maximum. À la fin, on a directement "Thomas: 198" sans calcul supplémentaire.
| A | B | |
|---|---|---|
| 1 | Vendeur | CA (k€) |
| 2 | Marie | 145 |
| 3 | Thomas | 198 |
| 4 | Sophie | 167 |
| 5 | Lucas | 182 |
| 6 | Meilleur | Thomas: 198 |
=REDUCE("Aucun: 0"; A2:B5; LAMBDA(best; ligne; SI(INDEX(ligne;2)>VALEUR(STXT(best;CHERCHE(":";best)+2;100)); INDEX(ligne;1)&": "&INDEX(ligne;2); best)))Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes 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 VALEUR() 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 sur la fonction REDUCE
Quelle est la différence entre REDUCE et SOMME ?
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.
À quoi sert la valeur initiale dans REDUCE ?
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.
REDUCE peut-il traiter des tableaux à deux dimensions ?
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.
Comment REDUCE gère-t-il les valeurs vides ou les erreurs ?
REDUCE traite les cellules vides comme des valeurs nulles (0 pour les nombres). Pour gérer les erreurs proprement, utilise SIERREUR dans ta LAMBDA : LAMBDA(acc; val; acc + SIERREUR(val; 0)). Ça évite que toute ton accumulation plante à cause d'une seule cellule en erreur.
Pourquoi utiliser REDUCE au lieu de fonctions classiques ?
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
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois

