Relations, agrégations et formules

Reliez les lignes de deux bases, calculez sur les lignes liées et obtenez des valeurs par formule : syntaxe, fonctions et exemples prêts à l'emploi.

Sur cette page
Sections de la documentation

Trois types de colonnes vont plus loin que ce que vous tapez dans une cellule :

  • une Relation relie les lignes d'une base à celles d'une autre, par exemple chaque facture à son client ;
  • un Agrégat calcule quelque chose sur les lignes liées, par exemple le total facturé à un client ;
  • une Formule calcule une valeur à partir des autres colonnes de la même ligne, par exemple le nombre de jours avant une échéance.

Les agrégats et les formules ne sont jamais enregistrés. Filarr les recalcule chaque fois qu'il affiche la table, ils sont donc toujours à jour. Vous ne pouvez pas écrire dedans.

Pour ajouter l'une de ces colonnes, voir Les bases de données dans vos notes : ajoutez une colonne, choisissez son type, puis ouvrez Modifier la propriété depuis le menu de la colonne pour la régler.

Les relations

Imaginons une base Clients et une base Factures, chacune dans une note.

  1. Dans Factures, ajoutez une colonne de type Relation.
  2. Dans Modifier la propriété, laissez Sens sur Vers une base… et choisissez la Base liée : Clients. La liste montre chaque base avec le titre de sa note. Elle propose aussi la base en cours, marquée Cette base, pour relier des lignes d'une même table.
  3. Cliquez sur une cellule de la nouvelle colonne. Lier des lignes ouvre une recherche dans Clients. Choisissez une ou plusieurs lignes.

Les lignes liées s'affichent en petites étiquettes, avec la première colonne Texte de l'autre base. Cliquez sur l'une d'elles pour ouvrir la note qui contient cette base.

Deux options aident :

  • Un seul lien à la fois : la prochaine ligne choisie remplace celle en place au lieu de s'y ajouter. C'est le bon réglage pour « un client par facture ».
  • Créer « … », en bas de la recherche, ajoute la ligne à l'autre base quand elle n'existe pas encore. Cela ne marche pas quand cette base est dans la note ouverte : ajoutez alors la ligne dans sa propre table.

Voir l'autre côté

Une relation va dans un seul sens : la facture connaît son client, mais le client ne liste pas ses factures. Pour les afficher :

  • dans les réglages de la relation, cliquez sur Ajouter la colonne de rétroliens dans « Clients » ;
  • ou, dans Clients, ajoutez une colonne Relation, réglez Sens sur Rétroliens (calculés), puis choisissez dans Rétroliens depuis la relation qui pointe vers elle.

La colonne de rétroliens se calcule depuis l'autre base. Rien n'est stocké en double, elle ne se modifie pas, et la supprimer ne fait rien perdre.

Si l'autre base n'est pas lisible (sa note a été supprimée, ou elle n'est pas dans ce coffre), la cellule affiche Base indisponible et les liens sont conservés tels quels. Les liens vers des lignes qui n'existent plus s'affichent en « 1 introuvable » : ouvrez la cellule pour les retirer.

Les agrégats

Un agrégat suit une relation et calcule sur les lignes qu'elle relie.

  1. Vérifiez que la base a une colonne Relation.
  2. Ajoutez une colonne de type Agrégat.
  3. Dans Modifier la propriété, choisissez Par la relation, puis ce qu'il faut Calculer, puis la Propriété à calculer dans l'autre base. Nombre n'a pas besoin de propriété.
CalculerRésultat
NombreLe nombre de lignes liées
Somme, Moyenne, Minimum, MaximumD'une colonne nombre des lignes liées
CochéesLe nombre de lignes liées dont la case est cochée
Pourcentage cochéLa part des lignes liées dont la case est cochée
Non videsLe nombre de lignes liées où la propriété a une valeur
Liste des valeursLes valeurs elles-mêmes, à la suite

Exemple : la part des tâches faites dans chaque projet. Une base Projets a une colonne Relation Tâches qui vise une base Tâches, dotée d'une colonne Case à cocher Faite. Dans Projets, ajoutez un agrégat : Par la relation Tâches, Calculer Pourcentage coché, Propriété Faite. Chaque projet affiche alors la part de ses tâches terminées. Un projet sans tâche liée reste vide plutôt que d'afficher 0 %.

Les formules

  1. Ajoutez une colonne de type Formule.
  2. Ouvrez Modifier la propriété et écrivez la formule dans le champ Formule.

Filarr vérifie la formule pendant la frappe. Une erreur s'affiche juste sous le champ, par exemple Colonne inconnue : Prix. Quand tout va bien, le champ rappelle les principales fonctions.

Dans la liste de lectures ci-dessous, une colonne Formule traduit le statut de chaque livre en un mot : if(prop("Status") == "Done", "Finished", if(prop("Status") == "In progress", "Reading", "Next up")).

Écrire une formule

  • Désignez une colonne par prop("Nom de la colonne"). Majuscules et minuscules sont indifférentes. Un nom d'un seul mot, sans espace, marche aussi seul : Prix * Quantité.
  • Mettez le texte entre guillemets droits : "En retard".
  • Écrivez les décimales avec un point : 1.2.
  • Une colonne Sélection donne le nom de son option, vous pouvez donc écrire prop("Statut") == "Fait". Une Sélection multiple donne ses options séparées par des virgules, une Case à cocher donne vrai ou faux, une Date donne le jour sous la forme 2026-09-30, et une Relation donne le nombre de lignes liées.
  • true (vrai), false (faux) et empty (vide) sont aussi des valeurs utilisables.

Les opérateurs :

  • +, -, *, / pour calculer, et % pour le reste d'une division. + met du texte bout à bout dès qu'un des côtés est du texte : prop("Prénom") + " " + prop("Nom") ;
  • == (ou =) et != pour comparer deux valeurs, <, <=, >, >= pour comparer des nombres ;
  • && pour et, || pour ou, ! pour non.

Les fonctions gardent leur nom anglais :

FonctionCe qu'elle donne
if(test, a, b)a si le test est vrai, sinon b (ou rien, sans b)
and(a, b, …), or(a, b, …), not(a)Combinent ou inversent vrai et faux
isEmpty(x)Vrai si x est vide
round(x), round(x, 2)Arrondit, ici à 2 décimales
floor(x), ceil(x), abs(x), sqrt(x)Arrondi inférieur, arrondi supérieur, sans le signe, racine carrée
min(a, b, …), max(a, b, …)Le plus petit ou le plus grand nombre
number(x), text(x)Fait d'un texte un nombre, ou de n'importe quoi un texte
concat(a, b, …)Met des textes bout à bout
join(", ", a, b, …)Met des textes bout à bout avec un séparateur, donné en premier
length(x), upper(x), lower(x), trim(x)Longueur d'un texte, majuscules, minuscules, sans espaces aux extrémités
contains(x, "mot")Vrai si le texte contient le mot
today(), now()La date du jour. Les deux donnent le jour seul, sans l'heure.
dateDiff(a, b)Le nombre de jours de la date b à la date a

Un nombre s'affiche au format de votre langue. Vrai s'affiche par une coche, faux par un tiret.

Quand une formule affiche une erreur

La cellule affiche alors la raison au lieu d'une valeur :

  • Colonne inconnue : un nom est mal écrit, ou la colonne a été renommée ;
  • Pas un nombre : un calcul porte sur du texte, ou sur une cellule vide ;
  • Pas une date : dateDiff a reçu une date vide ou invalide ;
  • Division par zéro ;
  • Formule circulaire : deux formules s'utilisent l'une l'autre ;
  • Parenthèse fermante manquante, Fonction inconnue : une faute de frappe.

Cinq formules à reprendre

Remplacez les noms de colonnes entre guillemets par les vôtres.

Les jours restants avant une échéance. Avec une colonne Date « Échéance », cette formule affiche 3 quand l'échéance est dans trois jours, 0 le jour même, et un nombre négatif une fois la date passée :

dateDiff(prop("Échéance"), today())

Une ligne sans date affiche Pas une date. Pour la laisser vide à la place :

if(isEmpty(prop("Échéance")), "", dateDiff(prop("Échéance"), today()))

Un statut qui se met à jour tout seul. Avec la colonne Statut d'une base neuve et une colonne Date « Échéance » :

if(prop("Statut") == "Fait", "Fait", if(isEmpty(prop("Échéance")), "Sans date", if(dateDiff(prop("Échéance"), today()) < 0, "En retard", "Dans les temps")))

Le total TTC d'une ligne de devis. Avec les colonnes Nombre « Quantité », « Prix unitaire » et « TVA % » :

round(prop("Quantité") * prop("Prix unitaire") * (1 + prop("TVA %") / 100), 2)

L'avancement d'une liste de contrôle. Avec trois colonnes Case à cocher « Brief », « Maquette » et « Réalisation » pour chaque projet, cette formule affiche 67 % quand deux cases sur trois sont cochées. if fait de chaque case un 1 ou un 0, même une case jamais cliquée :

round((if(prop("Brief"), 1, 0) + if(prop("Maquette"), 1, 0) + if(prop("Réalisation"), 1, 0)) / 3 * 100) + " %"

Pour compter des tâches rangées dans une autre base, servez-vous plutôt de l'agrégat Pourcentage coché décrit plus haut.

Les factures impayées depuis plus de 30 jours. Avec une Case à cocher « Payée » et une Date « Date de facture », la cellule affiche une coche sur les factures à relancer :

and(not(prop("Payée")), dateDiff(today(), prop("Date de facture")) > 30)

Une facture sans date affiche Pas une date : renseignez sa date.

Articles liés