Fonction REDUCE ExcelGuide Complet 2026 avec Exemples
REDUCE (REDUCE en anglais) 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.
Dans ce guide, tu vas découvrir comment utiliser REDUCE pour des calculs avancés que SOMME, PRODUIT ou MAX ne peuvent pas gérer. Que tu doives multiplier des valeurs avec conditions, concaténer intelligemment du texte, ou créer des agrégations métier complexes, REDUCE est ton meilleur allié.
Syntaxe de la fonction REDUCE
=REDUCE(valeur_initiale; tableau; lambda)La fonction REDUCE prend trois arguments obligatoires. Elle parcourt chaque élément de ton tableau et applique ta fonction LAMBDA personnalisée pour les combiner progressivement en une seule valeur finale. C'est l'outil ultime pour les agrégations sur-mesure.
Comprendre chaque paramètre de la fonction REDUCE
valeur_initiale
(obligatoire)C'est la valeur de départ de ton accumulateur, celle avec laquelle tu commences ton 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 !
tableau
(obligatoire)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
(obligatoire)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. C'est ici que tu définis toute ta logique métier personnalisée !
Astuce de pro : Pour déboguer une formule REDUCE qui ne fonctionne pas comme prévu, 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 !
Comment fonctionne REDUCE pas à pas
Imagine que tu as le tableau [2, 3, 4] et tu veux calculer le produit (2 × 3 × 4 = 24). Voici exactement ce que fait REDUCE avec =REDUCE(1; [2,3,4]; LAMBDA(acc; val; acc*val)) :
LAMBDA reçoit : acc = 1, val = 2
Calcul : 1 × 2 = 2
Nouvel accumulateur = 2
LAMBDA reçoit : acc = 2, val = 3
Calcul : 2 × 3 = 6
Nouvel accumulateur = 6
LAMBDA reçoit : acc = 6, val = 4
Calcul : 6 × 4 = 24
Nouvel accumulateur = 24
À chaque étape, REDUCE prend le résultat précédent (l'accumulateur) et la prochaine valeur du tableau, les passe à ta LAMBDA, et stocke le résultat retourné comme nouvel accumulateur. Ce processus se répète jusqu'à avoir parcouru toutes les valeurs. La dernière valeur de l'accumulateur devient le résultat final.
Bon à savoir : Si ton tableau contient 100 cellules, ta fonction LAMBDA sera appelée exactement 100 fois. Chaque appel traite une cellule et met à jour l'accumulateur pour l'appel suivant. C'est pour ça que REDUCE est si puissant : il peut gérer des logiques d'accumulation arbitrairement complexes !
Exemples pratiques métier pas à pas
Exemple 1 – Analyste financier : calculer le rendement composé sur plusieurs années
Tu es analyste financier et 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).
REDUCE applique chaque taux au capital accumulé : 1 × 1,05 × 1,07 × 1,03 × 1,06 × 1,04 = 1,2679
| 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)))On part de 1 (100% du capital initial). À chaque année, on multiplie le capital accumulé par (1 + taux). Après 5 ans avec ces taux, un placement de 10 000€ vaudrait 12 679€. REDUCE gère parfaitement les calculs d'accumulation successive !
Exemple 2 – Data analyst : construire un identifiant unique depuis plusieurs colonnes
Tu es data analyst et 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 doit être REG-75-4523 avec des tirets entre chaque partie, mais uniquement quand les valeurs sont présentes.
REDUCE concatène intelligemment avec des tirets uniquement entre les parties.
| 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)))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" pour obtenir "REG-75". Idem pour "4523". Résultat : pas de tiret au début !
Exemple 3 – Contrôleur qualité : calculer le taux de conformité cumulé
Tu es contrôleur qualité et 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.
Chaque test élimine une proportion : 1000 × 0,95 × 0,92 × 0,98 = 856,24 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))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.
Exemple 4 – Manager commercial : trouver le meilleur vendeur du trimestre avec son chiffre
Tu es manager commercial et 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.
REDUCE compare chaque vendeur et garde le nom + CA du meilleur.
| A | B | |
|---|---|---|
| 1 | Vendeur | CA (k€) |
| 2 | Marie | 145 |
| 3 | Thomas | 198 |
| 4 | Sophie | 167 |
| 5 | Lucas | 182 |
| 6 | Meilleur | Thomas: 198k€ |
=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)))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 !
Cas d'usage avancés avec REDUCE
Calcul de factorielles pour les statistiques
Tu peux calculer n! (factorielle de n) en combinant SEQUENCE et REDUCE : =REDUCE(1; SEQUENCE(5); LAMBDA(acc; n; acc*n)) pour calculer 5! = 120. Parfait pour les calculs de probabilités et combinatoires dans les modèles statistiques.
SEQUENCE(n) génère [1,2,3,...,n]. REDUCE les multiplie tous. Remplace n par n'importe quelle valeur pour calculer sa factorielle instantanément !
Construction de requêtes SQL ou d'URLs dynamiques
Génère automatiquement des requêtes SQL ou des URLs avec paramètres en accumulant des fragments conditionnels. Par exemple, construire WHERE clause1 AND clause2 AND clause3 uniquement pour les conditions remplies dans ton tableau Excel.
Combine REDUCE avec des conditions SI pour ajouter des paramètres uniquement quand les cellules ne sont pas vides. Super utile pour générer des filtres dynamiques !
Agrégation de scores pondérés avec règles métier
Calcule des moyennes pondérées où les poids dépendent des valeurs elles-mêmes (ex: ignorer les notes en dessous de 5, doubler le poids des notes parfaites). REDUCE te donne ce contrôle granulaire impossible avec MOYENNE.PONDEREE.
Ton LAMBDA peut contenir plusieurs SI imbriqués pour ajuster le poids ou la valeur en fonction de critères complexes. C'est là que REDUCE devient vraiment puissant !
Simulation de suites mathématiques (Fibonacci, etc.)
Bien que limité, REDUCE peut simuler des séquences où chaque terme dépend du précédent. Pour Fibonacci par exemple, l'accumulateur peut stocker les deux derniers termes sous forme de tableau, permettant de calculer le suivant.
Astuce : pour stocker plusieurs valeurs dans l'accumulateur, utilise un tableau comme valeur initiale et retourne un tableau depuis LAMBDA. Ça ouvre des possibilités infinies !
Les erreurs fréquentes et comment les corriger
#CALC! - Ta 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, exactement deux. Si tu vois #CALC!, c'est probablement ça.
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, tu dois quand même les déclarer tous les deux.
Mauvaise valeur initiale qui fausse tout le calcul
Si tu utilises 0 comme valeur initiale pour une multiplication, tu obtiendras toujours 0 (car 0 × n'importe quoi = 0). Si tu utilises 1 pour une addition, tous tes résultats auront +1 en trop. C'est une erreur très commune !
Solution : Choisis la valeur neutre appropriée : 0 pour addition/soustraction, 1 pour multiplication/division, "" (chaîne vide) pour concaténation, FAUX pour OR logique, VRAI pour AND logique. Demande-toi : "Quelle valeur, combinée avec ma première donnée, me donnera juste cette première donnée ?"
#VALEUR! - Incohérence de type entre l'accumulateur et le retour
Si ta valeur initiale est un nombre mais qu'à un moment ta LAMBDA retourne du texte (ou l'inverse), Excel ne sait plus quoi faire et 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 de données que la valeur initiale. Si tu commences avec 0 (nombre), LAMBDA doit toujours retourner un nombre. Utilise TEXTE() ou VALEUR() pour convertir si nécessaire.
#NOM? - REDUCE n'est pas disponible
REDUCE fait partie des fonctions LAMBDA introduites avec Microsoft 365. Si tu as Excel 2019, 2016 ou une version antérieure, cette fonction n'existe pas encore. C'est très frustrant mais c'est ainsi.
Solution : Vérifie ta version d'Excel (Fichier → Compte). Pour utiliser REDUCE, tu as besoin de Microsoft 365 à jour. Sinon, tu devras utiliser des formules matricielles classiques (avec Ctrl+Maj+Entrée) ou passer par VBA.
REDUCE vs SCAN vs MAP vs fonctions classiques
| 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 | ❌ 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 |
Utilise REDUCE quand tu veux agréger un tableau en une seule valeur avec une logique personnalisée. Utilise SCAN si tu veux voir toutes les étapes intermédiaires (super pour déboguer !). Utilise MAP pour transformer chaque élément sans accumulation. Et utilise les fonctions classiques (SOMME, PRODUIT, etc.) pour les cas simples et standards.
Questions fréquentes
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 faire 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.
Bonnes pratiques pour maîtriser REDUCE
Teste toujours avec un petit tableau d'abord
Avant d'appliquer REDUCE sur 1000 lignes, teste ta logique LAMBDA sur 2-3 valeurs simples. Ça te permet de vérifier rapidement que ton accumulation fonctionne correctement sans perdre 30 minutes à déboguer une formule complexe.
Crée un petit tableau de test avec les cas limites : valeurs nulles, négatives, texte vide, etc. Si ça marche sur ces cas, ça marchera sur tout !
Utilise des noms de paramètres explicites
Au lieu de LAMBDA(acc; val; ...), utilise des noms qui ont du sens pour ton cas : LAMBDA(total_ventes; vente_du_jour; ...) ou LAMBDA(texte_complet; mot; ...). Dans 3 mois, tu te remercieras !
Les noms explicites rendent ton code auto-documenté. Quand tu relis la formule, tu comprends immédiatement ce que fait chaque partie sans avoir à déchiffrer.
Protège-toi des erreurs avec SIERREUR
Enveloppe les opérations risquées dans SIERREUR pour éviter qu'une seule cellule en erreur ne fasse planter toute ton accumulation : LAMBDA(acc; val; acc + SIERREUR(val; 0)). Ça ignore les erreurs en les traitant comme 0.
Tu peux aussi utiliser SIERREUR pour retourner l'accumulateur inchangé en cas d'erreur : SIERREUR(acc*val; acc). Comme ça, les erreurs sont juste ignorées.
Remplace par SCAN pour déboguer
Si ton REDUCE ne retourne pas le bon résultat, remplace-le temporairement par SCAN (avec exactement les mêmes paramètres). SCAN te montrera toutes les valeurs intermédiaires de l'accumulateur, te permettant de voir exactement où ça déraille.
SCAN est ton meilleur ami pour le débogage ! Une fois que tu as identifié le problème, tu reviens à REDUCE. C'est comme avoir un mode "pas-à-pas" intégré.
Choisis la bonne valeur neutre
La valeur initiale doit être l'élément neutre de ton opération : 0 pour addition (+), 1 pour multiplication (×), "" pour concaténation, une très grande valeur pour trouver un minimum, une très petite pour trouver un maximum. Demande-toi : "Quelle valeur ne changera pas le premier élément ?"
Pour trouver le bon élément neutre, teste mentalement : "Si je combine cette valeur initiale avec mon premier élément selon ma logique, est-ce que j'obtiens juste mon premier élément ?" Si oui, c'est bon !
Les fonctions similaires à REDUCE
Maîtrise les fonctions LAMBDA avancées
Tu maîtrises maintenant REDUCE ! Rejoins Le Dojo Club pour découvrir SCAN, MAP et toutes les fonctions d'accumulation qui vont transformer ta façon de travailler sur Excel.
Essayer pendant 30 jours