## Notion formules avancées : IF, DATE, CONCATENATE et calculs complexes en 2025

Les **Notion formules avancées** sont l’une des fonctionnalités les plus puissantes — et les plus mal utilisées — de l’outil. Après avoir configuré des dizaines de workspaces clients, j’ai identifié les formules qui apportent vraiment de la valeur au quotidien. Ce guide va au-delà des bases pour couvrir les cas d’usage réels.

## Les fondamentaux des formules Notion

Une propriété Formula dans Notion s’écrit dans une syntaxe propre à Notion. Elle peut lire les autres propriétés d’un enregistrement via la fonction `prop(« Nom de la propriété »)`.

**Types de valeurs retournées :**
– Texte (string)
– Nombre (number)
– Booléen (checkbox)
– Date

**Opérateurs de base :**
– `+` pour la concaténation (textes) ou l’addition (nombres)
– `==`, `!=`, `>`, `<`, `>=`, `<=` pour les comparaisons - `and`, `or`, `not` pour les booléens ## Formules IF : la logique conditionnelle La formule `if()` est la plus utilisée. Sa syntaxe : `if(condition, valeur_si_vrai, valeur_si_faux)` **Exemple 1 : Statut coloré selon l'état** ``` if(prop("Statut") == "En retard", "🔴 URGENT", if(prop("Statut") == "En cours", "🟡 En cours", "🟢 OK")) ``` Cette formule imbrique deux `if()` pour gérer trois cas. En imbriquant jusqu'à 10 niveaux, vous pouvez gérer des logiques très complexes. **Exemple 2 : Calcul d'une remise** ``` if(prop("Montant HT") > 5000, prop(« Montant HT ») * 0.9, prop(« Montant HT »))
« `
Applique automatiquement une remise de 10% au-delà de 5000€.

**Exemple 3 : Priorité calculée**
« `
if(prop(« Deadline ») <= dateAdd(now(), 3, "days") and prop("Statut") != "Terminé", "URGENT", if(prop("Deadline") <= dateAdd(now(), 7, "days"), "Cette semaine", "Planifié")) ``` Cette formule calcule la priorité en fonction de la proximité de la deadline. ## Formules Date : manipulation du temps **Fonctions date principales :** - `now()` : date et heure actuelles - `today()` : date du jour - `dateAdd(date, nombre, unité)` : ajoute du temps - `dateSubtract(date, nombre, unité)` : soustrait du temps - `dateBetween(date1, date2, unité)` : calcule la différence - `formatDate(date, "format")` : formate une date **Exemple 1 : Jours restants avant deadline** ``` dateBetween(prop("Deadline"), now(), "days") ``` Retourne un nombre négatif si la deadline est passée — utile pour identifier les retards. **Exemple 2 : Ancienneté d'un client** ``` dateBetween(now(), prop("Date de début"), "months") + " mois" ``` Affiche l'ancienneté en mois depuis la date de début de collaboration. **Exemple 3 : Rappel automatique** ``` if(dateBetween(prop("Date de relance"), now(), "days") <= 0 and prop("Statut") == "En attente", "RELANCER MAINTENANT", "") ``` Afiche un message d'alerte quand la date de relance est passée. **Unités disponibles pour dateAdd/dateSubtract/dateBetween :** `years`, `quarters`, `months`, `weeks`, `days`, `hours`, `minutes`, `seconds` ## Formules Texte : CONCATENATE et manipulation de chaînes **Fonctions texte essentielles :** - `concat(texte1, texte2, ...)` : concatène des chaînes - `length(texte)` : longueur d'une chaîne - `contains(texte, recherche)` : vérifie si une chaîne contient une autre - `replace(texte, recherche, remplacement)` : remplace une occurrence - `slice(texte, début, fin)` : extrait une sous-chaîne - `upper(texte)`, `lower(texte)` : majuscules/minuscules - `trim(texte)` : supprime les espaces en début/fin **Exemple 1 : Générer un numéro de facture** ``` concat("FAC-", formatDate(prop("Date"), "YYYY"), "-", format(prop("Numéro"))) ``` Génère automatiquement un numéro comme `FAC-2025-042`. **Exemple 2 : Nom complet depuis prénom/nom** ``` concat(upper(slice(prop("Prénom"), 0, 1)), lower(slice(prop("Prénom"), 1)), " ", upper(prop("Nom"))) ``` Formate le nom complet avec majuscule initiale et nom en majuscules. **Exemple 3 : Email généré automatiquement** ``` concat(lower(replace(prop("Prénom"), " ", ".")), ".", lower(replace(prop("Nom"), " ", ".")), "@entreprise.com") ``` ## Formules Nombre : calculs et agrégations **Fonctions nombres :** - `round(nombre, décimales)` : arrondi - `floor(nombre)`, `ceil(nombre)` : plancher/plafond - `abs(nombre)` : valeur absolue - `min(a, b)`, `max(a, b)` : minimum/maximum - `mod(a, b)` : modulo (reste de division) - `pow(base, exposant)` : puissance - `sqrt(nombre)` : racine carrée **Exemple 1 : TVA et TTC** ``` round(prop("HT") * 1.2, 2) ``` Calcule automatiquement le TTC avec 20% de TVA. **Exemple 2 : Marge** ``` round((prop("CA") - prop("Coûts")) / prop("CA") * 100, 1) + "%" ``` Affiche le taux de marge en pourcentage. ## Les erreurs fréquentes à éviter **Erreur 1 : Comparer des types différents** Vous ne pouvez pas comparer directement un texte et un nombre. Utilisez `toNumber()` pour convertir. **Erreur 2 : Oublier les guillemets** Les noms de propriétés dans `prop()` doivent être entre guillemets. Les valeurs texte aussi. **Erreur 3 : Propriété vide** Si une propriété peut être vide, testez toujours : `if(empty(prop("Valeur")), 0, prop("Valeur"))` pour éviter les erreurs. **Erreur 4 : Formules trop complexes** Dès qu'une formule dépasse 3 niveaux d'imbrication, elle devient difficile à maintenir. Créez des propriétés intermédiaires. ## Formules avec Rollup et Relations Les formules peuvent lire des propriétés rollup (agrégations depuis des bases liées). Exemple classique : Une base **Clients** avec une relation vers **Projets**. Un rollup `Total facturé` additionne les montants de tous les projets liés. Ensuite, une formule sur la base Clients peut utiliser ce rollup : ``` if(prop("Total facturé") > prop(« Budget prévu »), « ⚠️ Dépassement », « ✅ Dans le budget »)
« `

## Conclusion : les formules Notion, un vrai levier de productivité

Les **formules avancées Notion** transforment des bases de données statiques en systèmes intelligents. Le retour sur investissement est énorme : quelques heures de configuration pour des gains de temps quotidiens. Commencez par les formules IF et DATE — elles couvrent 80% des besoins.

[**Essayez Notion gratuitement →**](https://affiliate.notion.so/)

TR

admin_af

Expert logiciels emailing

J'ai lancé 3 startups et géré des listes email de 10 000 à 250 000 abonnés. Je teste chaque outil pendant au moins 3 mois avant de donner mon avis. Pas de partenariat caché.

48 articles · 12 outils testés · 3 ans d'expérience