Retour aux fonctions

LET

Attribue un nom aux résultats de value_expression et renvoie le résultat de formula_expression. formula_expression peut utiliser les noms définis dans la portée de la fonction LET. Les value_expressions ne sont évaluées qu'une seule fois dans la fonction LET, même si les value_expressions suivantes ou formula_expression les utilisent plusieurs fois.

LogicalLET(name1, value_expression1, [name2, …], [value_expression2, …], formula_expression )

LET vous permet de donner des noms à des valeurs ou à des calculs à l'intérieur d'une formule, puis de réutiliser ces noms. Elle rend les formules longues lisibles, car tva est plus clair qu'un B2*0.2 répété, et plus rapides, car chaque calcul nommé n'est exécuté qu'une seule fois, quel que soit le nombre de fois où on l'utilise.

Syntaxe

=LET(name1, value1, [name2, value2, ...], formula_expression)
  • name1 : Un nom de votre choix, comme prix ou donnees.
  • value1 : La valeur ou l'expression que représente le nom.
  • name2, value2, ... [Facultatif] : D'autres paires nom/valeur. Les valeurs suivantes peuvent utiliser les noms précédents.
  • formula_expression : Le calcul final, qui utilise les noms. C'est ce que renvoie LET.

Les arguments vont toujours par paires, suivies d'une expression finale unique : le nombre total d'arguments est donc impair.

Exemple de base

Sans LET, un calcul répété encombre la formule :

=IF(B2 * C2 > 1000, B2 * C2 * 0.9, B2 * C2)

Avec LET, il est nommé une seule fois :

=LET(total, B2 * C2, IF(total > 1000, total * 0.9, total))

total est calculé une fois et utilisé trois fois. Quiconque lit la formule en comprend tout de suite l'intention.

Plusieurs noms

Chaque nom peut s'appuyer sur ceux qui le précèdent :

=LET(
  prix, B2,
  qte, C2,
  sous_total, prix * qte,
  tva, sous_total * 0.2,
  sous_total + tva
)

Vous pouvez répartir une formule sur plusieurs lignes (appuyez sur Ctrl+Entrée ou Cmd+Entrée pour ajouter un saut de ligne dans la barre de formule), ce qui facilite grandement la relecture.

Pourquoi elle accélère aussi les calculs

Quand une expression telle que FILTER(...) ou XLOOKUP(...) apparaît plusieurs fois dans une formule, Sheets la calcule à chaque fois. Avec LET, vous la calculez une seule fois :

=LET(
  trouve, XLOOKUP(E2, A2:A1000, B2:B1000),
  IF(trouve = "", "Introuvable", trouve)
)

Sans LET, il faudrait écrire deux fois la XLOOKUP. Sur de grandes feuilles, cela peut réduire sensiblement le temps de calcul.

Formules pratiques

Nettoyer les données une fois, puis les utiliser

=LET(
  propre, TRIM(LOWER(A2)),
  IF(propre = "", "", PROPER(propre))
)

Réutiliser une plage filtrée

=LET(
  lignes, FILTER(A2:C100, B2:B100 = "Ventes"),
  IF(ROWS(lignes) = 0, "Aucune", SORT(lignes, 3, FALSE))
)

lignes contient le tableau filtré ; il est vérifié puis trié sans exécuter FILTER deux fois.

Part du total

=LET(
  partie, SUMIF(A2:A100, E2, C2:C100),
  total, SUM(C2:C100),
  partie / total
)

Division sûre

=LET(
  den, SUM(B2:B10),
  IF(den = 0, 0, SUM(A2:A10) / den)
)

Combiner avec LAMBDA, MAP et d'autres

LET fonctionne à l'intérieur de fonctions comme MAP et LAMBDA : les gains de lisibilité se retrouvent donc dans les formules matricielles.

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

Règles de nommage

  • Les noms doivent commencer par une lettre et peuvent contenir des lettres, des chiffres et des tirets bas.
  • Un nom ne peut pas ressembler à une référence de cellule : A1, B2 et C10 sont interdits, mais a_1 ou prix conviennent.
  • Évitez les noms de fonctions existantes (sum, date), qui prêtent à confusion et peuvent provoquer des erreurs.
  • Les noms sont locaux à la formule LET. Ils n'existent pas en dehors.

Erreurs courantes

  • #NAME?. Un nom est orthographié différemment à deux endroits, ou utilisé avant d'être défini. Un nom ne peut utiliser que des noms précédents.
  • « Nombre d'arguments incorrect pour LET ». Les arguments doivent former des paires suivies d'une seule expression finale. Une valeur manquante ou l'absence de calcul final en est la cause habituelle.
  • Nom invalide. Il ressemble à une référence de cellule ou commence par un chiffre ou un symbole.
  • Le résultat n'est que le dernier nom. LET renvoie l'expression finale, pas les valeurs nommées. Assurez-vous que le dernier argument est le calcul voulu.
  • Tentative d'utiliser un nom dans une autre cellule. Les noms n'existent qu'à l'intérieur de leur propre LET. Pour une logique réutilisable, créez une fonction nommée avec LAMBDA.

LET, colonnes d'aide, plages nommées ou LAMBDA ?

  • Les colonnes d'aide montrent les valeurs intermédiaires dans la feuille, ce qui est idéal pour l'audit, mais ajoute des colonnes.
  • Les plages nommées donnent un nom à une plage de cellules, partagée dans tout le classeur.
  • LET nomme des valeurs intermédiaires à l'intérieur d'une seule formule.
  • LAMBDA crée une fonction réutilisable, éventuellement enregistrée comme fonction nommée.

Questions fréquentes

LET accélère-t-elle les formules ? Elle peut le faire : chaque expression nommée est calculée une fois, même si elle est utilisée plusieurs fois.

Combien de noms peut-on utiliser ? Autant que vous voulez.

Un nom peut-il contenir toute une plage ou un tableau ? Oui, un nom peut contenir une plage, un tableau ou le résultat d'un FILTER.

Peut-on utiliser LET dans ARRAYFORMULA ? Oui. Elles fonctionnent ensemble, mais de nombreuses fonctions matricielles gèrent déjà les plages nativement.

Fonctions associées

  • LAMBDA : Crée des fonctions personnalisées et réutilisables.
  • MAP : Applique une fonction à chaque élément d'un tableau.
  • FILTER : Renvoie les lignes qui remplissent une condition.
  • IF : Renvoie des valeurs différentes selon une condition.
  • ARRAYFORMULA : Applique une formule à toute une plage.

Articles associés

Newsletter

Plus d'exemples sur LET arrivent bientôt.

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