XLSForm, en une phrase
Un XLSForm est un fichier tableur (Excel ou Google Sheets) qui décrit un questionnaire
selon une convention précise, organisée en trois feuilles : survey, choices et
settings. Ce fichier est ensuite compilé en XForms, le format XML que lisent
réellement les applications de collecte — KoboCollect, ODK Collect ou le
moteur web Enketo.
Les 3 feuilles d'un XLSForm
1. survey — les questions
La colonne vertébrale du formulaire, une ligne par question ou élément de structure.
| type | name | label | relevant | constraint |
|---|---|---|---|---|
| select_one oui_non | a_recu_aide | Avez-vous reçu l'aide ? | ||
| integer | montant_recu | Montant reçu (FCFA) | ${a_recu_aide} = 'oui' | . >= 0 |
2. choices — les options de réponse
Les listes utilisées par les questions à choix (select_one, select_multiple), regroupées par list_name.
| list_name | name | label |
|---|---|---|
| oui_non | oui | Oui |
| oui_non | non | Non |
3. settings — les réglages du formulaire
Titre, identifiant, version et langue par défaut du questionnaire.
| form_title | form_id | version | default_language |
|---|---|---|---|
| PDM Cash ECHO | pdm_cash_echo_2026 | 202607241 | fr |
Les types de questions courants
- text — réponse libre courte.
- integer / decimal — valeur numérique.
- select_one / select_multiple — choix unique ou multiple, défini dans
choices. - date / dateTime — sélecteur de date.
- geopoint — coordonnées GPS captées automatiquement.
- image / audio — pièce jointe capturée sur l'appareil.
- note — texte affiché, sans réponse attendue (consignes, transitions).
- calculate — valeur calculée à partir d'autres réponses, invisible pour l'enquêteur.
Sauts logiques et contraintes
Deux colonnes, deux rôles très différents, souvent confondus :
relevant— contrôle si la question s'affiche. Si la condition est fausse, la question est masquée et ignorée (c'est le « saut logique »).constraint— contrôle si une réponse est valide. La question reste affichée, mais la réponse est refusée tant que la condition n'est pas respectée.
Exemple : relevant: ${a_recu_aide} = 'oui' n'affiche « Montant reçu » que si la réponse précédente est « Oui ». constraint: . >= 0 refuse un montant négatif.
Groupes et répétitions
begin_group / end_group regroupent des questions liées (par exemple, un module « sécurité alimentaire »). begin_repeat / end_repeat répètent un bloc un nombre variable de fois — typiquement pour lister les membres d'un ménage un par un.
Le multilingue
Un même XLSForm peut porter plusieurs langues : il suffit de dupliquer les colonnes label en label::français (fr), label::english (en), etc. L'enquêteur choisit la langue au lancement du formulaire, sans dupliquer le fichier.
Erreurs fréquentes
- Noms de variables incohérents — une faute de frappe dans un
namecasse silencieusement toutes les références qui pointent dessus. list_namemal orthographié — une liste de choix introuvable rend la question invisible sans message d'erreur clair.- Sauts logiques en cascade non testés — un formulaire complexe avec beaucoup de
relevantimbriqués doit être testé chemin par chemin, pas juste question par question. - Colonnes manquantes — une feuille
settingsincomplète (pas deform_id) bloque parfois l'import silencieusement.
Glossaire XLSForm
survey- La feuille des questions et de la structure du formulaire.
choices- La feuille des options de réponse, groupées par liste.
settings- La feuille des réglages globaux du formulaire (titre, id, langue).
relevant- Condition d'affichage d'une question (saut logique).
constraint- Condition de validité d'une réponse.
calculation- Formule utilisée par un champ
calculate. - XForms
- Le format XML compilé, effectivement lu par les applications de collecte.
Questions fréquentes
Qu'est-ce qu'un XLSForm exactement ?
Un XLSForm est un fichier tableur (Excel ou Google Sheets) qui décrit un questionnaire selon une convention précise : trois feuilles nommées survey, choices et settings. Ce fichier est ensuite compilé en XForms, le format XML que lisent les applications de collecte comme KoboCollect ou ODK Collect.
Quelle est la différence entre relevant et constraint ?
relevant contrôle si une question s'AFFICHE (saut logique) : si la condition est fausse, la question est masquée et ignorée. constraint contrôle si une réponse est VALIDE : la question reste affichée, mais la réponse est refusée tant qu'elle ne respecte pas la condition.
Peut-on générer un XLSForm sans connaître sa syntaxe ?
Oui. Des générateurs comme le XLS Form Builder d'Opti' créent un XLSForm complet à partir d'une description en langage naturel (« une PDM cash pour ECHO »), avec sections, sauts logiques et choix de réponses déjà écrits dans la bonne syntaxe, prêt à éditer et à importer.
Un XLSForm fonctionne-t-il sur Kobo ET sur ODK ?
Oui, dans l'immense majorité des cas. XLSForm est justement le format partagé entre KoboToolbox, ODK et SurveyCTO — c'est ce qui rend un questionnaire portable d'une plateforme à l'autre sans réécriture.
Générer un XLSForm avec Opti'
Opti' écrit la syntaxe XLSForm pour vous : décrivez votre enquête, et Opti Gemba génère un fichier complet — sections, sauts logiques, contraintes, multilingue — prêt à importer dans Kobo ou ODK.