← Retour au manuel
7. Expressions et formules
X-Sheets inclut un puissant langage d’expressions utilisé dans les colonnes virtuelles (champs calculés) et les conditions de filtre de vues. Ce chapitre est une référence complète pour les utilisateurs avancés.
7.1 Où sont utilisées les expressions
- Colonnes virtuelles — Définissent une formule qui calcule des valeurs à partir d’autres colonnes. Ajoutées via les paramètres de colonne virtuelle de l’éditeur de données.
- Conditions de filtre — Contrôlent quelles lignes apparaissent dans une vue. Configurées dans l’éditeur de vues.
7.2 Le constructeur d’expressions
Les deux cas d’utilisation fournissent un constructeur visuel d’expressions avec :
- Un champ de texte pour saisir les expressions.
- Fonction — Ouvre une liste catégorisée de toutes les fonctions avec descriptions et exemples.
- Opérateur — Liste les opérateurs de comparaison, logiques et arithmétiques.
- Autocomplétion — Suggère les colonnes et les feuilles liées par leur libellé au fur et à mesure de la saisie.
- Validation en temps réel — Affiche les erreurs immédiatement.
7.3 Référencer des colonnes
Référencez une colonne par son libellé (le nom affiché dans l’application), entre accolades :
{Prix} * {Quantité} |
{Prénom} |
- L’autocomplétion s’en charge — choisissez une suggestion et le libellé entre accolades est inséré ; vous avez rarement besoin de taper les accolades vous-même.
- Libellés en doublon — si deux colonnes partagent le même libellé, l’éditeur les distingue sous la forme
{Libellé (NOM)}, où NOM est le nom interne de la colonne.
- Renommage sans risque — les expressions sont stockées avec les noms internes stables : renommer le libellé d’une colonne ne casse jamais vos formules ; l’éditeur affiche simplement le nouveau libellé.
- Les noms internes restent valides — taper le nom interne (ex.
FIRST_NAME) est toujours accepté.
7.4 Références inter-feuilles
Pour référencer des données d’une autre feuille, utilisez la syntaxe #{Libellé de feuille} :
COUNT(#{Commandes}) |
SUM(#{Commandes}.{Montant}) |
SUM(#{Factures}#{Lignes}.{Total}) |
Astuce : Si 2 références ou plus existent entre les feuilles, ajoutez le libellé de la colonne de référence comme ceci :
AVERAGE(#{Commandes}['Client'].{Montant}) |
7.5 Référence des fonctions
Fonctions d’agrégation
Ces fonctions opèrent sur des collections de lignes (typiquement à partir de références inter-feuilles) :
| Fonction |
Description |
Exemple |
COUNT(collection, [condition]) |
Compte le nombre de lignes |
COUNT(#{Commandes}) |
COUNTDISTINCT(collection, [condition]) |
Compte les valeurs uniques |
COUNTDISTINCT(#{Commandes}.{Catégorie}) |
SUM(collection, [condition]) |
Somme des valeurs numériques |
SUM(#{Commandes}.{Montant}) |
AVERAGE(collection, [condition]) |
Calcule la moyenne |
AVERAGE(#{Commandes}.{Montant}) |
MIN(collection, [condition]) |
Trouve la valeur minimale |
MIN(#{Scores}.{Valeur}) |
MAX(collection, [condition]) |
Trouve la valeur maximale |
MAX(#{Scores}.{Valeur}) |
Astuce : Toutes les fonctions d’agrégation acceptent un second paramètre optionnel pour le filtrage : COUNT(#{Commandes}, #{Commandes}.{Statut} = "Terminée")
Fonctions de date
| Fonction |
Description |
Exemple |
TODAY() |
Retourne la date du jour (sans heure) |
TODAY() |
NOW() |
Retourne la date et l’heure actuelles (à la minute) |
NOW() |
DATE(year, month, day) |
Crée une date spécifique |
DATE(2024, 6, 15) |
DAY(date) |
Extrait le jour (1-31) |
DAY({Date de naissance}) |
MONTH(date) |
Extrait le mois (1-12) |
MONTH({Date de commande}) |
YEAR(date) |
Extrait l’année |
YEAR({Date d'embauche}) |
DATEDIF(start, end, unit) |
Calcule la différence entre deux dates. Unités : "Y" (années), "M" (mois), "D" (jours) |
DATEDIF({Date de début}, TODAY(), "D") |
Fonctions conditionnelles
| Fonction |
Description |
Exemple |
IF(condition, true_val, false_val) |
Retourne l’une des deux valeurs selon une condition |
IF({Montant} > 100, "Haut", "Bas") |
HASVALUE(colonne) |
Renvoie TRUE si la colonne contient une valeur valide et non vide |
HASVALUE({Date de naissance}) |
Fonctions mathématiques
| Fonction |
Description |
Exemple |
INT(number) |
Convertit en entier (tronque les décimales) |
INT({Prix} * 1.2) |
ABS(number) |
Retourne la valeur absolue |
ABS({Solde}) |
Constantes booléennes
| Constante |
Utilisation |
TRUE ou TRUE() |
Valeur booléenne vraie |
FALSE ou FALSE() |
Valeur booléenne fausse |
7.6 Opérateurs
| Catégorie |
Opérateurs |
Exemple |
| Arithmétique |
+ - * / |
{Prix} * {Quantité} |
| Comparaison |
= <> > < >= <= |
{Âge} >= 18 |
| Logique |
AND OR NOT |
{Actif} = TRUE AND {Rôle} = "Admin" |
Arithmétique sur les dates. Les opérateurs + et - s’appliquent aussi aux dates :
| Expression |
Résultat |
DATE + nombre |
Date décalée de ce nombre de jours |
DATE - nombre |
Date reculée de ce nombre de jours |
DATE - DATE |
Écart entre deux dates, en jours (décimal possible) |
Astuce — ajouter des minutes : Le nombre est toujours interprété en jours. Pour ajouter des minutes, divisez par 1440 (le nombre de minutes dans une journée) :
{Date de visite} + ({Durée min} / 1440) |
NOW() + (30 / 1440) — dans 30 minutes |
Utilisez / 24 pour des heures et / 86400 pour des secondes.
7.7 Exemples pratiques
| Cas d’utilisation |
Expression |
| Total de la commande |
{Prix} * {Quantité} |
| Jours depuis la création |
DATEDIF({Date de création}, TODAY(), "D") |
| Nombre de commandes liées |
COUNT(#{Commandes}) |
| CA des commandes terminées |
SUM(#{Commandes}.{Montant}, #{Commandes}.{Statut} = "Terminée") |
| Libellé d’état |
IF({Solde} > 0, "Actif", "Inactif") |
| Éléments actifs cette année |
{Statut} = "Active" AND YEAR({Date de création}) = YEAR(TODAY()) |
| Lignes avec un montant valide |
HASVALUE({Montant}) |
Suivant : Import et export →