Qu'est-ce que la fonction SCAN ?
SCAN te sert dès que le total final ne suffit pas et que tu dois voir comment on y arrive, étape par étape : un budget qui dérape à quel mois précisément, un solde qui passe dans le rouge après quelle opération. C'est l'outil qui transforme une liste de mouvements bruts en trajectoire lisible, prête pour un graphique ou une alerte.
En pratique, SCAN est l'outil idéal pour suivre un budget consommé mois après mois, reconstituer le solde bancaire après chaque transaction, tracker le CA cumulé vers un objectif trimestriel, ou surveiller l'avancement d'un projet heure par heure. Il transforme une colonne de valeurs périodiques en une colonne de totaux progressifs, prête à alimenter un graphique ou une alerte de dépassement.
Syntaxe
=SCAN(valeur_initiale; tableau; fonction_lambda)Clique sur un argument pour aller à son explication.
SCAN nécessite Microsoft 365 avec les fonctions LAMBDA (déployées à partir de 2022). Elle n'est pas disponible dans Excel 2021, 2019 ou versions antérieures. Si tu vois #NOM?, vérifie ta version.

Comprendre chaque paramètre de la fonction SCAN
valeur_initiale
: le point de départ de l'accumulationPour un total cumulé, mets 0. Pour un produit cumulé, mets 1. Pour une concaténation de texte, mets "" (chaîne vide). Cette valeur sert uniquement à amorcer le premier tour de calcul : elle n'apparaît pas dans le résultat, donc si ton tableau source a 5 éléments, le résultat en aura 5 lui aussi.
tableau
: la plage de cellules à parcourirÇa peut être une colonne (A1:A10), une ligne (B2:F2) ou un tableau bidimensionnel. SCAN traite chaque élément dans l'ordre : de haut en bas pour une colonne, de gauche à droite pour une ligne.
fonction_lambda
: une fonction LAMBDA avec exactement 2 paramètres : l'accumulateur (le résultat de l'étape précédente) et la valeur courante (l'élément actuel du tableau)Par exemple : LAMBDA(cumul;valeur;cumul+valeur) pour additionner progressivement. Cette fonction est appliquée à chaque élément du tableau, en passant le résultat d'un tour à l'autre.
Nomme tes paramètres de façon explicite : LAMBDA(cumul;vente;cumul+vente) est bien plus lisible que LAMBDA(a;v;a+v) pour toi et pour tes collègues.
Attention : La LAMBDA doit avoir exactement 2 paramètres. Si tu en mets 1 ou 3, Excel retourne #VALEUR!. Même si tu n'utilises qu'un des deux dans le corps de la formule, tu dois les déclarer tous les deux.

Exemples pratiques pas à pas
Comment calculer un total cumulé mois après mois avec la fonction SCAN
Le comité de direction te demande à quel moment de l'année le budget commence à déraper, et une simple liste de dépenses mensuelles ne répond pas à la question. Tu as huit mois de dépenses dans une colonne, de janvier à août, et tu veux le montant consommé à la fin de chaque mois. La fonction SCAN te sort toute la trajectoire d'un coup, prête à être comparée au plan ou tracée en courbe.
- 1Dans une cellule, écris
=SCAN(. - 2En 1er argument : saisis la valeur de départ du cumul,
0. Tes dépenses partent de zéro en janvier, et ce point de départ amorce le calcul sans occuper de ligne dans le résultat. - 3En 2ᵉ argument : sélectionne la colonne des huit dépenses mensuelles,
B2:B9. La fonction SCAN les lit dans l'ordre, de janvier à août, en gardant le total d'une ligne à l'autre. - 4En 3ᵉ argument : écris la fonction LAMBDA qui répète le calcul à chaque ligne,
LAMBDA(cumul; depense; cumul+depense). Ses deux premiers paramètres,cumuletdepense, portent le total des mois déjà lus et le montant du mois en cours, que la fonction SCAN remplit toute seule à chaque tour ;cumul+depenseest l'opération qui fait avancer le total, mémorisée à chaque étape au lieu de ne garder que la dernière. - 5Ferme la parenthèse de la fonction SCAN et appuie sur Entrée. Celle de la fonction LAMBDA a déjà été refermée juste avant.
=SCAN(0; B2:B9; LAMBDA(cumul; depense; cumul+depense))0, ajoute chaque dépense au total de la ligne précédente et garde le résultat de chaque tour au passage. Tu récupères huit valeurs pour huit mois, une par ligne, et tu lis le montant consommé à la fin de chaque mois, pas seulement les 9 500 € atteints en août.Comment calculer un solde après chaque opération avec la fonction SCAN
Ta banque réclame une prévision de trésorerie et tu veux savoir si le compte passe en tension avant la fin du mois. Tu pars d'un solde de 12 000 € et tu as la liste des mouvements prévus, en positif pour les encaissements et en négatif pour les décaissements. La fonction SCAN te donne le solde après chaque opération, ce qui fait ressortir immédiatement le point bas de la période.
- 1Dans une cellule, écris
=SCAN(. - 2En 1er argument : saisis le solde disponible avant la première opération,
12000. Ce montant amorce le calcul sans apparaître dans le résultat, et la ligne « Solde de départ » du tableau ne fait que le rappeler, saisie à la main. - 3En 2ᵉ argument : sélectionne la colonne des cinq mouvements prévus,
B3:B7. Ils sont saisis en montants signés (4 500pour un encaissement,-9 200pour un décaissement), ce qui permet de tout traiter avec une seule addition. - 4En 3ᵉ argument : écris la fonction LAMBDA qui rejoue le calcul à chaque ligne,
LAMBDA(solde; mouvement; solde+mouvement). Ses paramètressoldeetmouvementsont nommés d'après ton métier plutôt que par des lettres isolées, et comme les sorties sont déjà négatives dans la colonne,solde+mouvementles soustrait tout seul sans aucun cas particulier à gérer. - 5Ferme la parenthèse de la fonction SCAN et appuie sur Entrée. Celle de la fonction LAMBDA a déjà été refermée juste avant, et la formule, saisie en
C3face au premier mouvement, déverse les cinq soldes jusqu'àC7.
=SCAN(12000; B3:B7; LAMBDA(solde; mouvement; solde+mouvement))0 mais le solde réellement disponible, et chaque mouvement signé vient s'y ajouter ou s'en retrancher. Le résultat compte cinq valeurs pour cinq opérations, une par ligne à partir du premier virement, et le point bas ressort à 2 600 € juste après le règlement fournisseur.Comment cumuler des taux de croissance successifs avec la fonction SCAN
Un client te demande ce qu'est devenu son placement depuis 2022, année par année et pas seulement aujourd'hui. Tu as 10 000 € investis au départ et le rendement de chaque année, positif ou négatif. La fonction SCAN enchaîne les taux dans l'ordre et te rend le capital atteint à la fin de chaque année, ce qui montre l'effet des années creuses au lieu de le noyer dans le montant final.
- 1Dans une cellule, écris
=SCAN(. - 2En 1er argument : saisis le capital investi au départ,
10000. Tout le calcul part de ce montant, mais il n'occupe pas de ligne dans le résultat : la ligne « Départ » du tableau l'affiche à la main, pour mémoire. - 3En 2ᵉ argument : sélectionne la colonne des quatre rendements annuels,
B3:B6. Ils sont saisis en pourcentages (5 %vaut0,05pour Excel), donc utilisables directement dans un calcul. - 4En 3ᵉ argument : écris la fonction LAMBDA qui rejoue le calcul à chaque année,
LAMBDA(capital; taux; capital*(1+taux)). Ses paramètrescapitalettauxsont la valeur atteinte à la fin de l'année précédente et le rendement de l'année lue ;capital*(1+taux)applique le coefficient multiplicateur de l'année (1,05pour5 %) au capital déjà accumulé, ce qui est le principe des intérêts composés. - 5Ferme la parenthèse de la fonction SCAN et appuie sur Entrée. Celle de la fonction LAMBDA a déjà été refermée juste avant, et la formule, saisie en
C3face à 2022, déverse les quatre capitaux jusqu'àC6.
=SCAN(10000; B3:B6; LAMBDA(capital; taux; capital*(1+taux)))capital*(1+taux) multiplie le capital de l'année précédente par le coefficient de l'année lue. Le -2 % de 2024 s'applique donc aux 10 920 € déjà accumulés et non aux 10 000 € du départ, ce qui est exactement le principe des intérêts composés. Tu obtiens quatre valeurs pour quatre années, de 2022 à 2025.Comment suivre le record de ventes atteint avec les fonctions SCAN et MAX
Ton directeur commercial ne veut pas le cumul des ventes mais le record : quelle est la meilleure semaine atteinte à ce stade de la saison, et à quel moment ce record a été battu. La fonction SCAN ne sert pas qu'à additionner, parce que tu choisis toi-même le calcul que la LAMBDA répète à chaque tour. En remplaçant l'addition par la fonction MAX, l'accumulateur retient le plus haut niveau vu depuis le début au lieu de faire un total.
- 1Dans une cellule, écris
=SCAN(. - 2En 1er argument : saisis la valeur initiale
0. Aucune vente ne peut lui être inférieure, donc elle ne fausse pas le premier record : c'est tout le rôle d'une valeur initiale, amorcer le calcul sans peser sur le résultat. - 3En 2ᵉ argument : sélectionne la colonne des six semaines de ventes,
B2:B7. La fonction SCAN te rend six valeurs, une par semaine, déjà en face des bonnes lignes. - 4En 3ᵉ argument : écris la fonction LAMBDA qui rejoue le calcul à chaque semaine,
LAMBDA(record; vente; MAX(record; vente)). Ses paramètresrecordetventeportent le plus haut niveau atteint jusqu'ici et le montant de la semaine lue, etMAX(record; vente)remplace l'addition pour garder le plus grand des deux à chaque tour. - 5Ferme la parenthèse de la fonction SCAN et appuie sur Entrée. Celles des fonctions LAMBDA et MAX ont déjà été refermées juste avant, et la formule, saisie en
C2face à S1, déverse les six records jusqu'àC7; la colonne reste plate sur les semaines qui ne battent rien et ne monte qu'en S3 et S5.
=SCAN(0; B2:B7; LAMBDA(record; vente; MAX(record; vente)))
Les erreurs fréquentes avec la fonction SCAN
Erreur #VALEUR! : nombre de paramètres LAMBDA incorrect
SCAN exige que ta fonction LAMBDA ait exactement 2 paramètres : l'accumulateur (résultat précédent) et la valeur courante. Si tu en déclares 1 ou 3, Excel retourne #VALEUR!.
Solution : Vérifie que ta LAMBDA suit bien le format LAMBDA(param1;param2;calcul). Même si tu n'utilises qu'un des deux paramètres dans le corps, tu dois les déclarer tous les deux.
Mauvaise valeur initiale qui fausse tous les résultats
Si tu veux un total cumulé mais que tu démarres avec 100 au lieu de 0, tous tes résultats auront 100 de trop. Pour un produit cumulé, démarrer avec 0 donnera toujours 0.
Solution : Choisis la valeur neutre selon ton opération : 0 pour une addition ou soustraction, 1 pour une multiplication ou division, "" (chaîne vide) pour une concaténation de texte. Pour un solde bancaire, utilise le solde réel de départ.
Erreur #NOM? : fonction non disponible dans ta version
SCAN nécessite Microsoft 365 avec les fonctions LAMBDA (déployées à partir de 2022). Elle n'existe pas dans Excel 2021, 2019, 2016 ou versions antérieures.
Solution : Vérifie que tu as Microsoft 365 à jour via Fichier > Compte > Mettre à jour maintenant. Si tu ne peux pas mettre à jour, crée une colonne auxiliaire : en C2 tu mets =B2, puis en C3 tu mets =C2+B3 que tu copies vers le bas. Tu obtiens le même cumul, ligne après ligne.
Erreur #PROPAGATION! : résultat qui déborde sur d'autres données
SCAN retourne un tableau dynamique qui a besoin d'espace. Si tu as des données dans les cellules en dessous (ou à côté), Excel ne peut pas déverser le résultat et affiche #PROPAGATION!.
Solution : Libère autant de cellules qu'il y a d'éléments dans ton tableau source, puisque SCAN rend un résultat de la même taille que sa source. Supprime ou déplace les données qui occupent cet espace.

SCAN vs REDUCE vs MAP
Ces trois fonctions LAMBDA itèrent sur un tableau, mais pour des objectifs différents. SCAN est la seule à conserver toutes les étapes intermédiaires, ce qui en fait l'outil des visualisations progressives.
| Critère | SCAN | REDUCE | MAP |
|---|---|---|---|
| Retourne les valeurs intermédiaires | Oui (toutes les étapes) | Non (valeur finale uniquement) | Oui (chaque transformation) |
| Calculs cumulatifs | Parfait | Oui (résultat final) | Non |
| Transformations indépendantes | Non (dépend des précédents) | Non | Parfait |
| Taille du résultat | N éléments (même taille) | 1 valeur unique | N éléments (même taille) |
| Cas d'usage typique | Totaux cumulés, soldes progressifs | Total final, agrégation | Calcul sur chaque ligne indépendamment |
| Disponibilité | Microsoft 365 uniquement | Microsoft 365 uniquement | Microsoft 365 uniquement |

Astuces avancées avec SCAN
Le résultat est déjà aligné sur ta source
Contrairement à une idée répandue, SCAN n'ajoute pas la valeur initiale en tête de son résultat. =SCAN(0;A1:A10;LAMBDA(c;v;c+v)) rend exactement dix valeurs pour dix cellules, déjà en face des bonnes lignes.
Tu peux donc poser ta formule juste à côté d'une colonne de dates ou de libellés, sans rien avoir à raboter derrière.
Alimente directement un graphique en courbe
Le tableau retourné par SCAN est parfait pour un graphique en courbe de progression. Sélectionne la plage déversée (par exemple C2# si SCAN est en C2), insère un graphique en courbes, et tu obtiens immédiatement la visualisation de la progression.
Pour aller plus loin, ajoute une deuxième série avec l'objectif prorata et tu vois en un coup d'oeil si la trajectoire est bonne.
Nomme les paramètres LAMBDA de façon explicite
Au lieu de LAMBDA(a;v;a+v), écris LAMBDA(cumul;vente;cumul+vente). Cette habitude rend ta formule immédiatement compréhensible par tes collègues et par toi-même dans 6 mois, sans avoir à reconstituer la logique.
Quand tu imbriques des SCAN dans des formules plus complexes, des noms explicites évitent les confusions entre les différents accumulateurs.
Questions fréquentes
REDUCE retourne uniquement la valeur finale après toutes les itérations, comme un total global. SCAN retourne un tableau complet contenant la valeur à chaque étape intermédiaire, ce qui te permet de voir l'évolution du calcul pas à pas. C'est comme voir le film complet avec SCAN, contre voir uniquement la fin avec REDUCE. Pour un rapport mensuel de dépenses cumulées, tu as besoin de SCAN ; pour simplement connaître le total annuel, REDUCE suffit.
Non. La valeur initiale sert seulement à amorcer le premier tour de calcul, puis elle disparaît. Le tableau rendu par SCAN a exactement la même taille que ta source : =SCAN(0;A1:A3;LAMBDA(c;v;c+v)) sur les valeurs 1, 2 et 3 rend trois résultats, 1, 3 et 6, et non quatre.
C'est une différence avec le « scan » d'autres langages, qui eux ouvrent la liste avec la valeur initiale. Dans Excel, ton résultat s'aligne donc tout seul sur les lignes de ta source, sans traitement supplémentaire.
Utilise =SCAN(0;ta_plage;LAMBDA(total;valeur;total+valeur)). Cela génère un tableau où chaque cellule contient la somme de toutes les valeurs précédentes plus la valeur courante. Parfait pour suivre des ventes cumulées ou des budgets progressifs.
Si tu veux partir d'un solde non nul (par exemple 50000 € en caisse au départ), remplace le 0 initial par ce montant : =SCAN(50000;B2:B12;LAMBDA(solde;mvt;solde+mvt)).
Oui, SCAN parcourt les tableaux 2D cellule par cellule, ligne par ligne, de gauche à droite puis de haut en bas. Le résultat conserve exactement la forme du tableau d'entrée, sans cellule supplémentaire : sur un bloc de deux lignes et deux colonnes contenant 1, 2, 3 et 4, tu récupères un bloc de même forme avec les cumuls 1, 3, 6 et 10.
Mais pour la plupart des cas d'usage métier (totaux cumulés, soldes), on travaille avec des colonnes ou lignes simples, ce qui est plus intuitif à interpréter.
Non. SCAN nécessite Microsoft 365 avec les fonctions LAMBDA activées, déployées à partir de 2022. Elle n'est pas disponible dans Excel 2021, 2019 ou versions antérieures.
Si tu n'as pas accès à SCAN, tu peux créer des colonnes auxiliaires avec des formules qui référencent la cellule précédente : en C2 tu mets =B2, puis en C3 tu mets =C2+B3, et tu copies vers le bas. C'est plus laborieux mais donne le même résultat.
Pour aller plus loin
Continue sur ta lancée après la fonction SCAN : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir




