Ajouter des contraintes dans XLSForm

Dernière mise à jour : 24 Jun 2026

Les contraintes, également appelées critères de validation, sont un type de logique de formulaire permettant de restreindre les réponses acceptables à une question en fonction d’une condition prédéfinie. Si la condition de contrainte n’est pas remplie, un message d’erreur personnalisable s’affiche, invitant l’utilisateur du formulaire à saisir une réponse valide.

Pour en savoir plus sur la logique de formulaire dans XLSForm, consultez l'article Introduction à la logique de formulaire dans XLSForm.

Cet article couvre les sujets suivants :

  • Ajouter des contraintes aux questions dans XLSForm

  • Combiner plusieurs conditions de contrainte

  • Personnaliser les messages d’erreur de contrainte

  • Contraintes avancées dans XLSForm

Note : Cet article porte sur l'ajout de contraintes dans XLSForm. Pour en savoir plus sur l'ajout de contraintes dans l'interface de création de formulaires KoboToolbox (KoboToolbox Formbuilder), consultez l'article Ajouter des critères de validation dans le Formbuilder.

Pour vous exercer à l'ajout de contraintes dans XLSForm, consultez le cours XLSForm Fundamentals de la KoboToolbox Academy.

Ajouter une contrainte

Les contraintes sont construites à l’aide de références de questions, d”opérateurs de comparaison et de constantes. Les conditions de contrainte doivent être remplies pour valider ou envoyer un formulaire. Dans le cas contraire, un message d’erreur s’affiche et les utilisateurs ne peuvent pas passer à la page suivante ni envoyer le formulaire.

Pour ajouter des contraintes dans XLSForm :

  1. Ajoutez une colonne constraint à l”onglet survey.

  2. Dans la colonne constraint, définissez la condition qui doit être remplie pour que la réponse soit valide.

    • Utilisez un point . pour référencer la question de la ligne où vous ajoutez une contrainte.

    • Utilisez un opérateur de comparaison, suivi d’une valeur de référence, pour construire une contrainte simple.

    • Par exemple, . > 18 restreint une question de type integer pour n’accepter que les valeurs supérieures à 18.

onglet survey

type

name

label

constraint

integer

age

What is your age?

. >= 18

integer

household

How many people live in your household?

. <= 30

integer

income

Out of those, how many earn income?

. <= ${household}

survey

Formater les valeurs de référence

La valeur de référence dans une condition de contrainte doit correspondre au type de la question pour laquelle vous ajoutez une contrainte. Les formats de valeurs de référence pour les principaux types de questions sont listés ci-dessous :

Type de question

Format de la valeur de référence

Exemple

integer

Nombre

. > 35

select_one

Nom du choix (tel que défini dans l’onglet choices) entre guillemets

. = 'yes'

select_multiple

Nom du choix combiné avec la fonction selected()

selected(., 'chair')

date

Date au format date('YYYY-MM-DD')

. > date('2021-01-01')

text

Texte entre guillemets (rarement utilisé pour les contraintes)

. != 'Not applicable'

Pour en savoir plus sur la construction d'expressions de logique de formulaire dans XLSForm, consultez l'article Introduction à la logique de formulaire dans XLSForm.

Combiner plusieurs conditions de contrainte

Plusieurs conditions de contrainte peuvent être combinées en une seule expression pour déterminer si une réponse est valide. Les conditions peuvent être combinées à l’aide des opérateurs logiques and, or et not :

  • Utilisez and lorsque toutes les conditions doivent être remplies pour qu’une réponse soit valide.

    • Par exemple : . > 18 and . < 65

  • Utilisez or lorsqu’au moins une condition doit être remplie pour qu’une réponse soit valide.

    • Par exemple : . < 18 or ${student} = “yes”

  • Utilisez not pour indiquer qu’une condition ou un ensemble de conditions ne doit pas être rempli (par exemple, lorsque deux conditions ne peuvent pas être vraies simultanément pour qu’une réponse soit valide).

    • Par exemple : not(. < 18 and ${household_head} = “yes”)

onglet survey

type

name

label

hint

constraint

integer

age

What is your age?

Must be less than 18 or above 65 to participate

. < 18 or . > 65

integer

weight

How much do you weigh?

Must be between 30 and 200 kg

. >= 30 and . <= 200

survey

Personnaliser les messages d’erreur de contrainte

Par défaut, lorsqu’une valeur de réponse dans le formulaire ne remplit pas la condition de contrainte, un message d’erreur « Value not allowed » s’affiche. Il est recommandé de personnaliser ce message pour informer les utilisateurs de la raison pour laquelle la valeur est invalide, leur permettant ainsi de corriger leur saisie.

Pour personnaliser le message d’erreur de contrainte :

  1. Ajoutez une colonne constraint_message à l”onglet survey.

  2. Dans la colonne constraint_message, saisissez le texte que vous souhaitez afficher comme message d’erreur lorsque les conditions de contrainte ne sont pas remplies.

onglet survey

type

name

label

constraint

constraint_message

integer

age

What is your age?

. >= 18

Must be older than 18.

Contraintes avancées dans XLSForm

Au-delà des contraintes de base, vous pouvez personnaliser les conditions pour garantir la qualité des données et vous adapter à de nombreux scénarios de collecte de données. Pour construire des conditions de contrainte plus avancées dans XLSForm :

  • Utilisez des parenthèses pour combiner plus de deux conditions

  • Utilisez des fonctions pour plus de flexibilité

  • Utilisez des expressions régulières pour restreindre les réponses de type texte

Voici des exemples de critères de validation plus avancés :

Critère

Description

(. >= 18 and . < 130) or (. = 999)

La réponse doit être comprise entre 17 et 130 ou être égale à 999 (souvent utilisé pour les non-réponses).

count-selected(.)<=3

Limite la sélection multiple à trois options au maximum.

not(${in_university} = “yes” and . < 16)

Si la réponse à in_university est “yes”, la réponse actuelle doit être supérieure à 16.

not(selected(., “none”) and count-selected(.)>1)

L’option “none” ne peut pas être sélectionnée si une autre réponse dans une question select_multiple est déjà sélectionnée.

. < today()

La date saisie doit être antérieure à la date du jour.

regex(., “^\d{2}$”)

La saisie est limitée à deux chiffres (à l’aide d”expressions régulières).

decimal-time(.)>=0.5

L’heure saisie doit être égale ou postérieure à 12h00.