# Les boucles dans l’action Créer une document

Les **boucles** dans l’action **Créer un document** permettent d'afficher des enregistrements dans un document issus de n'importe quelle table (à l’exception de la table Utilisateurs et des tables liées aux parcours d’inscription). Cette fonctionnalité est particulièrement utile pour générer des documents tels que des devis, des factures ou des rapports contenant des éléments de données répétitifs.

Les boucles sont disponibles dans les actions suivantes :

* **Remplir un Docx**
* **Remplir un PowerPoint**
* **Remplir un Excel**

Pour ajouter une boucle dans vos champs à placer, cliquez sur **« Ajouter une boucle »**.

La boucle est automatiquement ajoutée dans la liste des champs à placer.

<figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FWYhP5YQrzAGmKGebumgr%2Fimage.png?alt=media&#x26;token=43da809e-f7d0-4bb5-bf95-441cc938f06a" alt=""><figcaption></figcaption></figure>

Vous pouvez modifier les paramètres d'une boucle à tout moment en cliquant sur l’icône ✏️.

<figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FisFPYO9TgcroYPpqqTrd%2Fimage.png?alt=media&#x26;token=7ac08ebe-9094-4267-aa42-a40b420c29d9" alt=""><figcaption></figcaption></figure>

### ⚙️ Paramétrage d’une boucle

1️⃣ Définissez **le libellé** de la boucle. Le libellé doit être **unique** entre les boucles situées au même niveau d’imbrication, sinon la génération du document échouera.

2️⃣ Choisissez la **table** sur laquelle vous souhaitez itérer. C’est dans cette table que seront récupérés les enregistrements à afficher dans le document.

3️⃣ Ajoutez des **conditions** _(facultatif)_ Cela vous permet de filtrer les enregistrements qui seront affichés.

4️⃣ Configurez le **tri** _(facultatif)_ Vous pouvez organiser l’ordre d’apparition des enregistrements dans le document :

* Choisissez le type de tri : Alphabétique, Numérique ou Chronologique
* Définissez l’ordre de tri : Croissant ou Décroissant
* Sélectionnez enfin le champ de la table sur lequel s’appliquera le tri.

5️⃣ Sélectionnez **les champs** de la table que vous souhaitez insérer dans le document.

<figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2F16xH4VVlokGE2zDxuDPj%2Fgif6.gif?alt=media&#x26;token=28bebc4c-41d2-46f7-9084-a7b8f1db5357" alt=""><figcaption></figcaption></figure>

### ➕ Ajouter une boucle imbriquée

Les boucles imbriquées permettent de **répéter des données liées à un enregistrement principal**.

Par exemple, si vous listez les **commandes d’un client**, vous pouvez **imbriquer une boucle** pour afficher les **produits de chaque commande**.

Cela permet de structurer dynamiquement un document en respectant les liens entre vos tables. Pour cela :

6️⃣ Cliquez sur **« Ajouter une boucle »** dans une boucle existante pour créer une boucle imbriquée.

7️⃣ Saisissez un **libellé** unique

8️⃣ Sélectionnez une **table liée à la boucle parente**

9️⃣ Choisissez un **champ de liaison.** Ce champ permet de **relier automatiquement** les enregistrements entre la boucle parent et la boucle fille. Seuls les éléments **liés à l’enregistrement parent** seront affichés.

Le reste du paramétrage (conditions, tri, champs à afficher…) se fait **exactement comme la boucle parente.**

Vous pouvez ajouter autant de boucles imbriquées que nécessaire. Les boucles dans les documents ne sont soumises à aucune limite d’itérations.

### 📄 **Intégrer une boucle dans votre document**

Après avoir ajouté tous vos champs à placer, cliquez sur _Étape suivante_ : un **schéma de variable** est généré automatiquement.

1️⃣ **Copiez ce schéma** et **collez-le dans votre document** à l’endroit où vous souhaitez faire apparaître les enregistrement.

2️⃣ Vous pouvez **déplacer librement toutes les variables** dans votre document pour adapter la mise en page à vos besoins.

⚠️ Veillez cependant à **conserver l’ordre logique des variables**, afin d’assurer un rendu correct à la génération. Les champs à placer dans une boucle doivent être positionnés après la balise de début de boucle (`{# Boucle}`) et avant la balise de fin (`{/}`).

### 🚧 Exemple : Historique des commandes d’un client

L’objectif est de générer un fichier `.docx` contenant toutes les commandes associées à un client donné, avec le détail des produits commandés.

Dans cet exemple, nous utilisons **4 tables** organisées comme suit :

**📁 Table Client**

Contient les informations de base sur chaque client :

* `Nom client` _(champ texte)_
* `Prénom client` _(champ texte)_

**📁 Table Produit**

Répertorie les produits disponibles à la commande :

* `Référence produit` _(champ texte)_
* `Prix produit` _(champ nombre)_

**📁 Table Commande**

Représente les commandes effectuées par un client :

* `Numéro commande` _(champ nombre ou compteur)_
* `Liaison client` _(champ liaison simple vers la table Client)_

**📁 Table Panier : matrice de la table commande**

Détaille le contenu d’une commande :&#x20;

* `Liaison commande` _(champ liaison simple vers la table Commande)_
* `Liaison produit` _(champ liaison simple vers la table Produit)_
* `Quantité` _(champ nombre)_
* `Total ligne commande` _(champ calculé : Prix produit × Quantité)_

#### ⚙️ **Paramétrer l'action « Créer un document »**

1️⃣ Dans un **suivi de la table Client**, ajoutez une **action → Créer un document**, puis sélectionnez **Créer un docx**.

2️⃣ Ajoutez les champs à placer issus de la table client :

* `Nom client`
* `Prénom client`

3️⃣ Cliquez sur **Ajouter une boucle**.

* Donnez-lui le libellé **Boucle Commande**.
* Sélectionnez la **table Commande**.
* Ajoutez un **filtre** sur la liaison client pour ne récupérer que les commandes liées au client en cours.
*   Triez vos enregistrements par date croissante du champ `Créé le`, pour que vos commandes s’affichent par ordre chronologique.

    <figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2Fau6i7JCKb7L23EsSCkJ3%2Fimage.png?alt=media&#x26;token=3cb72402-2278-463f-afe6-d8ff2487f293" alt=""><figcaption></figcaption></figure>
* Ajoutez les champs à placer suivants :
  * `Numéro commande`
  * `Créer le`
  * `Total commande`

<figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FVC9WdVrVLxQcqrooV6Qn%2FCapture%20d%E2%80%99e%CC%81cran%202025-06-11%20a%CC%80%2017.11.09.png?alt=media&#x26;token=b0f38642-b9c6-44ee-b5b1-250cfb79e765" alt=""><figcaption></figcaption></figure>

4️⃣ Dans la **boucle Commande**, cliquez sur **Ajouter une boucle** pour créer une **boucle imbriquée**.

* Donnez-lui le libellé **Boucle Panier**.
* Sélectionnez la **table Panier**.
*   Choisissez le champ de liaison **Liaison Commande** (pour filtrer les enregistrées liées à la commande parente)

    <figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FWZwSyH7Ncbt4d7y0vJnv%2Fimage.png?alt=media&#x26;token=d72f93ba-f273-47b6-a99c-d227820f9b34" alt=""><figcaption></figcaption></figure>
*   Ajoutez les champs à placer dans cette boucle imbriquée :

    * `Quantité`
    * `Total ligne commande`
    * `Référence produit` via la liaison Produit
    * `Prix produit` via la liaison Produit



    <figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FTDW09CUN7Gg3CBrUIMqe%2Fimage.png?alt=media&#x26;token=83582f88-969e-4127-a8fb-182ac2e296f9" alt=""><figcaption></figcaption></figure>

5️⃣ Fermez les popups et cliquez sur **Étape suivante**. Un **schéma de variables** est alors généré automatiquement.

<figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FL27PWd9KsoZv1rsNX0V1%2Fimage.png?alt=media&#x26;token=e33d9e62-0fbd-49cf-8d15-40eb7fa99cab" alt=""><figcaption></figcaption></figure>

⬇️ Voici comment **intégrer vos boucles dans le document .docx** :

{% file src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FAnCbZkYzAE8Y5V2HOXAf%2FHistorique%20commandes.docx?alt=media&token=f1596ae4-9eda-4b0e-99db-29f28cb0647a" %}

6️⃣ Vous pouvez ensuite ajouter un **tableau** de source client dans votre espace personnel en y ajoutant les champs suivants : `Prénom client` , `Nom client` ainsi que le suivi de la table **Client** contenant l'action **Créer un document**.

<figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FWifFfSs2uWTwqkTv9jGO%2FCapture%20d%E2%80%99e%CC%81cran%202025-06-11%20a%CC%80%2021.47.49.png?alt=media&#x26;token=434ed37e-9b49-46c3-8e4f-f95ea543b7ad" alt=""><figcaption></figcaption></figure>

7️⃣ Vos utilisateurs peuvent ainsi consulter l'historique des commandes d’un client en téléchargeant le fichier associé.

<figure><img src="https://2063331370-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQBQ-Fk5qKATOA2R2_R%2Fuploads%2FP9DAEoglKFJfUeMurHay%2FCapture%20d%E2%80%99e%CC%81cran%202025-06-11%20a%CC%80%2021.51.39.png?alt=media&#x26;token=4295b621-e822-497d-b3fb-b74191629912" alt=""><figcaption><p>Aperçu du fichier généré côté utilisateur</p></figcaption></figure>
