Conditionnalité d'une liste déroulante 'référence' dans un formulaire

Bonjour tout le monde,

Pour un formulaire, j’aimerais programmer une conditionnalité d’une liste déroulante ‹ référence › dans un formulaire en fonction d’un champ ‹ référence › rempli précédemment par la personne qui répond au formulaire.

L’idée, c’est de demander un département, puis une commune en France, afin de cartographier plusieurs centaines de structures.

La liste déroulante d’un champ ‹ référence › dans un formulaire permet de proposer 1000 options maximum, or il y a plus de 1000 communes en France. Mais pour un département donné, il y a toujours moins de 1000 communes (~900 maximum). D’où l’idée de d’abord demander le département puis la commune.

Merci pour votre aide !

2 « J'aime »

Bonjour :slight_smile:

Merci pour cette question. Dans les tables, il est possible de filtrer des choix d’une liste de référence en fonction d’une autre colonne de référence (ex : afficher les villes d’un département préalablement choisi au lieu de l’ensemble des villes) ; mais, malheureusement, pour l’instant, ce n’est pas possible dans les formulaires.

J’ai fait un post ici avec un cas pratique pour le filtre sur la colonne : FIltrer les choix affichés dans une liste déroulante (référence) en fonction d'une autre liste déroulante (référence)

La condition qui s’applique bien lors du choix dans la table, ne s’applique pas dans le formulaire. Cela revient probablement au fait que les champs conditionnels ne sont pas possibles dans les formulaires, cf Conditional questions in forms · Issue #955 · gristlabs/grist-core · GitHub

Je ne connais pas d’alternative / contournement ce jour, mais peut-être qu’un autre membre de la communauté aurait une solution ?

2 « J'aime »

Bonjour,
Pas d’alternative de mon côté non plus. J’espère que les formulaires évolueront prochainement car les manques à ce niveau sont assez nombreux et gênants (champs conditionnels, valeurs par défaut, règles de validation…)
:crossed_fingers:

2 « J'aime »

Pour info, toutes les demandes liées aux forms sur Github sont répertoriées ici : GitHub · Where software is built

Je viens de voir le sujet qui nous pose problème :

Il y a également ce que tu cites Guillaume :

Aussi l’ajout de PJ qui est très demandé : Adding functionality to forms (long text and attachments) · Issue #886 · gristlabs/grist-core · GitHub

Je ne vois pas d’issue pour les valeurs par défaut par contre…il faudra qu’on la crée je pense !

1 « J'aime »

J’ai peut-être une vue assez simpliste de la chose mais selon moi tout ce que Grist permet de mettre en place au niveau d’une table pour améliorer/fiabiliser la saisie doit aussi être actif dans le cas d’une saisie via formulaire.
Je viens de lire l’issue sur les règles de validation et ça me semble bien compliqué comme discussion… :face_with_diagonal_mouth:

pour la création d’issue @audezu a parlé ici d’un formulaire à venir pour pouvoir remonter nos besoins

Je viens de buter sur ce problème, j’avais bien en tête qu’on ne peut pas conditionner les réponses à une question en fonction d’une autre question, mais je ne me souvenais que la conditionnalité d’une colonne n’était pas prise en compte par le widget Formulaire. C’est vraiment bête :tired_face:

Bonjour à tous,

Toujours très intéresser par cette fonctionnalité également, je ne sais pas si les choses ont évolué à ce sujet ?
Merci

3 « J'aime »

@louisp au final tu as trouvé des solutions alternatives ?
on a un besoin très similaire
une collectivité doit donner le nom de sa collectivité mais on a plusieurs dizaines de milliers de lignes… donc impossible de leur demander de choisir (surtout avec une limite à 1000 dans un choix déroulant)

donc pour l’instant …voilà nos alternatives :

soit on demande à la collectivité de choisir son département (référence table département) - c’est déjà ça… puis c’est un champs libre pour la collectivité

soit on demande le numéro de SIRET (et on devinera le nom exact ensuite

Soit on passe par une démarche simplifiée et on le connecte à notre grist… mais c’est moins simple…

Bonjour, ce fil discute de deux problèmes différents :

  1. cas où la réponse à une question conditionne les choix proposés à la question suivante
  2. cas où on filtre les choix proposés.

Dans le second cas, voici un contournement possible : il faut passer par une nouvelle colonne qui va être calculée en fonction de la première, pour ne proposer que les options possibles.

Par exemple j’ai un catalogue de formations dans une table FORMATIONS avec une colonne $Intitule, une colonne $Date et une colonne booléenne $Dans_le_futur qui vaut = $Date and $Date > TODAY(). Dans mon formulaire d’inscription, je veux proposer uniquement les formations qui ont une date dans le futur.

Normalement, dans une vue Table de la table INSCRIPTIONS, j’utiliserais la condition de liste déroulante choice.Dans_le_futur sur la colonne $Formation de type référence vers FORMATIONS. Mais ça ne marche pas dans la vue Formulaire, il faut donc que je crée une nouvelle colonne $Intitule_catalogue dans la table FORMATIONS avec une formule qui est vide lorsque la formation est dans le passé, et vaut $Intitule lorsque la formation est dans le futur. Voici cette formule :

if $Dans_le_futur:
  return f"{$Intitule}"
else:
  return ""

Ensuite, dans la table INSCRIPTIONS, je reprends la colonne $Intitule_catalogue sous forme de référence vers la table FORMATIONS. C’est cette colonne qui va afficher les choix possibles pour s’inscrire, à savoir les formations organisée à une date future.

Attention :

  • comme la formule de la colonne $Intitule_catalogue se recalcule et se vide une fois la date de la formation passée, il convient de copier l’information dans une colonne de données qui prend comme formule d’initialisation = $Intitule_catalogue et qui est une référence vers la table FORMATIONS

Voici le modèle réutilisable que je viens de décrire : Modèle formulaire choix filtrés - Grist

1 « J'aime »