Formula Cheat Sheet
Formula Cheat Sheet + Référence complète des fonctions en Grist
Les formules sont au cœur de Grist. Elles vous permettent de calculer automatiquement des valeurs dans vos colonnes, en utilisant une syntaxe inspirée de Python. C'est simple à prendre en main si vous connaissez déjà Excel, mais plus puissant pour les liens entre tables ou les traitements complexes. Dans cet article, je vous propose une référence rapide sous forme de cheat sheet, suivie d'une liste structurée des fonctions par catégorie. Tout est tiré de la documentation officielle de Grist, avec des exemples concrets adaptés à des usages quotidiens comme la gestion de projets associatifs, les budgets d'une petite entreprise ou le suivi administratif d'étudiants.
Cette référence est conçue pour être consultée rapidement : copiez-collez des formules directement dans vos documents Grist. Si vous débutez, commencez par les bases (opérations simples, références de colonnes avec $NomColonne). Pour les erreurs courantes, consultez la section troubleshooting à la fin.
Notes générales sur les formules
- Syntaxe de base : Les formules s'appliquent à toute la colonne. Référez-vous aux colonnes avec
$nom_colonne(sensible à la casse). - Python intégré : Écrivez du code multi-lignes (Shift + Enter pour une nouvelle ligne). Importez des modules si besoin (ex. :
import math), mais tout reste dans un sandbox sécurisé – pas d'accès externe. - Fonctions Excel-like : Les noms en MAJUSCULES (ex. :
SUM()) imitent Excel, mais préférez les versions Python en minuscules pour plus de flexibilité (ex. :sum()). - Erreurs courantes :
#TypeErrorsi vous mélangez types (texte et nombre). Changez le type de colonne en Numérique pour les maths. - Astuce pour débutants : Testez dans un document vide. Utilisez l'Assistant IA de Grist pour générer des formules.
Cheat Sheet : Opérations essentielles
Voici un récapitulatif des formules les plus utilisées. Copiez-les et adaptez-les.
Opérations mathématiques simples
Utilisez +, -, *, / pour addition, soustraction, multiplication, division.
Exemple (dans un studio d'art pour calculer les paiements mensuels) :($SousTotal + ($SousTotal * $Taxe)) / 12
Résultat : Ajoute la taxe au sous-total, puis divise par 12 mois.
Dépannage : Erreur #TypeError ? Vérifiez que toutes les colonnes sont de type Numérique.
Max et Min
Trouve la valeur max ou min dans une liste.
max(valeurs, ...) ou MAX() (style Excel).
Exemple (gestion de classes pour places restantes) :max($Max_Étudiants - $Inscrits, 0) or "Complet"
Si les inscrits dépassent le max, affiche "Complet".
Exemple (CRM pour date la plus proche) :items = Interactions.lookupRecords(Contact=$id, Type="À faire")
return min(items.Date) if items else None
Trouve la date la plus proche d'une tâche.
Somme
Somme une liste de valeurs. Utilisez SUM() pour une colonne, ou des tables récapitulatives pour sommer une colonne entière.
Exemple (constructeur de produits pour coût total) :SUM($Exigences.Coût)
Somme les coûts des exigences liées.
Exemple (gestion d'inventaire pour quantités reçues) :SUM(Ordres_Entrants.lookupRecords(SKU=$id).Qté_Reçue)
Somme les quantités reçues pour ce SKU.
Comparaisons d'égalité : == et !=
Exemple (inventaire pour valider réception) :if $Statut_Ordre == "Reçu": return $Qté else: return None
Remplit la quantité seulement si l'ordre est reçu.
Exemple (gestion de projets pour deadlines manquées) :TODAY() > $Date_Limite and $Statut != "Terminé"
Vrai si deadline passée et non terminé.
Comparaisons numériques : <, >, <=, >=
Exemple (inventaire pour alertes stock) :if $En_Stock + $Qté_Commandée > 5: return "En stock"
elif $En_Stock + $Qté_Commandée > 0: return "Faible stock"
else: return "RUPTURE"
Catégorise le stock par niveaux.
Exemple (SEO pour pages orphelines) :len(Liens.lookupRecords(Vers=$id)) < 1
Vrai si moins d'un lien entrant.
Conversion texte vers nombre (float)
Convertit une chaîne en nombre pour les maths.
Exemple (commandes d'art pour prix de vente) :if $Valeur_Estime.endswith("k"): return float($Valeur_Estime.rstrip("k")) * 1000
return float($Valeur_Estime)
Gère les "10k" en les multipliant par 1000.
Dépannage : Erreurs comme "can't multiply sequence by non-int" ? Changez le type de colonne en Numérique.
Arrondi
ROUND(valeur, décimales) pour arrondir.
Exemple (paie pour paiement horaire) :ROUND($Heures * $Tarif_Horaire, 2)
Arrondit à 2 décimales.
Référence des fonctions par catégorie
Voici la liste exhaustive des fonctions, groupées par type. Chaque entrée inclut description, syntaxe et exemple. Utilisez-les dans vos formules pour des calculs avancés.
1. Fonctions Grist (aides pour tables et enregistrements)
Ces fonctions gèrent les liens entre tables, essentielles pour les bases de données.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| Record (rec) | Représente un enregistrement ; accédez aux champs via rec.Champ. |
rec.Champ |
rec.Prénom + ' ' + rec.Nom – Concatène nom complet. |
| $group | Dans une vue récapitulative, liste tous les enregistrements du groupe courant. | $group |
len($group) – Nombre d'enregistrements dans le groupe. |
| RecordSet | Collection d'enregistrements (de lookupRecords). Itérez ou accédez aux champs. | recordset.Champ |
len(Étudiants.lookupRecords(...)) – Compte les étudiants filtrés. |
| RecordSet.find. | Trouve l'enregistrement le plus proche dans un RecordSet trié (lt, le, gt, ge, eq). | recordset.find.le(valeur) |
taux.find.le($Date) – Dernier taux avant ou à la date. |
| UserTable | Représente une table ; méthodes comme all, lookupOne. | NomTable.méthode() |
Étudiants.all – Tous les étudiants. |
| UserTable.all | Liste tous les enregistrements de la table. | Table.all |
len(Étudiants.all) – Total étudiants. |
| UserTable.lookupOne | Premier enregistrement matching les critères ; option order_by. | Table.lookupOne(Champ=valeur, order_by="Col") |
Personnes.lookupOne(Prénom="Lewis", Nom="Carroll") – Trouve une personne. |
| UserTable.lookupRecords | Tous les enregistrements matching ; supporte order_by, group_by. | Table.lookupRecords(Champ=valeur, order_by="Col") |
Transactions.lookupRecords(Compte=$Compte, order_by="Date") – Transactions triées. |
| CONTAINS | Marqueur pour lookupRecords sur listes (Choice/Ref-List). | CONTAINS(valeur, match_empty=...) |
Films.lookupRecords(Genre=CONTAINS("Drame")) – Films avec drame. |
2. Fonctions cumulatives
Pour naviguer entre enregistrements adjacents.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| PREVIOUS | Enregistrement précédent selon order_by (et group_by optionnel). | PREVIOUS(rec, order_by="Col", group_by="Groupe") |
PREVIOUS(rec, order_by="Date") – Précédent par date. |
| NEXT | Enregistrement suivant. | NEXT(rec, order_by="Col", group_by="Groupe") |
Similaire à PREVIOUS. |
| RANK | Rang de l'enregistrement dans son groupe, trié par order_by. | RANK(rec, group_by="Année", order_by="Score", order="desc") |
Rang par score descendant. |
3. Fonctions Date
Gérez dates et temps, crucial pour plannings ou suivis administratifs.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| DATE | Crée une date à partir d'année, mois, jour (gère débordements). | DATE(année, mois, jour) |
DATE(2008, 14, 2) → 2009-02-02. |
| DATEADD | Ajoute jours, mois, années à une date. | DATEADD(date_début, jours=0, mois=0, ...) |
DATEADD(DATE(2011,1,15), mois=1, jours=-1) → 2011-02-14. |
| DATEDIF | Différence en années, mois, jours (unités spéciales : MD, YM, YD). | DATEDIF(début, fin, "unité") |
DATEDIF(DATE(2001,1,1), DATE(2003,1,1), "Y") → 2. |
| DATEVALUE | Parse une chaîne en date (format US par défaut). | DATEVALUE(chaîne_date, tz=None) |
DATEVALUE("1/2/3") → 2003-01-02. |
| DAY | Jour du mois (1-31). | DAY(date) |
DAY(DATE(2011,4,15)) → 15. |
| DAYS | Nombre de jours entre deux dates (négatif possible). | DAYS(fin, début) |
DAYS("3/15/11","2/1/11") → 42. |
| DTIME | Convertit en datetime (chaîne, date, etc.) avec timezone optionnel. | DTIME(valeur, tz=None) |
DTIME("1/1/2008"). |
| EDATE | Ajoute mois, préserve le jour. | EDATE(date_début, mois) |
EDATE(DATE(2011,1,15), 1) → 2011-02-15. |
| EOMONTH | Dernier jour du mois après ajout de mois. | EOMONTH(date_début, mois) |
EOMONTH(DATE(2011,1,1), 1) → 2011-02-28. |
| HOUR | Heure (0-23). | HOUR(temps) |
HOUR("7/18/2011 7:45") → 7. |
| MINUTE | Minutes (0-59). | MINUTE(temps) |
MINUTE("7/18/2011 7:45") → 45. |
| MONTH | Mois (1-12). | MONTH(date) |
MONTH(DATE(2011,4,15)) → 4. |
| NETWORKDAYS | Jours ouvrables (lun-ven) entre dates, exclut fêtes. | NETWORKDAYS(début, fin, fêtes=[]) |
NETWORKDAYS(DATE(2020,1,1), DATE(2020,1,10)) → 8. |
| NOW | Date/heure actuelle. | NOW(tz=None) |
Utilisez pour timestamps. |
| SECOND | Secondes (0-59). | SECOND(temps) |
SECOND("7/18/2011 7:45:13") → 13. |
| TODAY | Date actuelle. | TODAY(tz=None) |
Pour deadlines. |
| WEEKDAY | Jour de la semaine (1-7). | WEEKDAY(date, type=1) |
WEEKDAY(DATE(2008,2,14)) → 5 (jeudi). |
| WEEKNUM | Numéro de semaine. | WEEKNUM(date, type=1) |
WEEKNUM(DATE(2012,3,9)) → 10. |
| YEAR | Année. | YEAR(date) |
YEAR(DATE(2011,4,15)) → 2011. |
4. Fonctions Info
Vérifient types et erreurs.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| ISEMAIL | Vrai si ressemble à un email. | ISEMAIL(valeur) |
ISEMAIL("[email protected]") → True. |
| ISERR | Détecte erreurs (évaluation paresseuse). | ISERR(valeur) |
Pour traps d'erreurs. |
| ISERROR | Erreurs ou NaN. | ISERROR(valeur) |
Idem. |
| ISNUMBER | Vrai si numérique (incl. booléens). | ISNUMBER(valeur) |
ISNUMBER(42) → True. |
| ISREF | Vrai si référence à enregistrement. | ISREF(valeur) |
Pour liens. |
| ISREFLIST | Vrai si liste de références. | ISREFLIST(valeur) |
Pour multi-liens. |
| ISTEXT | Vrai si texte. | ISTEXT(valeur) |
ISTEXT("hello") → True. |
| ISURL | Vrai si ressemble à URL. | ISURL(valeur) |
ISURL("https://...") → True. |
| N | Convertit en nombre (dates en serial Excel). | N(valeur) |
N(True) → 1. |
| NA | Retourne #N/A. | NA() |
Pour placeholders. |
| PEEK | Lit valeur sans recalcul (évite boucles). | PEEK(expression) |
Pour refs circulaires. |
5. Fonctions Logiques
Pour conditions if-then-else.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| AND | ET logique (multi). | AND(a, b, ...) |
AND(1>0, 2<3) → True. |
| IF | Si condition vraie, valeur1, sinon valeur2. | IF(condition, vrai, faux) |
IF(12>10, "Oui", "Non") → "Oui". |
| IFERROR | Valeur sauf si erreur, alors alternative. | IFERROR(valeur, alt) |
IFERROR(1/0, "Erreur") → "Erreur". |
| NOT | NON logique. | NOT(valeur) |
NOT(True) → False. |
| OR | OU logique (multi). | OR(a, b, ...) |
OR(False, True) → True. |
6. Fonctions Texte
Manipulez chaînes, utile pour rapports ou emails.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| CHAR | Caractère Unicode d'un numéro. | CHAR(num) |
CHAR(65) → "A". |
| CLEAN | Supprime caractères non imprimables. | CLEAN(texte) |
CLEAN(CHAR(9) + "Rapport") → "Rapport". |
| CODE | Code Unicode du premier caractère. | CODE(chaîne) |
CODE("A") → 65. |
| CONCAT | Joint chaînes (ou CONCATENATE). | CONCAT(str1, str2, ...) |
CONCAT("Population ", 32) → "Population 32". |
| DOLLAR | Formate en dollars. | DOLLAR(nombre, décimales=2) |
DOLLAR(1234.56) → "$1,234.56". |
| EXACT | Vrai si chaînes identiques (sensible casse). | EXACT(str1, str2) |
EXACT("mot", "mot") → True. |
| FIND | Position de sous-chaîne (sensible casse). | FIND(recherche, dans, départ=1) |
FIND("M", "Miriam") → 1. |
| FIXED | Formate nombre fixe décimales. | FIXED(nombre, décimales=2, sans_virgules=False) |
FIXED(1234.56, 1) → "1,234.6". |
| LEFT | Sous-chaîne du début. | LEFT(chaîne, nb=1) |
LEFT("Prix", 4) → "Prix". |
| LEN | Longueur de chaîne ou liste. | LEN(texte) |
LEN("Phoenix") → 7. |
| LOWER | Minuscules. | LOWER(texte) |
LOWER("E. E. Cummings") → "e. e. cummings". |
| MID | Segment au milieu. | MID(texte, départ, nb) |
MID("Flux", 1, 5) → "Flux". |
| PHONE_FORMAT | Formate numéro de téléphone. | PHONE_FORMAT(valeur, pays=None, format=None) |
PHONE_FORMAT("+12345678901") → "+1 234-567-8901". |
| PROPER | Première lettre majuscule par mot. | PROPER(texte) |
PROPER("titre bas") → "Titre Bas". |
| REGEXEXTRACT | Extrait match regex. | REGEXEXTRACT(texte, regex) |
REGEXEXTRACT("Doc 101", "[0-9]+") → "101". |
| REGEXMATCH | Vrai si match regex. | REGEXMATCH(texte, regex) |
REGEXMATCH("Doc 101", "[0-9]+") → True. |
(Note : Les catégories suivantes comme Math, Financial, etc., suivent le même format. Pour brevité, je résume ; consultez la doc pour plus.)
7. Fonctions Mathématiques
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| ABS | Valeur absolue. | ABS(nombre) |
ABS(-5) → 5. |
| CEILING | Plus petit multiple supérieur. | CEILING(nombre, significatif) |
CEILING(3.7, 1) → 4. |
| FLOOR | Plus grand multiple inférieur. | FLOOR(nombre, significatif) |
FLOOR(3.7, 1) → 3. |
| INT | Partie entière. | INT(nombre) |
INT(8.9) → 8. |
| MOD | Reste de division. | MOD(dividende, diviseur) |
MOD(10, 3) → 1. |
| POWER | Exposant. | POWER(base, exposant) |
POWER(2, 3) → 8. |
| RAND | Nombre aléatoire 0-1. | RAND() |
Utilisez pour simulations. |
| ROUND | Arrondi. | ROUND(nombre, décimales) |
ROUND(3.7, 0) → 4. |
| SQRT | Racine carrée. | SQRT(nombre) |
SQRT(16) → 4. |
| SUM | Somme. | SUM(valeurs) |
SUM([1,2,3]) → 6. |
8. Fonctions Financières
Pour budgets SMB ou associatifs.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| FV | Valeur future d'investissement. | FV(taux, n_périodes, paiement, PV) |
Calculs d'épargne. |
| NPER | Nombre de périodes pour paiement. | NPER(taux, paiement, PV) |
Pour prêts. |
| PMT | Paiement périodique. | PMT(taux, n_périodes, PV) |
PMT(0.05/12, 360, 200000) – Mensualité hypothécaire. |
| PV | Valeur présente. | PV(taux, n_périodes, paiement) |
Valeur actuelle d'un flux. |
9. Fonctions de Recherche et Lookup (style Excel)
Intégrez avec les lookups Grist.
| Fonction | Description | Syntaxe | Exemple |
|---|---|---|---|
| HLOOKUP | Recherche horizontale. | HLOOKUP(valeur, tableau, ligne_index) |
Non implémenté pleinement ; utilisez lookupRecords. |
| VLOOKUP | Recherche verticale. | VLOOKUP(valeur, tableau, colonne_index) |
VLOOKUP("Alice", A2:C10, 2) – Nom vers salaire. |
| INDEX | Valeur à position. | INDEX(tableau, ligne, colonne) |
Récupère cellule spécifique. |
Conseils pour débutants et dépannage
Pour une PME gérant des stocks : Utilisez lookupRecords pour lier commandes à produits, et SUM pour totaux. Dans l'associatif, IF et dates pour alertes de deadlines. Étudiants : CONCAT pour rapports, DATEDIF pour durées de projets.
Erreurs ?
- TypeError : Types incompatibles – passez à Numérique.
- ValueError : Sous-chaîne non trouvée dans FIND – vérifiez l'entrée.
- Pour debug : Utilisez Formula Timer (voir module Performances).
Cette référence couvre l'essentiel. Appliquez-la dans vos docs pour automatiser. Besoin d'exemples personnalisés ? Commentez ci-dessous.
(Mots : 1487)