Gérer les dates et savoir qui a modifié quoi dans Grist

Guide complet pour les associations, petites entreprises et services administratifs

Dans tous les projets réels (gestion de membres, suivi de dons, planning d’événements, inscriptions, facturation…), on a besoin de savoir quand une information a été créée ou modifiée, et par qui.
Grist propose des outils simples et puissants pour cela : les colonnes de type Date / DateTime, les formules automatiques de timestamp, et les colonnes spéciales qui enregistrent l’auteur des modifications.

1. Les deux types de colonnes temporelles

Type Ce qu’il stocke Affichage par défaut Quand l’utiliser
Date Seulement la date (ex : 2025-04-15) 15/04/2025 Anniversaire, date d’échéance, date de facture
DateTime Date + heure + fuseau (ex : 2025-04-15 14:30:00 Europe/Paris) 15/04/2025 14:30 Date de réception d’un formulaire, heure d’arrivée d’un bénévole

Pour créer la colonne :
Ajouter une colonne → Type → Date ou DateTime
Vous pouvez cocher « Inclure l’heure » sur une colonne Date pour la transformer en DateTime.

2. Timezone : attention à bien la régler

Grist travaille toujours en UTC en interne, mais affiche et enregistre dans le fuseau horaire du document.
Pour le régler :
Paramètres du document (roue dentée en haut à droite) → Timezone → choisissez « Europe/Paris » (ou le vôtre).

Si vous laissez « Browser default », chaque utilisateur verra les dates dans son propre fuseau → risque de confusion dans une équipe.

3. Créer automatiquement la date/heure de création

Méthode la plus simple : utiliser un Trigger (déclencheur).

  1. Ajoutez une colonne DateTime, appelez-la par exemple « Date création »
  2. Cliquez sur la colonne → Formula → cochez Trigger
    Entrez la formule : datetime.now()
  3. Validez

Résultat : à chaque nouvelle ligne ajoutée (manuellement ou via un formulaire), la cellule se remplit automatiquement avec la date et l’heure exacte, et elle ne bouge plus jamais.

4. Date/heure de dernière modification

Même principe :

  • Colonne « Dernière modification » → Type DateTime
  • Formula → Trigger → datetime.now()

Cette fois la valeur se met à jour à chaque modification de la ligne (même un simple changement de statut).

5. Savoir qui a créé ou modifié la ligne (traçabilité)

Grist propose 4 colonnes spéciales intégrées :

Colonne spéciale Ce qu’elle contient Comment l’ajouter
$user L’adresse e-mail de la personne connectée Ajouter colonne → Type → User
$user.Name Le nom complet Type → User.Name
$user.Access Le niveau d’accès (Owner, Editor, Viewer) Type →
$user dans une formule L’objet utilisateur complet

Pour enregistrer l’auteur une fois pour toutes :

  1. Colonne « Créé par » → Type Text ou Choice
    Formula → Trigger → $user.Email (ou $user.Name si vous préférez le nom)
  2. Colonne « Modifié par » → Type Text
    Formula → Trigger → $user.Email

L’auteur est ainsi figé au moment de la création ou de chaque modification.

6. Exemple complet d’une table « Adhésions » bien suivie

Colonne Type Formule / Trigger Résultat
Adhérent Text
Date adhésion Date Trigger + datetime.now() Date du jour automatiquement
Heure inscription DateTime Trigger + datetime.now() Heure précise si formulaire
Créé par Text Trigger + $user.Email qui a rempli le formulaire
Statut Choice Payé / En attente / Refusé
Dernière modification DateTime Trigger + datetime.now() Mise à jour à chaque changement
Modifié par Text Trigger + $user.Email Qui a changé le statut

7. Cas concret : formulaire public d’inscription

Vous partagez un formulaire Grist en lien public (widget Form).
Même si la personne n’est pas connectée à Grist :

  • Les colonnes DateTime avec trigger datetime.now() fonctionnent parfaitement
  • Les colonnes $user.* affichent AnonymousUser → c’est normal et attendu

Si vous avez besoin de connaître le nom, ajoutez simplement un champ texte « Votre nom » dans le formulaire.

8. Bonnes pratiques que j’utilise tous les jours

  1. Toujours régler le timezone du document dès la création
  2. Mettre les colonnes de suivi (création/modification) en vert ou gris clair pour les repérer facilement
  3. Ne jamais modifier manuellement une colonne avec trigger (elle serait écrasée à la prochaine modification)
  4. Si vous avez besoin de la date du jour sans heure → utilisez today() au lieu de datetime.now()

9. Résumé rapide des formules utiles

Besoin Formule
Date du jour (sans heure) today()
Date et heure actuelles datetime.now()
Date + 30 jours datetime.now() + timedelta(days=30)
Extraire l’année $date.year
Formater une date en texte $date.strftime("%d/%m/%Y")

Avec ces quelques colonnes et triggers, vous avez immédiatement une traçabilité complète, sans aucune macro ni script compliqué. C’est exactement ce qui fait gagner un temps fou aux associations et petites structures : tout est clair, tout est automatique, et tout est auditable en un coup d’œil.

Vous avez une question sur la mise en place dans votre cas précis ? Dites-moi en commentaire ce que vous cherchez à suivre (adhésions, événements, dons, bénévoles…) et je vous donne la structure exacte.