Aller au contenu principal

Qu'est-ce que la fonction SCAN ?

Définition
La fonction SCAN parcourt chaque élément d'un tableau et applique une fonction LAMBDA de manière cumulative, en retournant un tableau contenant toutes les valeurs intermédiaires. Le tableau résultant a exactement la même taille que le tableau source : la valeur initiale amorce le calcul sans occuper de place dans le résultat.

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

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.

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

Comprendre chaque paramètre de la fonction SCAN

1

valeur_initiale

: le point de départ de l'accumulation

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

2

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.

3

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.

Le savais-tu ?
SCAN te renvoie exactement autant de valeurs que ta plage de départ. La valeur initiale sert à amorcer le premier calcul, mais elle n'apparaît jamais dans le résultat : cinq valeurs en entrée donnent cinq valeurs en sortie, déjà alignées sur tes lignes.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =SCAN(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 3ᵉ argument : écris la fonction LAMBDA qui répète le calcul à chaque ligne, LAMBDA(cumul; depense; cumul+depense). Ses deux premiers paramètres, cumul et depense, 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+depense est l'opération qui fait avancer le total, mémorisée à chaque étape au lieu de ne garder que la dernière.
  5. 5
    Ferme 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.
Au final, ta formule devrait ressembler à ça :=SCAN(0; B2:B9; LAMBDA(cumul; depense; cumul+depense))
Explication
La fonction part de la valeur initiale 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =SCAN(.
  2. 2
    En 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.
  3. 3
    En 2ᵉ argument : sélectionne la colonne des cinq mouvements prévus, B3:B7. Ils sont saisis en montants signés (4 500 pour un encaissement, -9 200 pour un décaissement), ce qui permet de tout traiter avec une seule addition.
  4. 4
    En 3ᵉ argument : écris la fonction LAMBDA qui rejoue le calcul à chaque ligne, LAMBDA(solde; mouvement; solde+mouvement). Ses paramètres solde et mouvement sont 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+mouvement les soustrait tout seul sans aucun cas particulier à gérer.
  5. 5
    Ferme 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 C3 face au premier mouvement, déverse les cinq soldes jusqu'à C7.
Voici la formule que tu obtiens à la fin :=SCAN(12000; B3:B7; LAMBDA(solde; mouvement; solde+mouvement))
Explication
Ici, la valeur initiale n'est plus 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.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =SCAN(.
  2. 2
    En 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.
  3. 3
    En 2ᵉ argument : sélectionne la colonne des quatre rendements annuels, B3:B6. Ils sont saisis en pourcentages (5 % vaut 0,05 pour Excel), donc utilisables directement dans un calcul.
  4. 4
    En 3ᵉ argument : écris la fonction LAMBDA qui rejoue le calcul à chaque année, LAMBDA(capital; taux; capital*(1+taux)). Ses paramètres capital et taux sont 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,05 pour 5 %) au capital déjà accumulé, ce qui est le principe des intérêts composés.
  5. 5
    Ferme 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 C3 face à 2022, déverse les quatre capitaux jusqu'à C6.
Une fois les morceaux assemblés, ta formule donne ça :=SCAN(10000; B3:B6; LAMBDA(capital; taux; capital*(1+taux)))
Explication
La fonction ne se contente plus d'additionner : le calcul 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.
Exemple 4

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.

Les étapes
  1. 1
    Dans une cellule, écris =SCAN(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 3ᵉ argument : écris la fonction LAMBDA qui rejoue le calcul à chaque semaine, LAMBDA(record; vente; MAX(record; vente)). Ses paramètres record et vente portent le plus haut niveau atteint jusqu'ici et le montant de la semaine lue, et MAX(record; vente) remplace l'addition pour garder le plus grand des deux à chaque tour.
  5. 5
    Ferme 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 C2 face à 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.
En mettant tout bout à bout, tu écris :=SCAN(0; B2:B7; LAMBDA(record; vente; MAX(record; vente)))
Explication
L'accumulateur ne fait plus une somme : il garde le plus haut niveau rencontré jusque-là. Tant qu'une semaine ne bat pas le record, la valeur reste plate, et elle ne monte qu'en S3 puis en S5. Tu obtiens six valeurs pour six semaines, ce qui trace directement la courbe en escalier des records.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreSCANREDUCEMAP
Retourne les valeurs intermédiairesOui (toutes les étapes)Non (valeur finale uniquement)Oui (chaque transformation)
Calculs cumulatifsParfaitOui (résultat final)Non
Transformations indépendantesNon (dépend des précédents)NonParfait
Taille du résultatN éléments (même taille)1 valeur uniqueN éléments (même taille)
Cas d'usage typiqueTotaux cumulés, soldes progressifsTotal final, agrégationCalcul sur chaque ligne indépendamment
DisponibilitéMicrosoft 365 uniquementMicrosoft 365 uniquementMicrosoft 365 uniquement
Le conseil du pro
Si tu hésites entre SCAN et REDUCE, prends SCAN : sa dernière valeur est exactement le total que REDUCE t'aurait rendu, et tu gardes toutes les étapes au passage. Pour ne conserver que ce total final, enveloppe ta formule dans PRENDRE(...;-1).
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec SCAN

1Astuce

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.

2Astuce

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.

3Astuce

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.

FAQ

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.

Ressources

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