Snippets prêts à l'emploi

Cette page est votre bibliothèque de formules Python pour Grist. Chaque snippet est testé et prêt à être copié-collé dans vos colonnes calculées.

1. Calculer un âge à partir d'une date de naissance

from datetime import date

if $Date_naissance:
    aujourd_hui = date.today()
    age = aujourd_hui.year - $Date_naissance.year
    if (aujourd_hui.month, aujourd_hui.day) < ($Date_naissance.month, $Date_naissance.day):
        age -= 1
    return age
return None

Utilisation : Colonne "Age" basée sur "Date_naissance"


2. Formater un montant avec devise

if $Montant:
    return f"{$Montant:,.2f} €".replace(",", " ")
return "—"

Résultat : 1 234,56 €

Variante dollar :

if $Montant:
    return f"${$Montant:,.2f}"
return "—"

3. Statut selon date d'échéance (coloré)

from datetime import datetime

if $Date_echeance:
    jours = ($Date_echeance - datetime.now()).days
    if jours < 0:
        return "🔴 En retard"
    elif jours <= 3:
        return "🟠 Urgent"
    elif jours <= 7:
        return "🟡 Cette semaine"
    return "🟢 À jour"
return "⚪ Non planifié"

Astuce : Utilisez avec les styles conditionnels pour colorer toute la ligne.


4. Extraire les initiales d'un nom

if $Nom:
    return "".join([mot[0].upper() for mot in $Nom.split() if mot])
return ""

Exemple : "Jean Pierre Dupont" → "JPD"


5. Calculer les jours ouvrés entre deux dates

from datetime import timedelta

def jours_ouvres(debut, fin):
    jours = 0
    date_actuelle = debut
    while date_actuelle <= fin:
        if date_actuelle.weekday() < 5:  # Lundi = 0, Vendredi = 4
            jours += 1
        date_actuelle += timedelta(days=1)
    return jours

if $Date_debut and $Date_fin:
    return jours_ouvres($Date_debut, $Date_fin)
return 0

6. Générer un slug à partir d'un titre

if $Titre:
    slug = $Titre.lower()
    slug = slug.replace(" ", "-")
    slug = slug.replace("'", "")
    slug = slug.replace("é", "e").replace("è", "e").replace("à", "a")
    return slug
return ""

Exemple : "L'été à Paris" → "lete-a-paris"


7. Catégoriser un montant

if $Montant:
    if $Montant >= 10000:
        return "🌟 Premium"
    elif $Montant >= 5000:
        return "💎 Gold"
    elif $Montant >= 1000:
        return "🥈 Silver"
    return "🥉 Standard"
return "—"

8. Calculer un prorata mensuel

from datetime import date

if $Date_debut and $Date_fin and $Montant_mensuel:
    # Nombre de jours dans le mois
    if $Date_debut.month == 12:
        dernier_jour = date($Date_debut.year + 1, 1, 1) - timedelta(days=1)
    else:
        dernier_jour = date($Date_debut.year, $Date_debut.month + 1, 1) - timedelta(days=1)
    
    jours_mois = dernier_jour.day
    jours_actifs = ($Date_fin - $Date_debut).days + 1
    
    return round($Montant_mensuel / jours_mois * jours_actifs, 2)
return None

9. Compter les mots dans un texte

if $Description:
    return len($Description.split())
return 0

Variante : Compter les caractères

len($Description) if $Description else 0

10. Créer un résumé automatique

if $Titre and $Client:
    date_str = $Date.strftime("%d/%m/%Y") if $Date else "Date non définie"
    return f"{$Titre} - {$Client} ({date_str})"
return "Information incomplète"

Exemple : "Projet Alpha - Acme Corp (15/03/2026)"


Bonus : Formules combinées

Calculer un TTC avec remise

if $Prix_HT:
    remise = $Remise_pourcent or 0
    prix_remise = $Prix_HT * (1 - remise / 100)
    ttc = prix_remise * 1.20  # TVA 20%
    return round(ttc, 2)
return None

Valider un email (format simple)

if $Email:
    return "✅ Valide" if "@" in $Email and "." in $Email else "❌ Invalide"
return "—"

Numéroter automatiquement (format PROJ-001)

if $ID:
    return f"PROJ-{$ID:03d}"
return ""

Comment utiliser ces formules

  1. Créez une colonne calculée (Add Column → Formula column)
  2. Cliquez sur l'icône fx dans l'en-tête
  3. Collez la formule
  4. Adaptez les noms de colonnes (ex: remplacez $Date_naissance par votre nom de colonne)
  5. Cliquez sur Apply

Pour aller plus loin

Cette page est régulièrement mise à jour avec de nouvelles formules. Revenez souvent !