En bref —
MAP,REDUCE,SCAN,BYROWetBYCOLsont des fonctions d'ordre supérieur : elles prennent unLAMBDAet l'exécutent sur tout un tableau — unFor Eachsans macro. Le piège n°1 : le LAMBDA de BYROW/BYCOL doit renvoyer une valeur par ligne/colonne, sinon vous obtenez#CALC!. Choisissez la fonction d'assistance selon la forme de la réponse voulue. Excel 365 et 2024+.
=MAP(A2:A100, LAMBDA(v, IF(v<0, 0, v))) ' transforme chaque cellule
=BYROW(data, LAMBDA(row, SUM(row))) ' un total par ligne
=REDUCE(0, A2:A100, LAMBDA(acc, v, acc + v)) ' réduit à une valeur unique
LET vous a donné les variables.
LAMBDA vous a donné les fonctions. Les fonctions
d'assistance vous donnent la dernière pièce d'un langage de programmation : les
boucles. Chacune prend un LAMBDA et l'exécute sur un tableau, de sorte que vous
n'écrivez jamais For Each — vous décrivez quoi faire à chaque élément, et Excel
itère.
Ce que vous allez apprendre
- Le modèle mental : les boucles — donnez un LAMBDA à un tableau
- Qui fait quoi : MAP (transformer), REDUCE (réduire), SCAN (totaux cumulés), BYROW/BYCOL (une valeur par ligne/colonne)
- La règle n°1 : BYROW doit renvoyer une valeur unique — la correction de
#CALC!pour « une somme par ligne » - Le motif de l'accumulateur de REDUCE — et quand un simple SUMIFS reste gagnant
Le modèle mental : ce sont les boucles
Il y a cinq fonctions d'assistance, et elles se répartissent nettement selon la forme qui sort :
- MAP — transforme chaque élément → un tableau de même forme (10 cellules en entrée, 10 en sortie).
- REDUCE — réduit tout un tableau à une seule valeur (un accumulateur courant : total, concaténation, maximum).
- SCAN — comme REDUCE, mais conserve chaque étape intermédiaire → un total cumulé déversé le long de la colonne.
- BYROW / BYCOL — exécute le LAMBDA sur chaque ligne (ou colonne) entière → une valeur par ligne (ou colonne).
Une fois que vous les triez par forme de sortie — même forme, une valeur, chaque étape, une-par-ligne — choisir la bonne fonction d'assistance cesse d'être un coup de dés.
Modèles à copier-coller
MAP — appliquer une transformation à chaque élément :
=MAP(A2:A100, LAMBDA(v, IF(v<0, 0, v)))
REDUCE — réduire un tableau à une valeur unique (l'accumulateur acc reporte le
résultat) :
=REDUCE(0, A2:A100, LAMBDA(acc, v, acc + v))
SCAN — même idée, mais en déversant chaque étape (un total cumulé) :
=SCAN(0, A2:A100, LAMBDA(acc, v, acc + v))
BYROW — une valeur par ligne (ici, le maximum de chaque ligne) :
=BYROW(A2:D100, LAMBDA(row, MAX(row)))
La règle qui casse BYROW : renvoyer une valeur par ligne
C'est la fonction d'assistance que les gens ratent, et le symptôme est #CALC!. Le
LAMBDA que vous passez à BYROW (ou BYCOL) doit renvoyer une valeur unique pour chaque
ligne — un nombre, une chaîne de texte, une seule cellule. S'il renvoie un tableau,
BYROW ne peut pas le faire entrer et lève #CALC!.
=BYROW(data, LAMBDA(row, SUM(row))) ' un nombre par ligne -> fonctionne
=BYROW(data, LAMBDA(row, row*2)) ' #CALC! — row*2 est un tableau, pas une valeur
Ce second cas est en réalité un travail pour MAP (transformer chaque élément), pas
pour BYROW. L'erreur va aussi dans l'autre sens : les gens sortent MAP pour obtenir
« une somme par ligne » et n'arrivent à rien — parce que MAP agit élément par élément
et n'agrège jamais une ligne. Si vous voulez une valeur par ligne, c'est BYROW. Si
vous voulez transformer chaque cellule, c'est MAP. C'est la forme de sortie qui
tranche.
L'accumulateur de REDUCE : le seul motif à intérioriser
REDUCE est la plus puissante et la moins intuitive, à cause de acc —
l'accumulateur qui reporte le résultat courant d'un élément au suivant. Lisez
LAMBDA(acc, v, …) comme « voici le résultat jusqu'ici (acc) et la valeur suivante
(v) ; renvoie le nouveau résultat-jusqu'ici. »
- Somme :
LAMBDA(acc, v, acc + v)en partant de0 - Concaténation :
LAMBDA(acc, v, acc & ", " & v)en partant de"" - Comptage conditionnel :
LAMBDA(acc, v, acc + (v>100))en partant de0
Une fois que acc fait tilt, REDUCE gère les tâches du type « parcourir la liste et
construire quelque chose » qui vous forçaient autrefois à passer par VBA — soldes
courants avec règles, agrégations personnalisées, boucles d'analyse.
Le verdict : quand un simple agrégat reste gagnant
Ces fonctions d'assistance itèrent dans le moteur de calcul et peuvent être lentes
sur de très grands tableaux. Pour une simple somme, SUM/SUMPRODUCT/SUMIFS
(SOMME / SOMMEPROD / SOMME.SI.ENS) sont plus rapides et plus simples — réservez les
fonctions d'assistance aux cas où la logique par élément est vraiment sur mesure, pas
quand un agrégat intégré fait déjà le travail.
| Vous voulez… | Fonction d'assistance | Forme de sortie |
|---|---|---|
| Transformer chaque élément | MAP | Même forme que l'entrée |
| Une valeur par ligne | BYROW | Une colonne de résultats |
| Une valeur par colonne | BYCOL | Une ligne de résultats |
| Réduire à une valeur unique | REDUCE | Une cellule |
| Un total cumulé le long des lignes | SCAN | Même forme, cumulatif |
Si vous étirez une formule de total cumulé sur 10 000 lignes, c'est un SCAN ; si vous
ajoutez une colonne d'aide juste pour calculer une valeur par ligne, c'est un BYROW.
Mais si un SUMIFS répond déjà à la question, utilisez-le — les fonctions d'assistance
sont faites pour la logique sur mesure, pas pour réimplémenter des agrégats.
Comment ExcelMaster vous aide
Les fonctions d'ordre supérieur sont la partie la plus ardue de l'Excel moderne —
acc, formes de sortie, MAP-contre-BYROW — et exactement là où un copilote IA fait
gagner le plus de temps. ExcelMaster transforme
« donne-moi le maximum de chaque ligne » ou « un solde courant qui se remet à zéro
chaque mois » en la bonne formule MAP/REDUCE/BYROW, choisit la fonction d'assistance
adaptée à la forme de sortie voulue, et explique l'accumulateur étape par étape. Quand
une fonction d'assistance lève #CALC!, il vous dit s'il fallait BYROW au lieu de MAP —
et la réécrit. Essayez-le sur vos propres données.
Foire aux questions
Quelles sont les fonctions d'assistance LAMBDA dans Excel ?
MAP, REDUCE, SCAN, BYROW et BYCOL sont des fonctions d'ordre supérieur :
chacune prend un LAMBDA et l'exécute sur tout un tableau. Elles vous permettent de
boucler sur des données dans une formule — transformer, agréger ou accumuler — sans
écrire de macro VBA.
Pourquoi BYROW renvoie-t-il #CALC! ?
Le LAMBDA que vous avez passé renvoie un tableau au lieu d'une valeur unique. BYROW a
besoin d'une valeur par ligne — agrégez la ligne avec SUM(row), MAX(row), etc. Si
vous voulez en fait transformer chaque élément, utilisez MAP, pas BYROW.
Quelle est la différence entre MAP et BYROW ?
MAP agit élément par élément et renvoie un tableau de même forme que l'entrée.
BYROW agit sur des lignes entières et renvoie une valeur par ligne. Utilisez MAP pour
transformer chaque cellule ; utilisez BYROW pour obtenir un total, un maximum ou un
comptage par ligne.
Comment fonctionne REDUCE dans Excel ?
REDUCE(initial, tableau, LAMBDA(acc, v, …)) parcourt le tableau en reportant un
accumulateur acc. Pour chaque valeur v, il calcule un nouveau acc.
=REDUCE(0, A2:A100, LAMBDA(acc, v, acc+v)) additionne la plage ; en partant de ""
avec acc & v, il la concatène.
Quelles versions d'Excel disposent de MAP, REDUCE et BYROW ?
Les fonctions d'assistance LAMBDA sont disponibles dans Excel 2024 et Microsoft 365 pour Windows et Mac. Elles ne sont pas dans Excel 2021, 2019 ni 2016.
Testé dans
Testé dans : Excel 365 (Windows 11) – dernière vérification le 22/06/2026.
Guides associés : Excel LAMBDA · Excel LET · Excel SORT · Excel SEQUENCE
