Les 10 Formules Python Essentielles dans Grist
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 NoneUtilisation : 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 06. 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 None9. Compter les mots dans un texte
if $Description:
return len($Description.split())
return 0Variante : Compter les caractères
len($Description) if $Description else 010. 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 NoneValider 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
- Créez une colonne calculée (Add Column → Formula column)
- Cliquez sur l'icône fx dans l'en-tête
- Collez la formule
- Adaptez les noms de colonnes (ex: remplacez
$Date_naissancepar votre nom de colonne) - Cliquez sur Apply
Pour aller plus loin
- Guide complet Python dans Grist - Maîtrisez toutes les fonctionnalités
- Tutoriel débutant - Apprenez étape par étape
- Manipuler les dates - Toutes les opérations temporelles
Cette page est régulièrement mise à jour avec de nouvelles formules. Revenez souvent !