Comment créer un sondage de réunion type Doodle dans Grist (avec nombre et liste des inscrits en temps réel)

Lors de l’organisation d’une réunion, on cherche souvent à proposer un formulaire simple façon Doodle, où chaque participant peut cocher plusieurs créneaux tout en voyant quelles personnes se sont déjà positionnées sur chaque horaire.

Par défaut, les formulaires Grist sont conçus pour garder les réponses confidentielles. Cependant, en combinant les Listes de références (RefList) et quelques formules Python, il est très facile de créer un sondage dynamique où les créneaux affichent en direct le nombre et les prénoms des votants !

:light_bulb: Principe du fonctionnement

Nous allons créer deux tables :

  1. Sondage_Reunion (Réponses) : Stocke le nom, l’e-mail et les créneaux choisis par chaque participant.

  2. Creneaux (Choix proposés) : Répertorie les dates/horaires et calcule en direct la liste des votants.

:hammer_and_wrench: Guide de mise en œuvre pas à pas

Étape 1 : Créer la table des réponses (Sondage_Reunion)

  1. Cliquez sur + Ajouter > Ajouter une table > Table vide.

  2. Nommez la table Sondage_Reunion.

  3. Créez deux colonnes de texte :

    • Participant (Texte)

    • Email (Texte)

Étape 2 : Créer la table des créneaux (Creneaux)

  1. Cliquez sur + Ajouter > Ajouter une table > Table vide.

  2. Nommez la table Creneaux.

  3. Ajoutez les 4 colonnes suivantes :

  • Nom (Texte) : Saisissez vos propositions de créneaux (ex: Lundi 14h, Mardi 10h).

  • Inscrits (Formule) : Compte le nombre de participants ayant sélectionné ce créneau.

    Python

    len([r for r in Sondage_Reunion.all if $id in (r.Disponibilites or [])])
    
    
  • Liste_Noms (Formule) : Génère la liste des prénoms séparés par une virgule.

    Python

    noms = [r.Participant for r in Sondage_Reunion.all if $id in (r.Disponibilites or []) if r.Participant]
    return ", ".join(noms)
    
    
  • Nom_Affiche (Formule) : Formate l’intitulé qui sera affiché dans le formulaire public.

    Python

    if $Inscrits == 0:
        return f"{ $Nom } — [ 0 INSCRIT ]"
    else:
        s = "s" if $Inscrits > 1 else ""
        return f"{ $Nom } — [ { $Inscrits } INSCRIT{s.upper()} : { $Liste_Noms.upper() } ]"
    
    

Étape 3 : Lier les deux tables

  1. Revenez sur la table Sondage_Reunion.

  2. Ajoutez une nouvelle colonne nommée Disponibilites.

  3. Dans le panneau latéral droit, sous TYPE DE COLONNE :

    • Choisissez Liste de références (RefList).

    • DONNÉES DE LA TABLE : Sélectionnez Creneaux.

    • MONTRER LA COLONNE : Sélectionnez Nom_Affiche.

Étape 4 : Ajouter et publier le formulaire

  1. Cliquez sur + Ajouter à la page > Formulaire.

  2. Sélectionnez Sondage_Reunion comme table source.

  3. Sous le titre du formulaire, ajoutez un texte d’explication pour vos usagers :

:light_bulb: Chaque créneau affiche en temps réel le nombre de participants inscrits ainsi que leurs prénoms. Vous pouvez cocher plusieurs choix.

  1. Cliquez sur le bouton bleu Publier en bas à droite.

:tada: Résultat

Lorsque vos collègues ouvrent le lien du formulaire public, chaque case à cocher affiche les résultats en temps réel :

  • Lundi 14h — [ 0 INSCRIT ]

  • Mardi 10h — [ 1 INSCRIT : MARIE ]

  • Vendredi 18h — [ 3 INSCRITS : SOPHIE, LUC, PIERRE ]

En espérant que ce petit tutoriel aide la communauté à construire des sondages de réunion interactifs 100 % natifs dans Grist !

2 « J'aime »

Génial, merci pour ce tuto ! C’est une demande qui revient souvent dans le canal Tchap Grist-Utilisateurs…

Est-ce que tu pourrais mettre à disposition un modèle avec les tables et formules prêtes à l’emploi ? Ce serait encore plus génial… :star_struck:

1 « J'aime »