Utiliser les Tags "de boucle"

Lorsqu'un modèle de document nécessite d'afficher des informations de manière récursive, il est possible d'utiliser un tag de boucle, afin d'indiquer à Dendreo de boucler sur toutes les instances d'un type d'information.

Exemple : afficher les noms de tous les participants sur un modèle de document lié à l'Action de Formation

Si votre Action de Formation comporte 10 participants et que vous souhaitez tous les lister dans votre document, vous pouvez utiliser la syntaxe suivante :

{participant_1_prenom} {participant_1_nom}
{participant_2_prenom} {participant_2_nom}
{participant_3_prenom} {participant_3_nom}
{participant_4_prenom} {participant_4_nom}
...
jusqu'à 10

mais cela vous oblige à écrire explicitement tous les tags et, surtout, prévoir exactement le nombre de participants maximum. Si votre modèle de document comporte les tags jusqu'à {participant_10_prenom} et que votre Action de Formation comporte 12 participants, les 2 derniers participants seront omis (notez qu'à l'inverse si votre ADF comporte seulement 5 participants, les tags inutiles seront simplement vides).

A la place, vous pouvez utiliser la syntaxe de boucle suivante :

{#participants}
{participant_prenom} {participant_nom}
{/participants}

Ceci aura automatiquement le résultat suivant et affichera tous les participants de l'Action de Formation sans limite de nombre :

Jean Dupont
Marie Durand
Maxime Schmidt
...

Syntaxe des tags de boucle

Il existe deux types de tags de boucle :

  • les boucles de texte ;
  • les boucles de tableau.

À noter : les boucles de texte fonctionnent dans les documents .docx et les Modèles d'Email, mais les boucles de tableau fonctionnent uniquement dans les documents .docx.

La syntaxe est légèrement différente selon le type de boucle. Notez qu'il est possible de combiner les syntaxes, comme nous le verrons ci-dessous.

Les boucles de texte

Une boucle de texte est toujours ouverte par un tag {#....} et fermée par un tag identique {/....}.

L'intégralité du contenu de votre document situé entre le tag d'ouverture et le tag de fermeture sera répétée autant de fois qu'il y a d'instances dans votre boucle.

L'exemple ci-dessus illustre parfaitement l'utilisation d'un tag de boucle de type texte. Voici son rendu en situation réelle pour une ADF comportant 4 participants :

La syntaxe de boucle dit simplement à Dendreo de remplacer les tags 

{participant_prenom} {participant_nom} - {participant_email}

situés entre les tags de boucle, par les informations pour chacun des participants dans la boucle.

Le résultat est le même que si vous aviez écrit explicitement :

{participant_1_prenom} {participant_1_nom} - {participant_1_email}
{participant_2_prenom} {participant_2_nom} - {participant_2_email}
etc.

Comme d'habitude, si vous vous rendez dans la section "Documents" de votre ADF et faites une recherche sur l'assistant de tagging, vous pouvez trouver les tags numérotés que Dendreo utilisent dans la syntaxe de boucle :

Les boucles de tableau

Une boucle de tableau permet de répéter une ligne d'un tableau Word.

Pour indiquer à Dendreo de répéter la ligne, il suffit d'introduire un tag de type {##....} n'importe où dans la ligne du tableau. Notez qu'il y a deux "#" à l'inverse du tag d'ouverture d'une boucle de texte qui n'en a qu'un.

Aucun tag de fermeture n'est nécessaire.

Le tag peut se trouver n'importe où dans la ligne, cela n'a pas d'importance.

Tout comme pour les boucles de texte, la ligne du tableau sera automatiquement répétée autant de fois qu'il y a d'instances dans la boucle (et le tag de boucle disparaîtra).

Notez qu'il n'est actuellement pas possible de boucler sur les colonnes d'un tableau.

Les éléments que vous pouvez boucler

Voici la liste des éléments sur lesquels vous pouvez effectuer une boucle :

Description de la boucle Tag de boucle (à mettre dans {#...} {/...} ou {##...}) Tags variables au sein de la boucle
Chaque jour de l'ADF jours, adf_jours, adf_nb_jours {adf_jour_...}, {adf_jour_i_...}, {jour_...}, {jour_i_...}
Chaque semaine de l'ADF semaines, adf_semaines {semaine_...}, {semaine_i_...}, {adf_semaine_...}, {adf_semaine_i_...}
Chaque créneau de chaque jour de l'ADF
[boucle imbriquée]
jour_creneaux, adf_jour_creneaux
[doit se trouver dans une autre boucle de jours]
{adf_jour_creneau_....}, {adf_jour_i_creneau_j_....}
Chaque jour de chaque semaine   [boucle imbriquée] semaine_jours, adf_semaine_jours
[doit se trouver dans une autre boucle de semaines]
{semaine_jour_...}, {semaine_jour_i_...}, {adf_semaine_jour_...}, {adf_semaine_jour_i_...}
Chaque créneau de chaque jour de chaque semaine   [boucle imbriquée] semaine_jour_creneaux, adf_semaine_jour_creneaux
[doit se trouver dans une autre boucle de semaines et jours]
{semaine_jour_creneau_...}, {semaine_jour_creneau_i_...}, {adf_semaine_jour_creneau_...}, {adf_semaine_jour_creneau_i_...}
Chaque participant de chaque semaine   [boucle imbriquée] semaine_participants, adf_semaine_participants
[doit se trouver dans une autre boucle de semaines]
{semaine_participant...}, {semaine_participant_i_...}, {adf_semaine_participant_...}, {adf_semaine_participant_i_...}
Chaque formateur de chaque semaine   [boucle imbriquée] semaine_formateurs, adf_semaine_formateurs
[doit se trouver dans une autre boucle de semaines]
{semaine_formateur...}, {semaine_formateur_i_...}, {adf_semaine_formateur_...}, {adf_semaine_formateur_i_...}
Chaque Participant de l'ADF participant, adf_participants, adf_nb_participants, ent_nb_participants} {participant_...}, {participant_i_...}
Chaque Modules de l'ADF modules, adf_modules {adf_m_...}, {adf_m_i_...}, {module_...}
Inscription ou présence d'un participant sur chaque jour participant_jours, adf_participant_jours {participant_jour_...}, {participant_jour_i_...}
Financements définis pour un participant participant_financements {participant_financement_...}, {participant_i_financement_j_...}
Inscription ou présence de chaque participant sur chaque jour  [boucle imbriquée] participant_jours, participant_i_jours
[doit se trouver dans une autre boucle de participants]
{participant_jour_...}, {participant_i_jour_j_...}
Chaque jour d'un module m_jours, module_jours, adf_m_jours {adf_m_jour_...}, {adf_m_jour_i_...}
Chaque jour de chaque module  [boucle imbriquée] module_jours, m_jours, adf_m_jours, module_i_jours, m_i_jours, adf_m_i_jours
[doit se trouver dans une autre boucle de modules]
{adf_m_jour_...}, {adf_m_i_jour_j_...}
Chaque Participant de chaque Module   [boucle imbriquée] adf_m_participants, module_participants, adf_m_i_participants
[doit se trouver dans une autre boucle de modules]
{adf_m_formateur_...}, {adf_m_formateur_i_...},
{adf_m_i_formateur_...}, {adf_m_i_formateur_j_...}, {module_formateur}
Chaque Formateur de chaque Module    [boucle imbriquée] adf_m_nb_formateurs, adf_module_nb_formateurs, adf_m_i_nb_formateurs 
[doit se trouver dans une autre boucle de modules]
{adf_m_participant_...}, {adf_m_participant_i_...}, 
{adf_m_i_participant_...}, {adf_m_i_participant_j_...}, {module_participant} 
Chaque Participant de chaque jour [boucle imbriquée] adf_jour_participants, adf_jour_nb_participants, adf_jour_i_participants, adf_jour_i_nb_participants {adf_jour_participant_...}, {adf_jour_i_participant_...}
Chaque Formateur de chaque jour [boucle imbriquée] adf_jour_nb_formateurs, adf_jour_i_nb_formateurs {adf_jour_formateur_...}, {adf_jour_i_formateur_...}
Chaque Formateur de l'ADF formateurs, adf_formateurs, adf_nb_formateurs, ent_nb_formateurs {formateur_...}, {formateur_i_...}
Chaque élément d'une checklist ADF checklist_elements, adf_checklist_elements {adf_checklist_element_...},{adf_checklist_element_i_...}
Chaque ligne d'une Facture lignes {ligne_...}, {ligne_i_...}
Chaque taux de TVA présent dans une Facture fact_tvas {fact_tva}, {fact_tva...}, {fact_tva_i}, {fact_tva_i_...}
Chaque recette de type formation (ou hors formation) = Recettes automatiques recettes_formation, adf_recettes_formation {adf_recette_formation_...}, {adf_recette_formation_i_...}
Chaque recette de type annexe = Recettes libres recettes_annexes, adf_recettes_annexes {adf_recette_annexe_...}, {adf_recette_annexe_i_...}
Chaque dépense de type rémunération remunerations, adf_remunerations {adf_remuneration_...}, {adf_remuneration_i_...}
Chaque dépense de type frais frais, adf_frais {adf_frais_...}, {adf_frais_i_...}
Chaque dépense de type frais refacturable frais_refacturables, adf_frais_refacturables {adf_frais_refacturable_...}, {adf_frais_refacturable_i_...}
Chaque compétence pour un module module_competences
{module_competence_...}, 
{module_competence_i}
Chaque compétence de chaque module de votre ADF   [boucle imbriquée] adf_m_competences, adf_m_i_competences
[doit se trouver dans une autre boucle de modules]
{module_competence},
{module_competence_i},
{adf_m_competence},
{adf_m_competence_i}
Chaque compétence (unique) de votre ADF  adf_competences
{adf_competence}, {adf_competence_i}
Chaque compétence acquise pour un participant participant_competences_acquises {participant_competence_acquise}, {participant_competence_acquise_i} 
Chaque compétence acquise pour chaque participant de l'ADF   [boucle imbriquée] participant_competences_acquises, participant_i_competences_acquises
[doit se trouver dans une autre boucle de participants]
{participant_competence_acquise}, {participant_competence_acquise_i}, {participant_i_competence_acquise}, {participant_i_competence_acquise_j} 
Chaque Entreprise d'une ADF adf_entreprises, entreprises {ent_...}, {ent_i_...}

Ces tags sont trouvables dans l' assistant de tagging et existent parfois sous plusieurs variantes équivalentes (par exemple {jours}, {adf_jours} et {adf_nb_jours}). Ils sont toujours au pluriel. Certains tags n'existent que dans certains contextes. De nouveaux tags sont ajoutés régulièrement.

Par exemple, si vous éditez un document de la catégorie "ADF > par Module", vous pouvez utiliser la boucle suivante se référant spécifiquement au Module pour lequel vous générez le document :

Jours de formation :
{#adf_module_jours}
- {adf_module_jour_i} (de {adf_module_jour_i_debut} à {adf_module_jour_i_fin})
{/adf_module_jours}

pour lister les jours (et dates de début et fin de chaque journée) de formation de ce module spécifiquement (dans le cas d'une Action de Formation multi-modules).

Syntaxes avancées

Spécifier le compteur

Notez que vous pouvez utiliser la syntaxe simplifiée ou la syntaxe comportant un "compteur" de la même manière :

{#participants}
{participant_prenom} {participant_nom} - {participant_email} 
{/participants}

est équivalent à la syntaxe suivante explicitant un compteur " i " :

{#participants} 
{participant_i_prenom} {participant_i_nom} - {participant_i_email}
{/participants}

Le compteur " i " est la partie qui sera remplacée par 1, 2, 3... et qui correspond au tag que vous pouvez retrouver dans l'assistant de tagging :

Par défaut, le compteur utilisé par Dendreo est la lettre " i ", mais vous pouvez spécifier une autre lettre (n'importe laquelle) avec la syntaxe suivante  {#participants,j} (pour une boucle de texte)  ou {##participants,j} (pour une boucle de tableau). Ne spécifiez pas le compteur dans le tag de fermeture.

Exemple :

{#participants,j}
{participant_j_prenom} {participant_j_nom}
{/participants}

L'utilisation explicite du compteur peut être utile lors de la réalisation de boucles imbriquées complexes (cf. ci-dessous).

Boucles imbriquées

Il est possible de combiner plusieurs boucles entres elles (y compris des boucles de différents types). Par exemple, pour réaliser une feuille d'émargement pour votre formation, vous souhaitez sans doute boucler sur tous les jours (pour avoir une feuille d'émargement par jour) et, pour chaque jour, boucler sur tous les participants, pour avoir une ligne de signature par participant.

Dendreo est capable de le faire ! Voici un exemple simple de feuille d'émargement :

Dans cet exemple nous avons mis le tag {##participants} en début de ligne, mais il aurait pu être situé n'importe où dans la ligne du tableau.

Vous pouvez également réaliser la même boucle imbriquée en explicitant les compteurs, cependant pour que vos différentes boucles ne rentrent pas en conflit entre elles, utilisez des compteurs différents pour chacune de vos boucles. 

Voici un autre exemple, remarquez l'utilisation du compteur implicite "i" pour la boucle des jours, et le compteur "n" explicitement défini pour la boucle des participants :

Boucles imbriquées interdépendantes

Certains tags Dendreo comportent parfois deux compteurs. Par exemple, le tag {participant_1_jour_2_presence} donne la présence du participant 1 sur la journée 2 de l'Action de Formation. Il est possible d'accéder à ces tags en faisant deux boucles imbriquées. 

Si vous utilisez par exemple le tag {participant_jour_presence} dans une boucle de "participants" et une sous-boucle imbriquée de "participant_jours", Dendreo comprendra automatiquement que vous faites référence au participant " i " du jour " n ", c'est-à-dire au tag {participant_i_jour_n_presence}. Comme ici :

Dans cet exemple, la boucle principale (parente) est une boucle sur les participants. On affiche ensuite le nom du participant et, au sein du tableau, nous faisons une nouvelle boucle, cette fois sur le tag {##participant_jours}, qui permet d'accéder à la présence de chaque participant sur chaque jour. Enfin on utilise le tag {participant_jour_presence_accord} qui est équivalent à {participant_i_jour_n_presence_accord}, c'est à dire qu'il va permettre d'aller chercher la présence (avec accord masculin / féminin) du participant en question pour le jour en question. Vous trouverez par exemple le tag {participant_1_jour_1_presence_accord} dans l' assistant de tagging.

Vous pouvez réaliser la même feuille en explicitant les compteurs en respectant la règle indiquée ci-dessus de l'utilisation de compteurs différents par boucle et en conditionnant la boucle enfante à la boucle parente. Ensuite, il vous suffit d'utiliser les bonnes lettres de compteur dans les tags.

L'exemple ci-dessous est une version absolument équivalente à la version ci-dessus, mais avec des tags explicitant les compteurs pour chaque boucle :

Dans cet exemple, la boucle principale (parente) est une boucle sur les participants, utilisant le compteur implicite " i ".

On affiche ensuite le nom du participant et, au sein du tableau, nous faisons une nouvelle boucle, cette fois sur le tag {##participant_i_jours,n}, c'est-à-dire pour chaque jour du participant " i "

Notez bien ici l'utilisation du tag "participant_i_jours" qui n'est pas un tag explicitement trouvable dans l 'assistant de tagging de Dendreo. En revanche, vous trouverez bien {participant_1_jours}, {participant_2_jours}, etc.). 

On utilise la lettre "n" pour la seconde boucle et les 2 tags d'informations suivants ( {participant_i_jour_n} et {participant_i_jour_n_presence_accord} ) utilisent alors à la fois le compteur "i" et le compteur "n", afin de récupérer les jours et présences sur chaque jour de chacun des participants.

Nouvelle page

Parfois il peut être utile de faire une nouvelle page Word par instance de votre boucle. Par exemple si vous bouclez sur les jours et que vous faites une feuille d'émargement, vous souhaitez sans doute que chaque nouvelle feuille d'émargement pour chaque jour commence sur une nouvelle page.

Pour cela, rajoutez un * sur le tag de fermeture d'une boucle de texte, par exemple {/jours*}.

Boucles conditionnelles

Vous pouvez aussi réaliser des conditions dans vos boucles, pour par exemple boucler uniquement sur les Participants qui ont été présents à votre formation. Pour en savoir plus, lisez notre article dédié aux tags conditionnels !

Cet article vous a-t-il aidé ? Merci ! votre avis compte énormément pour les équipes de Dendreo Nous n'avons pas pu enregistrer votre feed-back :( Pouvez-vous ressayer ?

Besoin d'aide supplémentaire ? Nous contacter Nous contacter