Parcourez la base de connaissances, explorez nos ressources et visitez notre Forum communautaire pour des informations plus détaillées
Dernière mise à jour : 23 avr. 2026
Les calculs peuvent être utilisés dans votre formulaire pour dériver de nouvelles variables, construire une logique de formulaire avancée et afficher des résultats aux répondants pendant la collecte de données.
Les calculs sont traités au sein du formulaire, ce qui permet de gagner du temps lors de l’analyse des données. Les résultats sont stockés sous forme de nouvelles colonnes dans la base de données finale et peuvent être utilisés dans l’ensemble du formulaire pour appliquer une logique de saut, définir des contraintes ou afficher du contenu dynamique dans les libellés de questions et les notes.
Cet article explique comment ajouter des calculs dans un XLSForm, en couvrant aussi bien l’arithmétique de base que les expressions plus avancées.
Note : Cet article porte sur l'ajout de calculs dans XLSForm. Pour apprendre à ajouter des calculs dans l'interface de création de formulaires KoboToolbox (KoboToolbox Formbuilder), consultez l'article Ajouter des calculs avec le Formbuilder.
Pour vous exercer à utiliser les calculs dans XLSForm, consultez le cours XLSForm Fundamentals de la KoboToolbox Academy.
Les expressions de calcul sont construites à partir d’une combinaison de références de questions, d”opérateurs mathématiques, de fonctions et de constantes.
Pour ajouter un calcul dans votre XLSForm :
Dans la colonne type de l’onglet survey, saisissez calculate pour ajouter un type de question calcul.
Saisissez un name pour la question calculate.
Étant donné que le calcul n’est pas affiché dans le formulaire, la question calculate ne nécessite pas de libellé.
Ajoutez une colonne calculation dans l’onglet survey.
Dans la colonne calculation, saisissez l”expression de calcul.
Les calculs peuvent aller de calculs arithmétiques de base à des calculs avancés utilisant des fonctions et des expressions régulières.
Pour faire référence au résultat du calcul dans le reste de votre formulaire (par exemple, dans une question de type note, un libellé de question ou une logique de formulaire), utilisez le format de référencement de questions ${nom_question}, où nom_question est le nom de la question calculate.
onglet survey
type |
name |
label |
calculation |
|---|---|---|---|
integer |
bags |
Nombre total de sacs vendus |
|
decimal |
price |
Prix par sac |
|
calculate |
total_amount |
${bags} * ${price} |
|
note |
display_total |
Le total est ${total_amount} |
|
survey |
Les calculs dans XLSForm peuvent aller de simples calculs arithmétiques à la dérivation avancée de variables.
Les calculs arithmétiques vous permettent d’effectuer des calculs de base à l’aide des opérateurs suivants :
Opérateur |
Description |
|---|---|
+ |
Addition |
- |
Soustraction |
* |
Multiplication |
div |
Division |
mod |
Modulo (calcule le reste d’une division) |
Les calculs dans XLSForm suivent la règle BODMAS pour l’ordre des opérations mathématiques : Parenthèses, Exposants, Division, Multiplication, Addition et Soustraction. Cela signifie que les calculs entre parenthèses sont effectués en premier, suivis des exposants, puis des divisions, des multiplications, et ainsi de suite. L’utilisation correcte des parenthèses garantit que vos calculs fonctionnent comme prévu.
Les calculs avancés dans XLSForm reposent souvent sur des fonctions et des expressions régulières pour les rendre plus efficaces.
Les fonctions sont des opérations prédéfinies utilisées pour effectuer automatiquement des tâches complexes, comme arrondir des valeurs, calculer des puissances ou extraire la date actuelle.
Les expressions régulières (regex) sont des modèles de recherche utilisés pour identifier des caractères spécifiques dans une chaîne de texte.
Pour une liste complète des fonctions disponibles dans XLSForm, consultez l'article Utiliser des fonctions avec XLSForm. Pour en savoir plus sur les expressions régulières, consultez l'article Utiliser des expressions régulières avec XLSForm.
Voici des exemples de calculs avancés :
Calcul |
Description |
|---|---|
|
Calculer l’âge à partir de la date de naissance. |
|
Calculer le nombre de jours depuis une date. |
|
Extraire uniquement le mois d’une date. |
|
Créer une chaîne unique avec le nom complet d’un répondant. |
|
Retourner le libellé d’un choix, dans la langue actuelle, à partir de la liste de choix. |
|
Convertir les lettres majuscules en minuscules et les espaces en tirets bas. |
|
Conserver uniquement la 1re lettre ou le 1er chiffre d’une chaîne. |
|
Générer un nombre aléatoire entre 0 et 10. |
|
Isoler la latitude à partir de coordonnées GPS. |
|
Isoler la longitude à partir de coordonnées GPS. |
|
Créer une variable binaire qui prend la valeur |
Le champ calculation peut également être utilisé pour définir des réponses par défaut dynamiques. Les réponses par défaut dynamiques permettent d’afficher une réponse par défaut dans une question en fonction d’une réponse précédente.
Pour définir une réponse par défaut dynamique :
Dans la colonne calculation, saisissez la référence à la question qui alimentera dynamiquement la réponse par défaut.
Dans la colonne trigger, saisissez la question qui activera le calcul.
En général, il s’agit de la même question référencée dans la colonne calculation, de sorte que toute modification apportée à la question déclencheur mettra également à jour la réponse par défaut.
onglet survey
type |
name |
label |
calculation |
trigger |
|---|---|---|---|---|
text |
hh_name |
Nom du chef de ménage |
||
text |
phone |
Numéro de téléphone du ménage |
||
text |
phone_name |
Nom du propriétaire du téléphone |
${hh_name} |
${hh_name} |
survey |
Note : Si vous souhaitez empêcher les utilisateurs de modifier le champ, définissez la colonne read_only comme TRUE.
' sont utilisés et des virgules sont incluses là où elles sont nécessaires.coalesce() ou if(). Par exemple :
coalesce(${potentially_empty_value}, 0)if(${potentially_empty_value}="", 0, ${potentially_empty_value})default.
Infinity, ce qui peut entraîner des problèmes dans les rapports de données et lors du traitement des données exportées. Pour éviter cela, ajoutez une logique de saut afin que le calcul ne s'exécute pas lorsque le diviseur est égal à zéro, ou appliquez une contrainte pour empêcher la variable diviseur d'être égale à zéro.
random() ou now(), dont les valeurs peuvent changer dans ces conditions.
once() pour vous assurer que l'expression n'est évaluée qu'une seule fois (par exemple, once(random()) ou once(today())).
Avez-vous trouvé ce que vous cherchiez ? Les informations étaient-elles claires ? Manquait-il quelque chose ?
Partagez vos commentaires pour nous aider à améliorer cet article !
KoboToolbox est maintenu par Kobo Inc.