Comment filtrer les relations avec des formules ?
Transforme tes propriétés Relation en listes intelligentes grâce à la fonction filter() des formules Notion.

Tu as une base "Projets" avec une propriété Relation vers tes "Tâches". Dans cette propriété, tu vois s'afficher l’ensemble des tâches de ta base : terminées, en cours, futures, annulées... Un vrai bazar avec toutes les entrées et où tu galères à retrouver visualiser l’information pertinente.
Le problème c’est que les propriétés Relation affichent par défaut l'intégralité de la base liée, sans aucun filtrage. Tu ne peux pas dire "affiche-moi seulement les tâches en cours de ce projet" directement dans la propriété de la relation.
Sauf depuis les formules 2.0 en 2023, la fonction filter()
résout exactement cette frustration. Elle te permet de créer une propriété Formule qui affiche une version filtrée de ta relation selon tes critères. Au lieu de voir 500 tâches, tu affiches seulement les 3 tâches en cours du projet X.
À travers cette astuce, je reviens sur cette fonction en te montrant ses différents usages mais aussi ses limitations.
Principe de base : filter() sur les relations
La fonction filter() transforme n'importe quelle propriété Relation en liste filtrée selon tes critères. Elle applique une condition à chaque élément de la relation et ne conserve que ceux qui la respectent.
Syntaxe fondamentale
prop("Ma Relation").filter(current.prop("Propriété") == "Valeur")
Décortiquons cette formule :
-
prop("Ma Relation")
: Ta propriété Relation de départ -
.filter()
: La fonction qui va appliquer le filtre -
current.prop("Propriété")
: Pour chaque élément lié, vérifie cette propriété -
== "Valeur"
: La condition à respecter
Base "Projets" liée à base "Tâches". Tu veux afficher seulement les tâches en cours :
prop("Tâches").filter(current.prop("Statut") == "En cours")
Cette formule dans une propriété Formule de ta base Projets affichera uniquement les tâches dont le statut est "En cours". Fini le bruit visuel des tâches terminées ou en attente !
Une fois que tu maîtrises ce principe, tu peux créer des filtres sophistiqués combinant plusieurs conditions. Voyons comment filtrer par dates, par statuts multiples, ou par contenu textuel.
Filtres par dates sur les relations
Les filtres temporels révolutionnent la gestion des relations dans Notion. Au lieu de voir tous tes événements depuis 2019, tu affiches uniquement ceux qui comptent pour ton contexte actuel.
Événements futurs uniquement
prop("Réunions").filter(current.prop("Date") > now())
Cette formule dans ta base "Projets" affiche seulement les réunions à venir. Particulièrement utile pour les tableaux de bord où tu veux te concentrer sur l'agenda futur plutôt que sur l'historique.
Activité récente (7 derniers jours)
prop("Tâches").filter(
current.prop("Date de modification") >= dateAdd(now(), -7, "days")
)
Idéal pour identifier les tâches sur lesquelles ton équipe travaille activement. Cette vue dynamique s'adapte automatiquement au fil du temps.
Échéances critiques (prochains 30 jours)
prop("Livrables").filter(
current.prop("Date limite") >= now() and
current.prop("Date limite") <= dateAdd(now(), 30, "days")
)
Formule particulièrement puissante pour la gestion de projet. Elle crée une alerte visuelle des échéances approchantes sans te noyer dans les délais lointains.
Filtres conditionnels avancés
Les vrais gains de productivité apparaissent quand tu combines plusieurs conditions dans tes filtres. Ces formules avancées créent des vues chirurgicales de tes données.
Multi-critères avec logique AND
prop("Contacts").filter(
current.prop("Statut") == "Client" and
current.prop("Priorité") == "Haute" and
current.prop("Dernière interaction") >= dateAdd(now(), -30, "days")
)
Cette formule identifie tes clients VIP actifs des 30 derniers jours. Triple filtrage pour une précision maximale dans ton CRM.
Alternatives avec logique OR
prop("Tâches").filter(
current.prop("Priorité") == "Urgente" or
current.prop("Échéance") < dateAdd(now(), 3, "days") or
current.prop("Bloquante") == true
)
Formule d'alerte qui remonte toutes les tâches nécessitant une attention immédiate, quel que soit le motif. Approche défensive pour ne rien laisser passer.
Filtrage par contenu textuel avec contains()
prop("Articles").filter(
contains(current.prop("Tags"), "Notion") or
contains(current.prop("Titre"), "productivité") or
contains(current.prop("Catégorie"), "Outils")
)
Recherche flexible dans le contenu textuel. Particulièrement utile pour les bases documentaires où tu veux retrouver du contenu thématique.
Cas d'usage métier concrets
Voyons comment appliquer ces techniques dans des contextes professionnels réels. Ces exemples reflètent des situations que je rencontre régulièrement dans mes accompagnements.
CRM : Prospects chauds uniquement
prop("Interactions").filter(
current.prop("Score lead") >= 75 and
current.prop("Dernière interaction") >= dateAdd(now(), -14, "days") and
current.prop("Statut") == "Qualifié"
)
Cette formule dans ta base "Prospects" affiche uniquement les interactions avec tes leads les plus prometteurs. Tes commerciaux se concentrent sur les opportunités chaudes plutôt que de perdre du temps sur des prospects froids.
Gestion de projet : Tâches critiques par responsable
prop("Tâches assignées").filter(
current.prop("Assigné à") == prop("Chef de projet") and
current.prop("Statut") != "Terminé" and
(current.prop("Priorité") == "Haute" or current.prop("En retard") == true)
)
Vue managériale qui affiche uniquement les tâches critiques sous la responsabilité directe du chef de projet. Élimine le bruit des tâches déléguées ou secondaires.
Suivi client : Commandes récentes et importantes
prop("Commandes client").filter(
current.prop("Date commande") >= dateAdd(now(), -90, "days") and
current.prop("Montant") >= 5000 and
current.prop("Statut") != "Annulée"
)
Formule pour identifier les gros clients récents dans ton historique. Utile pour le service client qui doit prioriser le support selon la valeur commerciale.
Limitations et contournements
Comme toute fonction puissante, filter() a ses limites. Connaître ces restrictions t'évite des frustrations et t'oriente vers les bonnes solutions.
Restrictions actuelles de filter()
Lecture seule : Tu peux afficher les résultats filtrés mais pas les modifier directement depuis la formule. Pour ajouter ou supprimer des éléments, tu dois passer par la propriété Relation originale.
Limitation des types de propriétés : filter() fonctionne avec la plupart des propriétés sauf Files & Media qui ne peuvent pas être comparées dans les formules.
Performance variable : Sur des bases avec 10 000+ entrées, les filtres complexes peuvent ralentir l'affichage. Notion calcule en temps réel, ce qui consomme des ressources.
Solutions alternatives selon le contexte
Organisation à deux niveaux pour l'édition : Puisque tu ne peux pas modifier directement les résultats filtrés, voici une approche efficace :
- Propriété Relation originale (masquée) : Garde la relation complète mais masque-la dans tes vues
- Propriété Formule filtrée (affichée) : Pour la consultation et l'analyse
- Vue séparée pour édition : Crée une vue dédiée qui affiche la relation originale pour les modifications
Questions fréquentes sur les filtres de relations
À travers mes formations sur les formules Notion, certaines interrogations reviennent régulièrement. Voici les réponses aux questions les plus fréquentes.
filter() fonctionne-t-il avec les relations Many-to-Many ?
Absolument ! Le principe reste identique pour les relations bidirectionnelles. Si ta base "Projets" est liée à ta base "Compétences" en Many-to-Many, tu peux filtrer :
prop("Compétences requises").filter(current.prop("Niveau") == "Expert")
La relation dans l'autre sens fonctionne également.
Peut-on filtrer selon plusieurs propriétés simultanément ?
Oui, c'est même là que filter() révèle sa puissance. Tu peux combiner autant de conditions que nécessaire avec AND et OR :
prop("Équipe").filter(
current.prop("Département") == "Marketing" and
current.prop("Expérience") >= 3 and
current.prop("Disponible") == true
)
Impact sur les performances de mes bases ?
filter() recalcule en temps réel, ce qui peut ralentir l'affichage sur de très grandes bases (10 000+ entrées). Pour optimiser :
- Place les conditions les plus restrictives en premier
- Évite les filtres sur du contenu textuel long
- Considère les vues database avec filtres natifs pour les gros volumes
Oui, filter() recalcule automatiquement quand les données source changent. Si une tâche passe de "En cours" à "Terminé", elle disparaît immédiatement des filtres qui excluent les tâches terminées.
Cette mise à jour temps réel maintient tes vues toujours cohérentes avec l'état actuel de tes données.
Transforme tes relations Notion avec des filtres intelligents
La fonction filter() est un vrai changement depuis les formules 2.0 de Notion, elle permet de simplifier l’affichage des informations de base de données. Ainsi tu peux personnaliser toujours davantage ton espace Notion.
Stratégie de déploiement que je recommande : commence par identifier les 2-3 relations les plus utilisées dans tes bases. Applique filter() progressivement en observant l'impact sur l'efficacité de tes équipes. Les gains de temps et de précision se ressentent immédiatement.
Cette fonction appartient aux techniques avancées qui distinguent les utilisateurs Notion confirmés. Une fois maîtrisée, elle devient indispensable pour créer des systèmes performants.
Envie d'aller plus loin avec les formules Notion ? Mes guides sur la méthode parseDate ou encore celui sur les formats de dates complètent parfaitement ces compétences avancées !