Les tableaux dynamiques
On peut vouloir créer des tableaux dont on ne connaît pas à l'avance le nombre de lignes. Ces tableaux se présenteront :
- sans en-tête de lignes en première colonne
- avec un bouton
Ajouter une ligne(sous le tableau) - et un bouton
Supprimer une ligne(la dernière).
Cas nombre de lignes max identique à min
Dans ce cas, les boutons Ajouter une ligne et Supprimer une ligne n'apparaissent pas lors de la visualisation.
Pour ce faire, on créera une question de type Tableau avec les paramètres suivant :
Description
- l'Axe d'information principal :
- [
1] Format de l'axe principal* : ChoisirDynamique - [
2] Mode de calcul du nombre de lignes* - [
3] Nombre de lignes max identique à min* - [
4] Nombre de lignes*
- [
- [
5] Information mesurée
- l'Axe d'information principal :
- [
1] Format de l'axe principal* : ChoisirDynamique - [
2] Mode de calcul du nombre de lignes* - [
3] Nombre de lignes max identique à min* - [
4.a] Nombre de lignes min.* - [
4.b] Nombre de lignes max.*
- [
- [
5] Information mesurée
Mode de calcul du nombre de lignes
On a le choix entre deux type de calcul pour le nombre de lignes :
Nombre: déterminé par un nombre entier -> Le champ n'accepte que des nombresFormule: déterminé par une formule VTL -> Le champ est un éditeur VTL
Nombre de lignes déterminés par Nombre
Exemple de tableau dynamique avec un Nombre entier déterminant le nombre de lignes
Ici la première colonne est une variable non collectée avec la formule VTL "Individu " || cast(GLOBAL_ITERATION_INDEX,string) || ""
Nombre de lignes déterminés par Formule
VTL non valide
Si le résultat du VTL n'est pas interprété avec le type 'Nombre', ex Formule = "Du texte", on a l'erreur suivante

Exemple de tableau dynamique avec formule VTL
Information(s) mesurée(s)
-
Renseigner une information de type
Réponse simpleouRéponse à choix unique -
On peut aussi filtrer certaines cases ou rendre c'est dernière en mode lecture seule.
-
Pogues permet de préremplir certaines colonnes des tableaux dynamiques, que ce soit par de la donnée externe ou par des variables calculées. Ces colonnes ne sont alors pas modifiables en collecte. Voir Spécifier des données non-collectées
Contrôles
Dans l'onglet Contrôles, décrire classiquement le contrôle en VTL mais préciser son niveau :
- si le contrôle concerne les informations relatives à l'ensemble des lignes du tableau (ex la somme des valeurs d'une colonne), préciser
Niveau* : Tableau(par défaut) - si le contrôle doit être interprété ligne par ligne, préciser
Niveau* : Ligne
Filtrer des cases
Objectif
Il est possible de filtrer des cases dans un tableau dynamique selon une formule VTL.
La même logique que pour filtrer une question est appliquée : on propose un éditeur VTL conditionnant l'affichage de la case avec les règles suivantes :
| Validité de la Formule VTL | Condition d'affichage | Résultat |
|---|---|---|
| Pas de formule | / | la case est affichée, l'enquêté peut la renseigner |
| ❌ | ERROR |
la case est affichée, l'enquêté peut la renseigner |
| ✅ | TRUE |
la case est affichée, l'enquêté peut la renseigner |
| ✅ | FALSE |
la case n'est pas affichée, l'enquêté ne peut pas la renseigner |
Le choix "Non" est sélectionné par défaut : aucune case de la colonne n'est filtrée = toutes les cases sont affichées.
Exemple
Imaginons le tableau suivant avec l'identifiant PRODUIT

Variables générées du tableau.
- La première variable est non collectée. On y injecte une variable externe.
PRODUIT2est un booléen : case à cocher qui vauttrueoufalse.PRODUIT3est leCAque l'on veut collecter.
Pour une liste de produits, on veut savoir quels sont les produits pour lesquels une entreprise à un CA de plus de 10 000€, et avoir la valeur précise de ce CA uniquement dans ce cas.
On veut donc éviter que l'enquêté puisse saisir une valeur dans la colonne Précision du CA si son CA est inférieur à 10 000€ pour un produit. Pour ce faire on va rajouter une Condition d'affichage sur cette colonne pour afficher ou non les case selon la formule VTL $PRODUIT2$.

En VTL, $PRODUIT2$ est équivalent à $PRODUIT2$ = true
Si PRODUIT2 vaut true, l'enquêté a coché la case, alors on affiche le champ pour collecter la variable $PRODUIT3$ (colonne "Précision du CA")
Ce qui donne le tableau suivant
Cases en lecture seule
Objectif
Le concepteur peut spécifier des règles qui mettent en lecture seule certaines cases d'un tableau dynamique. Cette fonctionnalité est utile par exemple lorsqu'on pré-remplit les données d'un tableau et qu'on ne souhaite pas laisser la possibilité à l'enquêté de modifier les valeurs.
Limitations
Les types Date et Durée ne sont pour l'instant pas supportés
On propose un éditeur VTL conditionnant la possibilité de mettre en lecture seule (de ne pas pouvoir éditer) la case avec les règles suivantes :
| Validité de la Formule VTL | Condition de lecture seule | Résultat |
|---|---|---|
| Pas de formule | / | la case est accessible en modification pour l'enquêté |
| ❌ | ERROR |
la case est en lecture seule, l'enquêté ne peut pas l'éditer |
| ✅ | TRUE |
la case est en lecture seule, l'enquêté ne peut pas l'éditer |
| ✅ | FALSE |
la case est accessible en modification pour l'enquêté |
Le choix "Non" est sélectionné par défaut : aucune case de la colonne n'est en lecture seule = toutes les cases de la colonne sont modifiables.
Bonnes pratiques
Calculer des totaux de lignes ou de colonnes
Ces totaux peuvent être ensuite utilisées dans des libellés, des filtres ou des contrôles
- cf. Total en ligne
- cf. Total en colonne
Compter le nombre de lignes
Utilisation de la formule VTL count($COL_1$) avec COL_1 la première colonne du tableau, de préférence car représente l'unité du tableau.
Cas d'utilisation
Définir la dimension d'un tableau dynamique selon celle d'un autre tableau dynamique On distingue deux cas.
- Cas simple : le 1er tableau dynamique a une dimension avec min=max et sa taille est définie par une variable
NB_LIGNES. Dans ce cas la dimension du deuxième tableau dynamique sera aussi définie parNB_LIGNES - Cas complexe : le 1er tableau dynamique a une dimension avec min≠max. Même si on dispose une variable
NB_LIGNES_MINen amont, l'enquêté peut ajouter dynamiquement des lignes au moment de la collecte.
De ce fait on ne peut pas simplement définir la dimension du deuxième tableau parNB_LIGNES_MINcar la taille effective du 1er tableau lors de la collecte peut êtreNB_LIGNES_MIN + 3par exemple.
Dans ce cas, on va compter les lignes du 1er tableau grâce à fonction VTLcount()en utilisant la première colonne du 1er tableau,COL_1par exemple. Ainsi, la dimension du deuxième aura la formulecount($COL_1$)














