Règles d’accès dans Grist : verrouiller des lignes ou colonnes selon l’utilisateur

Dans Grist, le partage d’un document est très simple : vous envoyez un lien et vous choisissez le rôle (Viewer, Editor ou Owner).
Mais dès que vous avez besoin d’un contrôle plus fin – par exemple laisser quelqu’un modifier seulement certaines lignes ou cacher une colonne sensible – il faut passer aux règles d’accès (Access Rules en anglais).

C’est la fonctionnalité qui permet de faire de la sécurité au niveau ligne (row-level security) et au niveau colonne, exactement comme dans les vraies bases de données d’entreprise, mais sans écrire une seule ligne de code SQL.

Pourquoi c’est utile dans la vraie vie

  • Association : les bénévoles voient et modifient seulement les activités de leur antenne locale
  • Petite entreprise : les commerciaux voient leurs propres clients mais pas ceux des collègues
  • Administration / collectivité : un agent ne voit que les dossiers de son service
  • Cabinet comptable : le client voit ses factures mais pas celles des autres clients
  • Éducation : un professeur ne voit que les élèves de sa classe

Tout cela avec le même document partagé.

Comment ça marche en 3 phrases

  1. Par défaut, tout le monde qui a le droit « Editor » peut tout voir et tout modifier.
  2. Dès que vous ajoutez une règle d’accès sur une table, Grist applique cette règle à tous les utilisateurs.
  3. La règle est une simple formule qui doit renvoyer True ou False. Si c’est False, la ligne (ou la colonne) devient inaccessible pour cet utilisateur.

Activer les règles d’accès

  1. Ouvrez votre document
  2. Allez dans l’onglet Data (à gauche)
  3. Cliquez sur la table concernée
  4. Dans le panneau de droite, section Access Rules, cliquez sur Add Rule

Vous avez alors deux possibilités :

  • Row rules → contrôle ligne par ligne
  • Column rules → contrôle colonne par colonne

Exemple 1 – Un utilisateur ne voit que ses propres lignes (le cas le plus fréquent)

Imaginons une table « Clients » avec ces colonnes :

  • Id, Nom, Prénom, Commercial (texte), Chiffre d’affaires, Notes internes

Vous voulez que chaque commercial ne voie que ses propres clients.

Solution en 3 étapes :

  1. Ajoutez une colonne « Commercial » (type Text)
  2. Dans chaque ligne, mettez le nom ou l’email du commercial responsable
  3. Créez une règle d’accès de type Row avec la formule :
user.Email == $Commercial

ou, si vous avez mis le nom affiché :

user.Name == $Commercial

C’est tout.
Dès que quelqu’un ouvre le document, Grist ne lui montre que les lignes où son email (ou son nom) correspond.

Exemple 2 – Cacher une colonne sensible

Dans la même table, la colonne « Notes internes » ne doit être visible que par le directeur et l’admin.

  1. Créez une règle d’accès de type Column sur la colonne « Notes internes »
  2. Formula :
"user.Email in ['[email protected]', '[email protected]']"

ou plus simple si vous avez un rôle spécial :

user.Access == "owners"   # seulement les owners du document

Les variables magiques : user.

Grist met à disposition ces informations sur l’utilisateur connecté :

  • user.Email
  • user.Name
  • user.Access → "owners", "editors" ou "viewers"
  • user.IsMember → True si l’utilisateur fait partie du site d’équipe

Vous pouvez les combiner comme vous voulez.

Exemple 3 – Association avec plusieurs antennes

Table « Adhérents » avec colonne « Antenne » (Paris, Lyon, Marseille…)

Règle :

$Antenne == user.Antenne or user.Access == "owners"

Il suffit de créer une colonne « Antenne » dans le profil de chaque utilisateur (ou de remplir manuellement une table « Utilisateurs » et faire une référence).

Exemple 4 – Masquer les lignes archivées sauf pour les admins

Colonne « Statut » avec choix : Actif / Archivé

Règle :

$Statut != "Archivé" or user.Access == "owners"

Bonnes pratiques

  1. Commencez toujours par tester avec votre propre compte (ajoutez une condition or user.Email == "votre@email").
  2. Utilisez la vue Raw Data pour vérifier exactement ce que l’utilisateur voit.
  3. Ne mettez jamais de règle trop compliquée : si la formule est lente, tout le document ralentit.
  4. Les règles s’appliquent aussi aux widgets (chart, form, summary) : si une ligne est cachée, elle disparaît partout.
  5. Les formulaires publics (lien « Anyone can submit ») ignorent les règles d’accès : attention si vous collectez des données sensibles.

Erreurs classiques

  • Oublier le $ devant le nom de colonne → la règle ne marche jamais
  • Mettre des guillemets autour d’un champ numérique → comparaison toujours fausse
  • Utiliser user.Name alors que plusieurs personnes ont le même prénom
  • Créer une règle puis oublier de la désactiver en test → tout le monde voit plus rien

En résumé

Les règles d’accès de Grist sont extrêmement puissantes et restent très simples à mettre en place.
Une fois que vous avez compris la logique « formule qui renvoie True/False », vous pouvez protéger n’importe quelle donnée, ligne ou colonne, sans créer plusieurs documents ni multiplier les copies.

C’est exactement ce qui permet à une petite structure (association, TPE, service administratif) d’utiliser un seul document partagé en toute sécurité, sans payer les prix d’une vraie base de données d’entreprise.

Lien officiel pour aller plus loin :
https://support.getgrist.com/access-rules/

Si vous avez un cas concret à protéger, dites-le-moi en commentaire, je vous écris la règle exacte en 2 minutes.