Parcourez la base de connaissances, explorez nos ressources et visitez notre Forum communautaire pour des informations plus détaillées
Dernière mise à jour : 6 mai 2026
La liaison dynamique vous permet d’utiliser les données d’un projet principal dans des projets secondaires, ce qui simplifie la gestion de la collecte de données longitudinales. Cet article explique comment lier dynamiquement des données entre des projets KoboToolbox.
Note : La liaison dynamique de projets fonctionne de manière similaire à la fonction pulldata(), mais elle élimine le besoin de fichiers CSV séparés, puisque les données du projet principal lié servent de source de données.
Vous pouvez récupérer diverses réponses (hors fichiers média) d’un projet principal et effectuer des calculs sur ces données liées dans un projet secondaire. Cela peut être utile pour récupérer des données de référence, des coordonnées ou des dossiers médicaux dans des études de cohorte, ou pour confirmer ou vérifier des données précédemment collectées.
Nous recommandons d’utiliser XLSForm pour configurer la liaison dynamique de projets. Pour des exemples de projets principaux et secondaires, téléchargez des fichiers types ici et ici. Pour apprendre à configurer la liaison dynamique de projets dans l’interface de création de formulaires KoboToolbox (KoboToolbox Formbuilder), consultez l’article Liaison dynamique de projets avec le Formbuilder.
La liaison dynamique de projets nécessite un projet principal et au moins un projet secondaire. Le projet principal ne nécessite aucune modification par rapport à un XLSForm normal. En revanche, la configuration du ou des projets secondaires implique les étapes suivantes :
Dans l”onglet survey de votre XLSForm, ajoutez une ligne et définissez le type de question comme xml-external.
Dans la colonne name, indiquez un nom court pour le formulaire principal. Ce nom peut être composé de caractères de l’alphabet latin, de tirets bas et de chiffres.
onglet survey
type |
name |
label |
|---|---|---|
xml-external |
parent |
|
survey |
Dans l’ensemble du formulaire, vous pouvez récupérer des valeurs du projet principal en créant une nouvelle question et en incluant l’expression appropriée dans la colonne calculation (voir le tableau ci-dessous). Vous pouvez utiliser les types de questions suivants pour récupérer des données :
Utilisez un type de question calculate pour récupérer et stocker des valeurs en vue d’une utilisation ultérieure dans le formulaire ou le jeu de données (par exemple, pour des calculs ou des libellés de questions dynamiques).
Utilisez les types de questions text, integer, decimal, date, select_one ou select_multiple pour inclure les valeurs récupérées comme réponses par défaut dans des champs modifiables. Les données modifiées dans le projet secondaire ne changeront pas les données d’origine dans le projet principal.
onglet survey
type |
name |
label |
calculation |
|---|---|---|---|
xml-external |
parent |
||
text |
participant_id |
What is the participant’s ID? |
|
integer |
age |
Confirm the participant’s age |
instance(“parent”)/root/data[enrollment_id = current()/../participant_id]/age |
survey |
Note :
Pour afficher des données liées sans permettre aux utilisateurs de modifier le champ, utilisez une question calculate suivie d'une question note qui affiche la valeur calculée. Vous pouvez également utiliser des questions text, integer, decimal, select_one ou select_multiple avec `dans la colonne read_only définie comme TRUE.
Dans la colonne calculation de la ligne où les données liées seront récupérées, incluez l’une des expressions du tableau ci-dessous. Ces expressions sont appelées XPaths.
Pour chaque expression du tableau ci-dessous :
parent est le nom unique attribué au formulaire principal (par exemple, dans la question xml-external du formulaire secondaire).
parent_question désigne le name d’une question du formulaire principal.
child_question désigne le name d’une question du formulaire secondaire.
parent_index_question est la question d’identification du formulaire principal qui le relie au formulaire secondaire (par exemple, un identifiant unique, le nom d’une organisation).
child_index_question est la question d’identification du formulaire secondaire qui le relie au formulaire principal (par exemple, un identifiant unique, le nom d’une organisation).
parent_group désigne le name du groupe dans le formulaire principal dans lequel se trouve parent_question.
parent_index_group désigne le name du groupe dans le formulaire principal dans lequel se trouve parent_index_question.
XPath |
Description |
|---|---|
|
Renvoie le nombre total de lignes dans le projet principal. |
|
Renvoie le nombre total de lignes dans le projet principal où |
|
Renvoie le nombre total d’instances où la valeur de |
|
Renvoie la valeur de |
|
Identique à l’expression ci-dessus, mais précise que seules les données de la première instance de |
|
Renvoie la somme des valeurs de |
|
Renvoie la valeur maximale saisie dans |
|
Renvoie la valeur minimale saisie dans |
Note : Si la question du formulaire principal n'est incluse dans aucun groupe, omettez parent_group de l'expression.
Une fois vos XLSForms configurés, connectez-vous à votre compte KoboToolbox et suivez les étapes ci-dessous :
Créez et déployez le projet principal, s’il n’est pas déjà déployé.
Activez le partage de données pour le projet principal :
Dans l’onglet PARAMÈTRES > Connect Projects du projet principal, activez le bouton Data sharing (désactivé par défaut) et cliquez sur ACKNOWLEDGE AND CONTINUE dans la fenêtre de confirmation.
Toutes les données sont partagées par défaut, mais vous pouvez restreindre les variables spécifiques à partager avec les projets secondaires en cliquant sur « Select specific questions to share ».
Note : Si les projets ont des propriétaires différents, le propriétaire du projet principal doit partager le projet avec le propriétaire du projet secondaire. Les droits d'accès minimaux requis pour que la liaison dynamique de projets fonctionne sont View form et View submissions. Notez que cela permet aux administrateurs du projet secondaire de consulter toutes les données du projet principal.
Créez et déployez le projet secondaire.
Connectez le projet secondaire au projet principal :
Dans l’onglet PARAMÈTRES > Connect Projects du projet secondaire, cliquez sur « Select a different project to import data from. » Un menu déroulant vous permettra de sélectionner un projet principal à lier.
Renommez le projet principal lié avec le nom de la question xml-external défini dans le XLSForm et cliquez sur IMPORT.
Vous pouvez ensuite sélectionner des questions spécifiques du projet principal à partager avec le projet secondaire (recommandé), ou sélectionner toutes les questions.
Si vous ajoutez de nouveaux champs au formulaire principal et souhaitez les utiliser dans le projet secondaire, réimportez le projet principal dans les paramètres du projet secondaire.
Note : Les formulaires ne peuvent être liés entre eux que s'ils se trouvent sur le même serveur KoboToolbox.
Il est possible qu’un projet principal et un projet secondaire soient le même projet. Les étapes sont identiques à celles décrites ci-dessus. Voici quelques exemples de cas d’utilisation :
Suivi quotidien : Si un formulaire est utilisé pour enquêter sur la même personne au fil du temps, vous pouvez le lier à lui-même pour comptabiliser les soumissions précédentes. Cela peut permettre d’afficher un message (par exemple, « le suivi est terminé ») après un certain nombre de saisies, ou d’informer l’enquêteur du nombre de formulaires soumis, comme illustré dans l’exemple ci-dessous.
onglet survey
type |
name |
label |
calculation |
|---|---|---|---|
xml-external |
monitoring |
||
text |
participant_id |
What is the participant’s ID? |
|
calculate |
count |
count(instance(“monitoring”)/root/ data[monitoring/participant_id = current()/../participant_id]) |
|
note |
monitoring_note |
This participant has been surveyed ${count} times. |
|
survey |
Formulaire d’inscription : En liant un formulaire d’inscription à lui-même, vous pouvez vérifier si un utilisateur a déjà été enregistré. Cela peut permettre de générer un message d’erreur ou d’ajouter une contrainte si la personne est déjà enregistrée, évitant ainsi les inscriptions en double, comme illustré dans l’exemple ci-dessous.
onglet survey
type |
name |
label |
calculation |
relevant |
|---|---|---|---|---|
xml-external |
registration |
|||
text |
customer_id |
What is the customer’s ID number? |
||
calculate |
count |
count(instance(“registration”)/root/ data[registration/customer_id = current()/../customer_id]) |
||
note |
already_registered |
This customer is already registered. Please close this form. |
${count} > 0 |
|
survey |
Les données des projets liés dynamiquement peuvent être collectées à l’aide de l’application Android KoboCollect ou des formulaires web.
Lors de la collecte de données, tenez compte des points suivants :
Le projet principal doit avoir au moins une soumission pour que le projet secondaire fonctionne correctement.
Lors de la collecte de données en ligne, il y a un délai de cinq minutes pour la synchronisation des nouvelles données du projet principal avec le projet secondaire.
En mode hors ligne, téléchargez fréquemment le projet secondaire pour assurer la synchronisation des données avec le projet principal.
Note : Vous pouvez configurer l'application Android KoboCollect pour mettre à jour automatiquement les données du projet principal lorsqu'une connexion internet est disponible. Accédez à Paramètres > Gestion des formulaires > Mode de mise à jour des formulaires vierges et sélectionnez Formulaires antérieurement téléchargés uniquement ou Copie exacte du serveur. Vous pouvez définir la fréquence de téléchargement automatique à toutes les 15 minutes, toutes les heures, toutes les six heures ou toutes les 24 heures. Notez que l'activation de ce paramètre peut augmenter la consommation de la batterie.
name de l'onglet survey.[position()=1], comme ci-dessous :
instance('parent')/root/data[parent_index_group/parent_index_question = current()/../child_index_question][position()=1]/parent_group/parent_question
select_one ou select_multiple, la liaison dynamique de projets utilise le nom du choix, et non son libellé.
Pour afficher le libellé du choix dans votre formulaire secondaire, utilisez l'une des approches suivantes :
choices.jr:choice-name() pour récupérer le libellé du choix, puis extrayez cette valeur calculée dans le formulaire secondaire.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.