Bloquer la saisie manuelle dans une colonne liste de choix

Bonjour,
Dans une colonne qui concerne un avis, j’ai une liste de choix unique “Favorable” “Favorable avec réserve” “Défavorable”.
Mais si une personne indique autre chose, c’est pris en compte (texte encadré de rouge).
Y a-t-il une possibilité de bloquer aux seules valeurs de la liste ? (peut-être via une formule d’initialisation ?)
Merci par avance :slight_smile:

Bonjour ! Puisque l’objectif est d’empêcher qu’une valeur non prédéfinie soit entrée par l’utulisateur, je passerais par les permissions avancées.

Malheureusement, il n’est pas possible de construire notre permission sur le simple fait que la valeur est encadrée en rouge (c’est un indice visuel que donne Grist mais pour autant, il ne considère pas que la cellule est en erreur). Il va donc falloir écrire une permission pour la table en question, en explicitant les valeurs autorisées dans la colonne (dans l’exemple ci-dessous la colonne s’appelle $Avis) :

La règle se lit ainsi : si la valeur saisie (c’est-à-dire la nouvelle valeur, ou newRec) dans la colonne $Avis n’est ni « Favorable », ni « Favorable avec réserve », ni « Défavorable », alors empêche de créer ou mettre à jour la ligne.

Vous pouvez tester et recopier ce modèle : Interdire des valeurs encadrées de rouge - Grist

Merci beaucoup Enro !
je vais tester ça

est-ce que c’est la même façon de faire si on utilise une liste en référence ?

et autre question : est-il possible de faire en sorte que la personne ne puisse pas ajouter un terme qui n’existe pas ?
car dans cet exemple si on écrit “Test” et qu’on clique sur le petit plus (add “Test”), ça fonctionne, ce qui est embêtant

Enfin, dans votre exemple, le Delete ne fonctionne pas, alors qu’il est bien en vert :thinking:

Avec les références, l’utilisateur est obligé de choisir parmi une liste d’éléments proposés.

Ce qu’il saisira permettra de filtrer la liste des propositions mais ne permettra pas de créer une nouvelle valeur non-répertoriée

Bonne idée ! Avec des références, une valeur invalide est vraiment considérée comme en erreur par Grist et on peut avoir une permission plus générale basée sur une colonne booléenne $Invalide contenant cette formule

if not $Avis:
  return False
else:
  return ISERROR($Avis)

Ce qui donnerait la permission suivante :

qui se lit ainsi : si la nouvelle valeur saisie est invalide alors bloque la création ou la mise à jour de l’enregistrement.

(Il y a une subtilité du fait que lorsqu’on crée une nouvelle ligne en renseignant une valeur invalide, alors l’enregistrement est créé avant que la formule qui détermine si c’est une valeur invalide soit calculée et donc avant que la permission s’applique. C’est pourquoi la formule que j’ai donnée doit prévoir le cas où la cellule est vide…).

Je vous ai préparé un modèle ici : Interdire des valeurs encadrées de rouge - Grist

Par défaut Grist autorise l’utilisateur à ajouter une nouvelle valeur à la liste des références possibles :

Pour empêcher que ça arrive, il faut bloquer la création de nouvelles lignes dans la table vers laquelle pointe la colonne Référence :

C’est ce que j’ai fait dans le modèle ci-dessus, je vous laisse tester le résultat :slightly_smiling_face:

Ah… j’ai testé et la suppression de ligne fonctionne bien ! Pouvez-vous me détailler les étapes que vous suivez quand ça arrive ?