4.3 · Formules dynamiques : FILTRE, TRIER, UNIQUE, LAMBDA

Niveau 4 · Expert : Power Query, modèle de données & VBA

4.3Formules dynamiques : FILTRE, TRIER, UNIQUE, LAMBDA

Objectif : Extraire, trier et dédupliquer avec des formules dynamiques (FILTRE, TRIER, UNIQUE) et découvrir LAMBDA.
Temps estimé : 14 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Une formule, plusieurs résultats : FILTRE extrait, TRIER ordonne, UNIQUE déduplique — le résultat déborde (spill) sur les cellules voisines et se met à jour seul.
  • Le # désigne la zone débordée : si D2 contient =UNIQUE(...), D2# référence toute la liste — et #PROPAGATION! veut dire « libérez l'espace ».
  • Réflexe de Wassim : imbriquer (TRIER(UNIQUE(...))) pour des listes vivantes, et nommer une petite LAMBDA (ex. TVA à 19 %) au lieu de répéter le calcul.

Mini-cas filé — Wassim produit des listes vivantes pour la clôture

Wassim, comptable à Alger, prépare la clôture : il lui faut la liste des wilayas distinctes (triée, à jour) et l'extraction des ventes d'Alger, sans refaire de filtres manuels à chaque fois. Il écrit =TRIER(UNIQUE(Ventes[Région])) et =FILTRE(Ventes;Ventes[Région]="Alger") : les deux tableaux débordent et suivent les données. Il référence la liste via D2# dans ses synthèses et crée une LAMBDA TVA19 pour les montants TTC. Troisième jalon du fil rouge : des listes qui vivent avec les données.

Suite des cas 4.1-4.2 — les tables nettoyées et modélisées de Wassim s'exploitent en formules vivantes.

1. Une formule qui renvoie un tableau

Les formules dynamiques (Microsoft 365) renvoient plusieurs résultats qui « débordent » (spill) sur les cellules voisines, sans les recopier. FILTRE extrait les lignes qui remplissent une condition ; TRIER ordonne ; UNIQUE supprime les doublons. Le résultat se met à jour tout seul quand la source change — la liste des wilayas de Wassim reste juste sans intervention.

On les imbrique : =TRIER(UNIQUE(Ventes[Région])) donne en une formule une liste dédupliquée et triée. Une seule formule remplit plusieurs cellules et suit les données : c'est la fin des manipulations manuelles répétitives.

2. Le débordement (#)

La zone de débordement se référence avec le # : si D2 contient =UNIQUE(...), alors D2# désigne toute la liste résultante — y compris quand elle grandit. On construit donc les synthèses sur D2#, pas sur une plage figée.

Si une cellule bloque le débordement, Excel renvoie l'erreur #PROPAGATION! — il suffit de libérer l'espace sous et à droite du résultat. Et on ne recopie jamais une formule dynamique : elle remplit déjà sa zone toute seule.

3. LAMBDA : créer ses fonctions

LAMBDA permet de définir sa propre fonction réutilisable, nommée dans le gestionnaire de noms, sans VBA. Ex. une fonction TVA19(x) = x*1,19 pour la TVA algérienne à 19 %. Combinée à MAP/REDUCE/BYROW, elle ouvre des calculs élégants sans macro. C'est le sommet des formules modernes.

Attention à la compatibilité : FILTRE/TRIER/UNIQUE/LAMBDA exigent Microsoft 365 ou Excel 2021+. Sur des versions antérieures, elles n'existent pas : on retombe sur filtres, TCD ou formules matricielles anciennes.

Erreur d'interprétation fréquente : « Les formules dynamiques se recopient comme les autres, et LAMBDA sert à trier ». Non. Une formule dynamique remplit sa zone toute seule : la recopier crée des doublons et des erreurs, et sa zone se référence via # (D2#). Et LAMBDA ne trie rien : c'est un moyen de définir sa propre fonction réutilisable (ex. TVA19), quand TRIER ordonne et UNIQUE déduplique.
Les formules dynamiques Des formules qui renvoient un tableau (spill) et se recalculent seules ; LAMBDA crée vos fonctions FILTREExtraire par condition+TRIER / UNIQUEOrdonner, dédupliquer+LAMBDAFonctions maison Résultat qui déborde (spill) ; référencé par le # (ex. D2#).
Des formules qui renvoient un tableau (spill) et se recalculent seules ; LAMBDA crée vos fonctions
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Wassim écrit =TRIER(UNIQUE(Ventes[Région])) : une formule produit toute la liste triée des régions, qui déborde. 2) Il écrit =FILTRE(Ventes;Ventes[Région]="Alger") pour extraire les ventes d'Alger, vivantes elles aussi. 3) Il référence la zone débordée via D2# dans ses synthèses, et libère l'espace en cas de #PROPAGATION!. 4) Il nomme une LAMBDA TVA19 pour calculer les TTC sans répéter le taux. Leçon : extraire, trier, dédupliquer en formules vivantes, référencer par #.

🔎 Exemple concret — 🔎 Exemple concret — Extraire, trier, dédupliquer en une formule

Table Ventes de Wassim ; liste des régions et ventes d'Alger :

=TRIER(UNIQUE(Ventes[Région]))        → liste dédupliquée et triée (déborde)
=FILTRE(Ventes; Ventes[Région]="Alger") → toutes les lignes d'Alger (déborde)

Référencer le résultat ailleurs : D2#  (toute la zone débordée)

// LAMBDA nommée TVA19 (Gestionnaire de noms) :
=LAMBDA(montant; montant*1,19)
= TVA19([@Montant])   → TTC avec TVA 19 %

Lecture : une seule formule remplit plusieurs cellules et suit les données.

Leçon : FILTRE/TRIER/UNIQUE remplacent des manipulations manuelles répétitives.

Vocabulaire de la section

Formule dynamique
Formule qui renvoie un tableau « débordant » (spill), sur Microsoft 365.

Exemple simple : Le FILTRE de Wassim remplit seul des dizaines de lignes.

Ce que ce n'est pas : une formule classique à recopier vers le bas.

Réflexe : résultat multi-lignes : écrire une formule, laisser déborder.

FILTRE
Extrait les lignes qui remplissent une condition donnée.

Exemple simple : Wassim extrait toutes les ventes d'Alger en une formule.

Ce que ce n'est pas : un filtre manuel à refaire à chaque clôture.

Réflexe : sous-ensemble vivant : penser FILTRE.

TRIER / UNIQUE
Ordonne une plage (TRIER) ou supprime ses doublons (UNIQUE).

Exemple simple : Wassim produit sa liste de wilayas avec TRIER(UNIQUE(...)).

Ce que ce n'est pas : un tri manuel et une suppression de doublons en clics.

Réflexe : liste de référence : imbriquer TRIER(UNIQUE(...)).

LAMBDA
Définit sa propre fonction réutilisable et nommée, sans VBA.

Exemple simple : Wassim nomme TVA19 pour appliquer la TVA à 19 % partout.

Ce que ce n'est pas : une macro ou un taux répété en dur dans chaque formule.

Réflexe : calcul répété : le nommer en LAMBDA.

En pratique — En pratique — Formules qui débordent

  1. Écrivez =UNIQUE(colonne) pour obtenir les valeurs distinctes.
  2. Enrobez avec =TRIER(UNIQUE(...)) pour trier la liste.
  3. Extrayez un sous-ensemble avec =FILTRE(table ; condition).
  4. Créez une petite fonction LAMBDA nommée (ex. TVA19) et utilisez-la.
Vous produisez des listes vivantes (filtrées, triées, dédupliquées) et vos propres fonctions.

Script prêt à dire — montrer le spill à un collègue (30 s)

« C'est Wassim : regarde, une seule formule remplit toute la liste des wilayas — et quand j'ajoute une vente, elle se met à jour seule. J'extrais Alger avec FILTRE, je référence via D2#, et la TVA à 19 % est une fonction nommée. Plus de filtres refaits à la main. »

À dire en clôture : tapez la formule devant eux et ajoutez une ligne pour montrer la mise à jour.

Modèle copier-coller — Le trio dynamique + TVA

=TRIER(UNIQUE(Ventes[Région]))
=FILTRE(Ventes; Ventes[Région]="Alger")
=TRIER(UNIQUE(FILTRE(Ventes[Ville]; Ventes[Région]="Alger")))
// Dans le Gestionnaire de noms, nommer TVA19 :
// =LAMBDA(montant; montant*1,19)

Liste des commerciaux

Comme Wassim : =TRIER(UNIQUE(Ventes[Commercial])) pour une liste vivante des vendeurs.

Top des impayés

=FILTRE(Ventes;Ventes[Statut]="Impayé") : l'extraction suit les règlements sans refaire de filtre.

Référencer ailleurs

Construire les synthèses sur D2# : quand la liste grandit, tout suit automatiquement.

Version sans 365

FILTRE/TRIER/UNIQUE absents : retomber sur filtre automatique, TCD ou formules matricielles anciennes.

✓ Bonnes pratiques

  • Laisser de l'espace pour le débordement.
  • Référencer une zone débordée avec # (D2#).
  • Combiner FILTRE/TRIER/UNIQUE par imbrication.

✗ Pièges fréquents

  • Cellule occupée sous le résultat → #PROPAGATION!.
  • Recopier une formule dynamique inutilement.
  • Utiliser ces fonctions sur une version qui ne les a pas (avant 365/2021).

Points clés à retenir

  • Les formules dynamiques renvoient un tableau qui déborde (spill).
  • FILTRE (extraire), TRIER (ordonner), UNIQUE (dédupliquer).
  • La zone débordée se référence avec # (ex. D2#).
  • LAMBDA crée des fonctions réutilisables sans VBA.

Défi 48h — appliquez demain

Sur une vraie table : écrivez =TRIER(UNIQUE(colonne)), extrayez un sous-ensemble avec FILTRE, référencez via # et nommez une LAMBDA pour un calcul répété.

Checklist sortie de section
  • Je sais extraire, trier et dédupliquer en formules dynamiques.
  • Je sais référencer une zone débordée avec # et gérer #PROPAGATION!.
  • Je sais nommer et utiliser une fonction LAMBDA simple.
Auto-évaluation 1-5 : mes listes se mettent-elles à jour seules ?saurais-je expliquer #PROPAGATION! à un collègue ?

Questions fréquentes

Pourquoi #PROPAGATION! ?

Une formule dynamique veut « déborder » mais une cellule de la zone cible est occupée. Libérez l'espace sous/à droite du résultat, et la formule remplira toute la zone.

Ces fonctions marchent-elles sur toutes les versions ?

FILTRE/TRIER/UNIQUE/LAMBDA sont dans Microsoft 365 et Excel 2021+. Sur des versions antérieures, elles n'existent pas : on retombe sur des filtres, des TCD ou des formules matricielles anciennes (Ctrl+Maj+Entrée).

Vérifiez votre compréhension

Que fait la fonction UNIQUE ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 4Questions inédites et durcies pour valider vos acquis