Guide

Remplir une liste déroulante Google Forms depuis Google Sheets

Noms des salariés, produits, salles, classes : une liste saisie à la main dans un formulaire est périmée le jour où elle change. Gardez-la plutôt dans un tableur, et laissez la question du formulaire la suivre.

Google Forms™ ne sait pas lire un tableur tout seul : les options d’une question se saisissent dans le formulaire. Ce guide montre deux façons de recopier une colonne de Google Sheets™ dans une question à liste déroulante et de la tenir à jour : un petit script gratuit, ou le module Quietools Lists, sans code. Les deux fonctionnent aussi pour les questions à choix multiples et à cases à cocher.

Temps nécessaire : environ 10 minutes. Il faut un compte Google ; un compte Gmail gratuit suffit.

1. Mettez la liste dans une colonne

Dans Google Sheets, saisissez les options dans une seule colonne, une par cellule, sous un titre : par exemple un onglet nommé Listes, le titre en A1 et les valeurs à partir de A2. Les deux méthodes ci-dessous ignorent les cellules vides et les doublons, et les options apparaissent dans le formulaire dans l’ordre de la colonne.

Pour changer l’ordre ou ne garder que certaines lignes sans toucher à votre liste, construisez une deuxième colonne avec une formule et lisez plutôt celle-ci. Par exemple, en B2, =SORT(UNIQUE(FILTER(A2:A; A2:A<>""))) donne la liste par ordre alphabétique, sans vide ni doublon.

2. Créez la question dans le formulaire

Dans votre formulaire, ajoutez une question, donnez-lui son titre définitif et choisissez le type Liste déroulante. Choix multiples et Cases à cocher conviennent aussi. Laissez les options telles quelles : elles seront remplacées.

3. Recopiez la colonne dans la question

Il y a deux façons de le faire.

Option A, gratuite : un petit script

  1. Dans le formulaire, cliquez sur le menu à trois points, puis sur Éditeur de scripts.
  2. Remplacez le code par le script ci-dessous. Collez l’identifiant du tableur (la longue partie de son adresse, entre /d/ et /edit), la plage à lire et le titre exact de votre question.
  3. Sélectionnez la fonction updateChoices, cliquez sur Exécuter et acceptez les autorisations. La question contient maintenant les valeurs de la colonne.
const SPREADSHEET_ID = 'COLLEZ_L_IDENTIFIANT_DU_TABLEUR';
const RANGE = 'Listes!A2:A';
const QUESTION = 'Titre de votre question';

function updateChoices() {
  const values = SpreadsheetApp.openById(SPREADSHEET_ID)
    .getRange(RANGE).getDisplayValues()
    .flat().map(v => v.trim()).filter(String);
  // Ni vides ni doublons
  const choices = [...new Set(values)];
  // Ne jamais vider la question par erreur
  if (choices.length === 0) return;

  const item = FormApp.getActiveForm().getItems()
    .find(i => i.getTitle() === QUESTION);
  if (!item) throw new Error('Question introuvable : ' + QUESTION);
  switch (String(item.getType())) {
    case 'LIST':
      item.asListItem().setChoiceValues(choices); break;
    case 'MULTIPLE_CHOICE':
      item.asMultipleChoiceItem().setChoiceValues(choices); break;
    case 'CHECKBOX':
      item.asCheckboxItem().setChoiceValues(choices); break;
    default:
      throw new Error('Cette question n’a pas d’options à remplir.');
  }
}

Le script recopie la liste à chaque exécution. Pour qu’il le fasse tout seul, ouvrez Déclencheurs (l’icône en forme de réveil, à gauche), cliquez sur Ajouter un déclencheur, choisissez updateChoices, une source d’événement basée sur le temps, puis un minuteur toutes les heures. Le formulaire rattrape alors le tableur dans l’heure.

À savoir sur cette option : Google demande pour le script l’accès à tous vos tableurs, pas seulement à celui-ci. S’il échoue un jour, par exemple parce que l’onglet a été renommé, la question garde ses anciennes options et Google vous envoie seulement un récapitulatif des échecs par e-mail, une fois par jour par défaut. C’est à vous d’entretenir le code.

Option B, sans code : Quietools Lists

Quietools Lists est le module que nous faisons pour cela. Il ne lit que le tableur que vous choisissez dans le sélecteur de fichiers de Google, montre un aperçu avant de remplacer quoi que ce soit, et garde les options actuelles si le tableur est illisible.

  1. Installez Quietools Lists. Dans votre formulaire, cliquez sur l’icône en forme de pièce de puzzle, puis Quietools Lists, puis Ouvrir.
  2. Cliquez sur Ajouter une liaison et choisissez votre question. Cliquez sur Choisir un tableur et sélectionnez votre fichier.
  3. Dans Plage à lire, saisissez Listes!A2:A. Cliquez sur Continuer : l’aperçu indique combien d’options la question a maintenant, combien de valeurs contient la plage, et les premières d’entre elles. Cliquez sur Remplacer les choix.
La barre latérale de Quietools Lists dans Google Forms, pendant la création d’une liaison : la question, le tableur et la plage Sessions!A2:A.
Création d’une liaison : la question, le tableur choisi dans le sélecteur de fichiers de Google, et la plage à lire. Le module s’affiche dans la langue de votre compte Google ; ici, en anglais.

Ensuite, quand vous modifiez le tableur, cliquez sur Mettre à jour maintenant dans la barre latérale : la question suit. Le module ne se met pas à jour à heure fixe : il le fait quand vous cliquez, ou après chaque réponse avec la version complète, qui permet aussi de relier plusieurs questions, chacune à sa colonne.

Un formulaire dont deux questions sont remplies depuis deux colonnes d’un tableur, et la barre latérale de Quietools Lists qui liste les deux liaisons.
Deux questions, chacune remplie depuis sa colonne. Restaurer les choix précédents remet la liste telle qu’elle était avant la dernière mise à jour.

Bon à savoir

  • L’ordre des options est celui de la colonne. Triez le tableur, ou lisez une colonne triée construite avec la formule ci-dessus.
  • Les réponses gardent le texte qu’elles ont reçu. Si vous renommez une valeur dans le tableur, les réponses déjà reçues gardent l’ancien nom.
  • Seules les questions à options peuvent être remplies : liste déroulante, choix multiples et cases à cocher. Les grilles et les échelles linéaires, non.
  • Une liste pour plusieurs formulaires : donnez à chaque formulaire sa liaison, ou son script, qui lisent tous la même colonne.
  • Une question qui dépend de la réponse à une autre, par exemple un pays puis une ville : Google Forms ne sait pas filtrer une question d’après une réponse précédente sur la même page. Passez par des sections : une question « ville » par pays, et Accéder à la section en fonction de la réponse sur la question « pays ».

Un autre guide : un formulaire d’inscription à places limitées, où les ateliers complets disparaissent.