Le type de question select_multiple affiche une liste dans laquelle le répondant peut sélectionner une ou plusieurs options. Par défaut, les choix s’affichent sous forme de cases à cocher. La valeur stockée est une liste séparée par des espaces de toutes les valeurs de choix sélectionnées.

Spécification XLSForm de base

Feuille survey :

typenamelabel
select_multiple cropscrops_grownQuelles cultures le ménage cultive-t-il ?

Feuille choices :

list_namenamelabel
cropsmaizeMaïs
cropsbeansHaricots
cropsriceRiz
cropsvegetablesLégumes
cropsotherAutre

Pour plus de détails, consultez la spécification XLSForm.

Format des données stockées

La colonne exportée contient une liste séparée par des espaces des valeurs sélectionnées :

  maize beans vegetables
  

Utilisez la fonction selected() — et non = — pour tester les valeurs select_multiple dans les expressions (voir ci-dessous).

Utilisations

Les questions select_multiple sont utilisées pour :

  1. Collecter plusieurs réponses applicables (ex. : sources de revenus, cultures cultivées, symptômes)
  2. Éléments d’accord de type cases à cocher (ex. : “Sélectionner tout ce qui s’applique”)
  3. Inventaires de langues ou de compétences
  4. Toute question où plusieurs réponses sont simultanément valides

Options d’apparence

AppearanceDescription
(aucune)Cases à cocher par défaut, une par ligne
minimalWidget de sélection multiple déroulant
compactGrille compacte, colonnes ajustées à la largeur de l’écran
compact-NGrille compacte forcée à N colonnes
horizontalChoix disposés horizontalement en ligne (web)
horizontal-compactHorizontal, espacement compact (web)
labelAffiche uniquement les étiquettes sans cases à cocher (à utiliser avec list-nolabel)
list-nolabelAffiche uniquement les cases à cocher sans étiquettes (à utiliser avec label)
columns(N)Affichage en N colonnes (extension rtSurvey)

Exemple : Mise en page compacte 3 colonnes

typenamelabelappearance
select_multiple symptomssymptomsSélectionner tous les symptômes observéscompact-3

Utiliser selected() dans les expressions

Comme la valeur stockée est une chaîne séparée par des espaces, vous devez utiliser selected() pour vérifier si un choix spécifique a été sélectionné. Utiliser = ne fonctionnera pas correctement.

Dans relevant

Afficher une question de suivi uniquement si “autre” a été sélectionné :

typenamelabelrelevant
select_multiple cropscrops_grownQuelles cultures sont cultivées ?
textcrops_otherVeuillez préciser les autres culturesselected(${crops_grown}, 'other')

Dans constraint

Exiger au moins 2 choix :

typenameconstraintconstraint_message
select_multiple issuesissuescount-selected(.) >= 2Sélectionner au moins 2 problèmes

Limiter à un maximum de 3 :

typenameconstraintconstraint_message
select_multiple prioritiesprioritiescount-selected(.) <= 3Sélectionner au maximum 3 priorités

Dans calculate — réunir les étiquettes sélectionnées

Combinez selected-at(), count-selected() et choice-label() pour créer un résumé lisible :

typenamecalculation
calculatecrops_summaryjoin(’, ‘, ${crops_grown})

Option “Aucune des réponses ci-dessus” / option exclusive

Un schéma courant consiste à rendre une option mutuellement exclusive avec toutes les autres. Utilisez une constraint pour l’imposer :

typenamelabelconstraintconstraint_message
select_multiple issuesissuesSélectionner tous les problèmes présentsnot(selected(., 'none') and count-selected(.) > 1)“Aucun” ne peut pas être sélectionné avec d’autres options

choices :

list_namenamelabel
issueswaterPénurie d’eau
issuesroadsRoutes en mauvais état
issueshealthManque de services de santé
issuesnoneAucune des réponses ci-dessus

Compter et résumer les sélections

FonctionExempleRésultat
count-selected(field)count-selected(${crops_grown})Nombre de choix sélectionnés
selected(field, value)selected(${crops_grown}, 'maize')vrai/faux
selected-at(field, index)selected-at(${crops_grown}, 0)Première valeur sélectionnée
choice-label(field, value)choice-label(${crops_grown}, 'maize')Étiquette d’une valeur

Bonnes pratiques

  1. Utilisez toujours selected() dans relevant, constraint et calculate — jamais = ou !=.
  2. Ajoutez une contrainte pour limiter le nombre maximum de sélections si la conception de la question l’exige.
  3. Incluez une option “Aucun” ou “Non applicable” lorsque zéro sélection est une réponse valide.
  4. Pour les longues listes (15+ choix), utilisez minimal (liste déroulante multi-sélection) pour éviter un défilement excessif.
  5. Exportez les données et utilisez le fractionnement de chaînes dans votre outil d’analyse — le format séparé par des espaces nécessite un fractionnement avant le pivotement.

Limitations

  • Les valeurs select_multiple ne peuvent pas être comparées directement avec =. Utilisez toujours selected().
  • L’apparence compacte peut ne pas bien s’afficher pour les étiquettes de choix très longues.
  • Lors du filtrage des choix avec choice_filter, le filtrage s’applique à tous les choix affichés, de la même façon qu’avec select_one.
Cette page vous a-t-elle été utile ?