Retour aux fonctions

LAMBDA

Crée et renvoie une fonction personnalisée avec un ensemble de noms et une formula_expression qui les utilise. Pour calculer la formula_expression, vous pouvez appeler la fonction renvoyée avec autant de valeurs que le nom en déclare.

LogicalLAMBDA(name, formula_expression)

LAMBDA crée votre propre fonction à partir d'une formule. Vous choisissez les entrées, écrivez le calcul une seule fois, puis le réutilisez : soit sur place dans des fonctions comme MAP, soit enregistré comme fonction nommée que vous pouvez appeler de n'importe où dans le classeur, comme SUM ou VLOOKUP.

Syntaxe

=LAMBDA(name1, [name2, ...], formula_expression)
  • name1, name2, ... : Les noms des entrées (paramètres), que vous choisissez.
  • formula_expression : Le calcul, écrit à l'aide de ces noms. Ce doit être le dernier argument.

Une LAMBDA seule ne fait rien tant qu'elle n'est pas appelée avec des valeurs. Saisir =LAMBDA(x, x * 2) renvoie une erreur. Pour la tester, appelez-la tout de suite :

=LAMBDA(x, x * 2)(5)

Renvoie 10. Le (5) placé après la LAMBDA transmet la valeur 5 à x.

Pourquoi LAMBDA compte

  • Réutilisation. Écrivez une logique complexe une fois et utilisez-la à de nombreux endroits, au lieu de copier de longues formules.
  • Lisibilité. Un appel comme =PRIXNET(B2, C2) s'explique mieux qu'une expression illisible.
  • Traitement de tableaux. LAMBDA est le moteur de MAP, REDUCE, SCAN, BYROW, BYCOL et MAKEARRAY, qui appliquent votre fonction à des plages.
  • Récursivité. Une fonction nommée peut s'appeler elle-même pour résoudre des problèmes répétitifs.

Utiliser LAMBDA avec MAP et consorts

L'usage le plus courant consiste à passer une LAMBDA à une fonction d'aide :

=MAP(A2:A10, LAMBDA(x, x * 2))

Double chaque valeur. x prend tour à tour chaque élément de A2:A10.

=MAP(A2:A10, B2:B10, LAMBDA(prix, qte, prix * qte))

Deux tableaux et une LAMBDA à deux paramètres : multiplie les lignes correspondantes.

=REDUCE(0, A2:A10, LAMBDA(total, x, total + x))

REDUCE transporte une valeur courante (total) le long de la liste. Celle-ci additionne, mais le même schéma permet de construire du texte, de trouver des maximums conditionnels, et plus encore.

=SCAN(0, A2:A10, LAMBDA(total, x, total + x))

SCAN renvoie chaque étape intermédiaire : une colonne de totaux cumulés.

=BYROW(A2:C10, LAMBDA(ligne, SUM(ligne)))

Additionne chaque ligne d'un tableau. BYROW passe chaque ligne entière à la LAMBDA.

Voir MAP pour en savoir plus.

Créer une fonction nommée

Pour réutiliser une LAMBDA n'importe où dans le fichier, enregistrez-la comme fonction nommée :

  1. Allez dans Données > Fonctions nommées > Ajouter une nouvelle fonction.
  2. Donnez-lui un nom en majuscules, comme PRIXNET.
  3. Ajoutez une description et un exemple si vous le souhaitez.
  4. Listez les espaces réservés d'arguments, comme prix, remise.
  5. Écrivez la définition de la formule avec ces noms, par exemple prix * (1 - remise).
  6. Enregistrez.

Désormais, =PRIXNET(B2, 0.1) fonctionne dans n'importe quelle cellule. Les fonctions nommées peuvent appeler d'autres fonctions nommées, et être importées dans d'autres classeurs depuis le panneau des fonctions nommées.

Notez que dans la boîte de dialogue des fonctions nommées, vous n'écrivez que le corps de la formule (prix * (1 - remise)), et non LAMBDA(...) lui-même, car la boîte de dialogue fournit l'enveloppe.

Formules pratiques

Une fonction de nettoyage réutilisable

Une fonction nommée NETTOYER_TEXTE avec l'argument texte et la définition :

PROPER(TRIM(SUBSTITUTE(texte, CHAR(160), " ")))

Puis =NETTOYER_TEXTE(A2) ou =MAP(A2:A100, LAMBDA(t, NETTOYER_TEXTE(t))).

Jointures de texte ligne par ligne

TEXTJOIN réduit toute une plage, mais avec BYROW vous pouvez réunir chaque ligne séparément :

=BYROW(A2:E10, LAMBDA(r, TEXTJOIN(", ", TRUE, r)))

Logique conditionnelle par élément

=MAP(A2:A10, LAMBDA(note, IFS(note >= 90, "A", note >= 80, "B", TRUE, "C")))

Avec LET à l'intérieur

=MAP(A2:A10, LAMBDA(x, LET(y, TRIM(x), IF(y = "", "", UPPER(y)))))

Récursivité

Une fonction nommée peut s'appeler elle-même. Un exemple classique est la factorielle : FACT(n) définie par IF(n <= 1, 1, n * FACT(n - 1)). Surveillez la condition d'arrêt pour qu'elle ne boucle pas indéfiniment.

Erreurs courantes

  • #ERROR! / « Lambda doit être appelée ». La LAMBDA a été saisie seule. Appelez-la avec (...) ou passez-la à MAP, REDUCE et consorts.
  • « Nombre d'arguments incorrect ». L'appel fournit un nombre de valeurs différent du nombre de paramètres de la LAMBDA.
  • #NAME?. Un nom de paramètre est mal orthographié dans le corps, ou vous avez utilisé le même nom qu'une référence de cellule (A1).
  • Fonction nommée introuvable. La fonction doit être enregistrée dans Données > Fonctions nommées avant qu'une formule puisse l'appeler, et le nom dans la formule doit correspondre.
  • Dépendance circulaire. La fonction référence la cellule qui l'appelle.
  • Lent sur d'énormes plages. MAP sur des colonnes entières traite aussi les cellules vides. Utilisez des plages bornées ou filtrez d'abord les cellules vides.

LAMBDA, LET ou Apps Script ?

  • LET nomme des valeurs à l'intérieur d'une seule formule.
  • LAMBDA crée une fonction que vous pouvez réutiliser et transmettre.
  • Les fonctions personnalisées Apps Script peuvent faire davantage (par exemple appeler des services externes), mais demandent du code et des autorisations. Pour du calcul pur, LAMBDA est plus simple et s'exécute plus vite.

Questions fréquentes

Faut-il LAMBDA pour MAP ? Oui, MAP prend une LAMBDA (ou une fonction nommée) comme dernier argument.

Peut-on partager des fonctions nommées ? Oui : elles font partie du classeur et peuvent être importées dans d'autres fichiers.

Combien de paramètres peut avoir une LAMBDA ? Plusieurs. Chaque paramètre est un nom placé avant l'expression finale.

Fonctions associées

  • LET : Nomme des valeurs à l'intérieur d'une formule.
  • MAP : Applique une fonction à chaque élément d'un tableau.
  • ARRAYFORMULA : Applique une formule à toute une plage.
  • FILTER : Renvoie les lignes qui remplissent une condition.
  • TEXTJOIN : Réunit du texte avec un séparateur.

Articles associés

Newsletter

Plus d'exemples sur LAMBDA arrivent bientôt.

Nous préparons des mises à jour courtes et pratiques pour les utilisateurs avancés de Sheets.