Aller au contenu principal

Qu'est-ce que la fonction MAP ?

Définition
La fonction MAP parcourt chaque cellule des tableaux fournis, applique la fonction LAMBDA à ces valeurs et retourne un tableau de même taille contenant les résultats transformés.

Tu t'en sers pour éviter une colonne de calcul intermédiaire ou une même formule recopiée des dizaines de fois. La transformation s'écrit une seule fois, dans une LAMBDA, et s'applique à tout le tableau d'un coup, même quand la logique se complique avec plusieurs conditions imbriquées.

C'est la version Excel de la fonction « map » connue en programmation : parcourir chaque élément, appliquer une transformation, renvoyer le résultat. Disponible depuis Excel 365, MAP est particulièrement puissante combinée avec FILTRE, TRIER ou UNIQUE pour enchaîner des transformations complexes sur des données dynamiques.

Syntaxe

Clique sur un argument pour aller à son explication.

MAP est disponible uniquement dans Excel 365. Sur une version antérieure, la formule retourne #NOM?. Si LAMBDA n'est pas disponible non plus, utilise des formules matricielles classiques confirmées avec Ctrl+Maj+Entrée.

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

Comprendre chaque paramètre de la fonction MAP

Tu donnes d'abord un ou plusieurs tableaux, et tu termines TOUJOURS par la LAMBDA : c'est elle qui décrit le calcul à appliquer. Seul tableau1 et la LAMBDA sont obligatoires ; les tableaux supplémentaires sont facultatifs, mais dès que tu en ajoutes un, ta LAMBDA doit gagner un paramètre de plus, sinon Excel te renvoie #CALC!.

1

tableau1

: le premier tableau à transformer

Ce peut être une plage de cellules (A2:A10), un tableau nommé, ou le résultat d'une autre fonction dynamique comme FILTRE ou UNIQUE.

MAP parcourt chaque cellule de ce tableau dans l'ordre et passe sa valeur à la fonction LAMBDA comme premier paramètre.

2

tableau2, ...

: tableaux supplémentaires à combiner élément par élément avec `tableau1`(facultatif)

Chaque tableau supplémentaire ajoute un paramètre à ta fonction LAMBDA.

Si tu passes deux tableaux, LAMBDA reçoit deux valeurs à chaque itération (une de chaque tableau). Tous les tableaux fournis doivent avoir la même taille ou être extensibles à la même taille.

3

lambda

: la fonction LAMBDA qui définit la transformation à appliquer à chaque élément

Elle doit avoir autant de paramètres qu'il y a de tableaux fournis à MAP.

Le dernier argument de MAP est toujours LAMBDA. Si tu passes deux tableaux, ta LAMBDA s'écrit LAMBDA(x; y; calcul_avec_x_et_y). Les paramètres peuvent porter n'importe quel nom : préfère des noms explicites comme prix, quantite plutôt que x, y.

Attention : Si le nombre de paramètres dans LAMBDA ne correspond pas au nombre de tableaux fournis à MAP, Excel retourne #CALC!. Compte bien : un tableau = un paramètre LAMBDA.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment transformer toute une colonne avec les fonctions MAP et LAMBDA

Un client te réclame le catalogue en prix TTC et tu n'as jamais saisi que les prix hors taxes. Tes huit produits sont listés avec leur prix HT, et tu veux la colonne TTC juste à côté (le prix HT plus les 20 % de TVA) sans toucher aux tarifs d'origine. La fonction MAP applique le même calcul à chaque prix et remplit toute la colonne depuis une seule cellule.

Les étapes
  1. 1
    Dans une cellule, écris =MAP(.
  2. 2
    En 1er argument : sélectionne la plage à transformer, B2:B9. Ce sont les huit prix hors taxes, que la fonction MAP parcourt cellule par cellule pour passer chacun à la LAMBDA.
  3. 3
    En 2ᵉ argument : écris la fonction LAMBDA qui décrit le calcul et referme-la, LAMBDA(prix; prix*1,2). Elle nomme prix la valeur reçue à chaque tour et la multiplie par 1,2 pour ajouter les 20 % de TVA. Comme tu ne passes qu'un seul tableau, la LAMBDA n'a droit qu'à un seul paramètre, sinon Excel renvoie #CALC!.
  4. 4
    Ferme la parenthèse de la fonction MAP et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=MAP(B2:B9; LAMBDA(prix; prix*1,2))
Explication
La fonction confie chaque prix hors taxes au paramètre prix de la LAMBDA, applique la multiplication et range les résultats dans leur ordre d'arrivée. Le clavier à 29 € donne 34,80 € TTC, affiché 35 € parce que la colonne est mise en forme sans décimale, et les huit valeurs se déversent sous D4 sans que tu recopies quoi que ce soit.
Exemple 2

Comment combiner deux colonnes ligne par ligne avec la fonction MAP

La facture du mois part demain et il te manque encore le montant de chaque ligne de commande. Ton tableau donne la quantité et le prix unitaire côte à côte, et tu veux les montants ligne par ligne sans ajouter une colonne de calcul qui alourdirait le fichier. La fonction MAP accepte plusieurs tableaux à la fois et les parcourt en parallèle, ligne après ligne.

Les étapes
  1. 1
    Dans une cellule, écris =MAP(.
  2. 2
    En 1er argument : sélectionne la colonne Quantité, B2:B7. C'est la valeur qui arrivera en premier dans la LAMBDA à chaque tour.
  3. 3
    En 2ᵉ argument : sélectionne la colonne Prix unitaire, C2:C7. Les deux plages doivent couvrir exactement le même nombre de lignes, sinon la fonction MAP allonge la plus courte en répétant sa dernière valeur et te sort des montants faux sans afficher la moindre erreur.
  4. 4
    En 3ᵉ argument : écris la fonction LAMBDA qui combine les deux valeurs et referme-la, LAMBDA(quantite; prix; quantite*prix). Comme tu passes maintenant deux tableaux, elle gagne un paramètre de plus. Elle reçoit la quantité et le prix de la même ligne, puis les multiplie. Deux tableaux et un seul paramètre donneraient #CALC!.
  5. 5
    Ferme la parenthèse de la fonction MAP et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=MAP(B2:B7; C2:C7; LAMBDA(quantite; prix; quantite*prix))
Explication
Avec deux tableaux, la fonction ne travaille plus valeur par valeur mais couple par couple : au premier tour elle prend 5 dans la colonne Quantité et 10,00 € dans la colonne Prix unitaire, et la LAMBDA multiplie les deux. Les six montants sortent d'un coup, sans colonne de calcul intermédiaire à créer ni à recopier.
Exemple 3

Comment classer chaque valeur d'une colonne avec les fonctions MAP et SI

Le bilan de la session part au client vendredi et personne n'a envie de classer les scores un par un. Ton tableau liste chaque stagiaire avec sa note sur 100, et tu veux traduire ces chiffres en trois niveaux : Acquis à partir de 80, En cours à partir de 60, À revoir en dessous. La fonction MAP applique la même règle de décision à toute la colonne, aussi longue soit-elle.

Les étapes
  1. 1
    Dans une cellule, écris =MAP(.
  2. 2
    En 1er argument : sélectionne la colonne des scores, B2:B7. Un seul tableau en entrée, donc une seule valeur envoyée à la LAMBDA à chaque tour.
  3. 3
    En 2ᵉ argument : écris la fonction LAMBDA qui classe chaque score et referme-la, LAMBDA(score; SI(score>=80; "Acquis"; SI(score>=60; "En cours"; "À revoir"))). Elle nomme score la valeur reçue, puis deux fonctions SI imbriquées rangent chaque note en trois niveaux. Au-dessus de 80 le résultat est "Acquis", sinon au-dessus de 60 "En cours", et tout le reste tombe sur "À revoir".
  4. 4
    Ferme la parenthèse de la fonction MAP et appuie sur Entrée.
Une fois les morceaux assemblés, ta formule donne ça :=MAP(B2:B7; LAMBDA(score; SI(score>=80; "Acquis"; SI(score>=60; "En cours"; "À revoir"))))
Explication
Le corps de la LAMBDA n'est plus un simple calcul mais une cascade de tests, et la fonction MAP l'applique telle quelle à chaque score. Emma (85) franchit le premier seuil et ressort en Acquis, Tom (67) échoue au premier test mais passe le second et ressort En cours, Hugo (45) tombe dans le dernier cas.
Exemple 4

Comment transformer un résultat filtré avec les fonctions MAP et FILTRE

L'opération commerciale démarre lundi et la remise de 10 % ne concerne que la catégorie Affichage. Ton catalogue mélange les trois catégories dans un seul tableau, et tu veux les prix remisés des seuls écrans et vidéoprojecteurs, sans trier ni recopier quoi que ce soit. La fonction MAP sait travailler sur le résultat d'une autre fonction dynamique, ce qui te permet de filtrer puis de transformer dans la même formule.

Les étapes
  1. 1
    Dans une cellule, écris =MAP(.
  2. 2
    En 1er argument : écris la fonction FILTRE qui restreint les données et referme-la, FILTRE(C2:C8; B2:B8="Affichage"). Elle extrait de la colonne Prix HT C2:C8 les seules lignes dont la catégorie B2:B8 vaut "Affichage", soit trois prix au lieu de sept. La fonction MAP travaille donc sur ce résultat filtré, pas sur une plage figée.
  3. 3
    En 2ᵉ argument : écris la fonction LAMBDA qui applique la remise et referme-la, LAMBDA(prix; prix*0,9). Elle reçoit chacun des prix retenus et le multiplie par 0,9 pour retirer 10 %. Un seul tableau en entrée, donc un seul paramètre.
  4. 4
    Ferme la parenthèse de la fonction MAP et appuie sur Entrée.
En mettant tout bout à bout, tu écris :=MAP(FILTRE(C2:C8; B2:B8="Affichage"); LAMBDA(prix; prix*0,9))
Explication
La fonction MAP ne reçoit pas une plage figée mais les trois prix que FILTRE vient d'extraire, et elle leur applique la remise un par un. Si un produit change de catégorie dans le tableau, le filtre le rattrape et la liste des prix remisés se recalcule toute seule.
Exemple 5

Comment éviter l'erreur #VALEUR! avec les fonctions MAP et ESTNUM

Le fichier de commissions arrive de l'outil de caisse et deux vendeurs n'ont pas de chiffre saisi, juste une mention en toutes lettres. Tu veux la commission de 5 % sur toute la colonne, et ton premier essai fait tomber ces deux lignes en #VALEUR! parce que la fonction MAP applique le calcul à chaque cellule sans regarder son type. En glissant un test dans la LAMBDA, tu vérifies chaque valeur avant de la multiplier et tu récupères une colonne propre.

Les étapes
  1. 1
    Dans une cellule, écris =MAP(.
  2. 2
    En 1er argument : sélectionne la colonne des ventes du mois, B2:B7. Elle arrive telle quelle de l'outil de caisse, mentions texte comprises, et la fonction MAP transmet chaque valeur à la LAMBDA sans rien trier.
  3. 3
    En 2ᵉ argument : écris la fonction LAMBDA qui sécurise le calcul et referme-la, LAMBDA(vente; SI(ESTNUM(vente); vente*0,05; "À compléter")). La fonction ESTNUM teste chaque valeur avant tout calcul et répond VRAI sur un montant, FAUX sur N/C comme sur En attente. La fonction SI multiplie alors par 0,05 les seuls montants numériques et renvoie "À compléter" pour le reste, si bien que l'erreur #VALEUR! n'a plus l'occasion d'apparaître.
  4. 4
    Ferme la parenthèse de la fonction MAP et appuie sur Entrée.
La formule complète, c'est celle-ci :=MAP(B2:B7; LAMBDA(vente; SI(ESTNUM(vente); vente*0,05; "À compléter")))
Explication
Le test ESTNUM sert de garde-fou : chaque valeur est examinée avant le calcul, et seules les cellules réellement numériques partent à la multiplication. Les mentions N/C et En attente reçoivent le texte de secours au lieu de faire tomber leur ligne en #VALEUR!.
Vrai ou faux ?
« MAP fait forcément mieux qu'une formule matricielle. » Faux. Pour majorer une colonne, =A2:A5*1,2 donne exactement le même résultat que MAP. MAP ne prend l'avantage que quand ta logique se complique, avec des conditions imbriquées ou des paramètres nommés pour la lisibilité.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction MAP

Neuf fois sur dix, le souci vient d'un décompte qui ne colle pas : ta LAMBDA doit avoir exactement autant de paramètres que de tableaux passés, faute de quoi Excel renvoie #CALC!. Le #NOM? est différent, il ne pointe aucune faute de frappe mais une version d'Excel trop ancienne (MAP exige Microsoft 365).

Méfie-toi aussi du cas sournois : des tableaux de tailles différentes ne déclenchent aucune erreur, MAP rallonge le plus court en répétant sa dernière valeur et te sort des résultats faux sans prévenir.

Erreur #CALC! sur la formule MAP

Le nombre de paramètres dans LAMBDA ne correspond pas au nombre de tableaux fournis à MAP. Si tu passes 2 tableaux et que LAMBDA n'a qu'un paramètre, Excel retourne #CALC!.

Solution : Compte les tableaux que tu passes à MAP et assure-toi que LAMBDA a exactement le même nombre de paramètres. Pour 2 tableaux : =MAP(A1:A5; B1:B5; LAMBDA(x; y; x+y)).

Erreur #VALEUR! dans certaines cellules du résultat

Ta LAMBDA tente une opération mathématique sur une cellule contenant du texte non numérique. MAP applique la transformation à toutes les cellules sans distinction de type.

Solution : Ajoute une vérification avec ESTNUM() ou SIERREUR() dans LAMBDA : =MAP(A1:A5; LAMBDA(x; SI(ESTNUM(x); x*2; 0))) renvoie 0 pour les cellules non numériques au lieu d'une erreur.

Erreur #NOM? à la place du résultat

MAP et LAMBDA nécessitent Microsoft 365. Sur Excel 2019 ou une version antérieure, ces fonctions ne sont pas reconnues.

Solution : Vérifie ta version d'Excel via Fichier > Compte. Si MAP n'est pas disponible, remplace-la par des formules matricielles classiques confirmées avec Ctrl+Maj+Entrée, comme =A2:A5*1.2.

Résultats inattendus avec des tableaux de tailles différentes

Quand les tableaux n'ont pas les mêmes dimensions, MAP étend le plus petit en répétant ses dernières valeurs, ce qui donne des résultats trompeurs sans afficher d'erreur.

Solution : Vérifie que tous tes tableaux ont exactement les mêmes dimensions en comparant =LIGNES(A2:A10) et =LIGNES(B2:B10) avant d'utiliser MAP. Utilise ETENDRE pour uniformiser des tableaux de tailles différentes.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

MAP vs BYROW vs BYCOL vs MAKEARRAY

Choisis MAP quand tu veux transformer chaque cellule une à une (majorer un prix, nettoyer un texte) ou combiner plusieurs colonnes ligne par ligne. Si au contraire tu dois résumer une ligne ou une colonne entière en une seule valeur (somme, max…), passe à BYROW ou BYCOL ; et quand tu n'as aucune donnée en entrée mais une grille à générer de toutes pièces, c'est MAKEARRAY qu'il te faut.

CritèreMAPBYROWBYCOLMAKEARRAY
Ce que ça faitTransforme chaque élément d'un tableauApplique LAMBDA à chaque ligne entièreApplique LAMBDA à chaque colonne entièreCrée un tableau via LAMBDA(ligne; col)
Tableau en entréeOui (1 ou plusieurs)Oui (1)Oui (1)Non (spécifie les dimensions)
Unité traitéeCellule par celluleLigne par ligneColonne par colonneCoordonnée (i; j)
Cas d'usage typiqueTransformer des valeurs individuellesAgréger chaque ligne (somme, max...)Agréger chaque colonneCréer une table de multiplication, une matrice
DisponibilitéExcel 365Excel 365Excel 365Excel 365
L’erreur fatale
MAP ne bronche pas si tes tableaux n'ont pas la même taille : elle rallonge le plus court en répétant sa dernière valeur et te sort des résultats faux sans la moindre erreur. Vérifie que tes plages ont le même nombre de lignes avant de lancer.
FAQ

Questions fréquentes

MAP applique une fonction LAMBDA aux éléments de tableaux existants : tu fournis les données, MAP les transforme. MAKEARRAY crée un nouveau tableau en générant chaque valeur avec LAMBDA selon ses coordonnées ligne/colonne : tu ne fournis pas de données, tu définis une règle de génération.

Ressources

Pour aller plus loin

Continue sur ta lancée après la fonction MAP : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.

Tout voir