Vous n'avez jamais codé ? Parfait !

Ce tutoriel est conçu pour les débutants complets. Aucune expérience en programmation n'est requise. En 30 minutes, vous serez capable d'écrire vos premières formules Python dans Grist.

Qu'est-ce que Python dans Grist ?

Python est un langage de programmation simple et puissant. Dans Grist, il vous permet d'aller au-delà des formules standards pour :

  • Automatiser des calculs complexes
  • Manipuler des dates et du texte
  • Créer des logiques conditionnelles avancées
  • Connecter vos données à des services externes

Votre première formule Python (2 minutes)

Étape 1 : Créer une colonne calculée

  1. Ouvrez votre document Grist
  2. Cliquez sur le "+" à droite de vos colonnes
  3. Sélectionnez "Add Column" puis "Formula column"
  4. Cliquez sur l'icône de formule (fx) dans l'en-tête de la nouvelle colonne

Étape 2 : Écrire votre première formule

Dans la fenêtre qui s'ouvre, vous voyez un champ de texte. C'est ici que vous écrivez du Python.

Exercice 1 : Concaténer prénom et nom

$Prenom + " " + $Nom

Cliquez sur "Apply". Magique ! Votre colonne affiche maintenant le nom complet.

Explication

  • $Prenom : récupère la valeur de la colonne "Prenom"
  • + : concatène (assemble) les textes
  • " " : ajoute un espace entre les deux

Les concepts essentiels

1. Accéder aux colonnes avec $

Pour utiliser une valeur d'une autre colonne, prefixez son nom avec $ :

$Prix_unitaire * $Quantite  # Calculer un total
$Nom.upper()                # Mettre en majuscules
$Date.year                  # Extraire l'année

2. Les conditions (if/else)

Python permet de faire des choix :

if $Montant > 1000:
    return "Gros client"
else:
    return "Client standard"

Version courte (plus élégante) :

"Gros client" if $Montant > 1000 else "Client standard"

3. Gérer les valeurs vides

Souvent, certaines cellules sont vides. Il faut gérer ce cas :

if $Montant:
    return $Montant * 1.20  # Ajouter 20% de TVA
return 0  # Si vide, retourner 0

Exercices pratiques progressifs

Exercice 2 : Calculer un âge

Vous avez une colonne "Date_naissance". Créez une colonne "Age" :

from datetime import date

aujourd_hui = date.today()
age = aujourd_hui.year - $Date_naissance.year

# Ajuster si l'anniversaire n'est pas encore passé
if (aujourd_hui.month, aujourd_hui.day) < ($Date_naissance.month, $Date_naissance.day):
    age -= 1

return age

À retenir : from datetime import date permet d'utiliser les fonctions de date.

Exercice 3 : Formater un prix

Afficher un montant avec la devise et 2 décimales :

if $Prix:
    return f"{$Prix:.2f} €"
return "—"

Explication : Le f"..." est une f-string. {:.2f} formate avec 2 décimales.

Exercice 4 : Statut selon une date d'échéance

from datetime import datetime

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

return "⚪ Non planifié"

Exercice 5 : Extraire des initiales

Depuis un nom complet, obtenir les initiales :

if $Nom_complet:
    mots = $Nom_complet.split()  # Sépare par les espaces
    initiales = ""
    for mot in mots:
        initiales += mot[0].upper()  # Première lettre en majuscule
    return initiales
return ""

Exemple : "Jean Dupont" → "JD"

Les erreurs courantes et solutions

Erreur 1 : "NameError"

Message : name 'Prenom' is not defined

Solution : N'oubliez pas le $ devant le nom de colonne.

❌ Prenom + " " + Nom
✅ $Prenom + " " + $Nom

Erreur 2 : Valeur vide qui bloque

Problème : Votre formule plante quand une cellule est vide.

Solution : Toujours vérifier si la valeur existe :

if $Montant:
    # Votre calcul ici
    return resultat
return None  # ou 0, ou "—"

Erreur 3 : Type incompatible

Message : can't concatenate str and int

Solution : Convertir les types :

# ❌ Erreur
"Total : " + $Montant

# ✅ Correct
"Total : " + str($Montant)

# ✅ Ou avec f-string (recommandé)
f"Total : {$Montant} €"

Cheat sheet : Les fonctions indispensables

Texte

$Nom.upper()           # MAJUSCULES
$Nom.lower()           # minuscules
$Nom.title()           # Première Lettre En Majuscule
$Nom.strip()           # Enlever espaces avant/après
$Nom.replace("a", "b") # Remplacer
len($Nom)              # Nombre de caractères

Nombres

round($Prix, 2)        # Arrondir à 2 décimales
abs($Valeur)           # Valeur absolue
max($A, $B)            # Le plus grand
min($A, $B)            # Le plus petit
sum([$A, $B, $C])      # Somme d'une liste

Dates

from datetime import datetime, timedelta

$Date.year             # Année (2026)
$Date.month            # Mois (1-12)
$Date.day              # Jour (1-31)
$Date.weekday()        # Jour semaine (0=Lundi)

# Ajouter des jours
$Date + timedelta(days=7)

# Différence en jours
($Date_fin - $Date_debut).days

Prochaines étapes

Félicitations ! Vous maîtrisez les bases de Python dans Grist. Pour aller plus loin :

Besoin d'aide ?

Chaque projet est unique. Si vous avez besoin d'un accompagnement personnalisé pour automatiser vos bases Grist :

Consulter mes prestations →