On peut vous aider ?

Cherchez des réponses ou parcourez les rubriques de notre documentation

Voir aussi:

< All Topics
Print

Liste déroulante dynamique

Principe

Les données d’une liste déroulante sont calculées dynamiquement depuis un range du questionnaire ou par les cellules correspondant à un entête dans un motif. Lors du calcul, les doublons et les vides sont supprimés. Les listes déroulantes en dehors des grilles ne peuvent pas être dynamiques.

Important : Le calcul de la liste ne se fait que lorsque l’utilisateur déroule la liste (comme Excel). Cela a les conséquences suivantes :

  • La vérification des contraintes de la liste ne peut plus se faire à la saisie : dans Answer, elle est faîte lors de l’envoi des données, en même temps que la vérification des contraintes obligatoires. Idem pour l’import Excel dans Answer.
  • On ne peut pas vérifier les contraintes lors de la personnalisation.

Exemple : La liste (sans saisie manuelle) en A1 est alimentée par B1:B7

On sélectionne A puis on change B1 en B :

Dès lors, A n’appartient plus à l’ensemble des valeurs du range et comme la liste n’est pas saisissable, la transmission de la réponse provoque l’affichage de la boîte suivante :

Réalisation

Une liste déroulante possède trois modalités d’alimentation des données :

  • Fixe : la liste est alimentée manuellement (via « Données… ») ou la liste fait partie d’une liste liée.
  • Range : valable pour les composants de grille, on indique le range dans « Source de données ». Le range doit être un vecteur.
  • Entête de motif : valable pour les composants de grille, on indique le l’entête dans « Source de données », Design va vérifier que l’entête appartient bien à un motif.

Pour l’import Excel, le Flag ITEMSSRC indique la source de données qui peut être une plage de cellules ou un entête dans un motif.

Deux syntaxes sont donc possibles :

¤¤EnTete_ListeDeroulante;L;ITEMSSRC=EnTete_appartenant_à_un_Motif_pour_le_contenu_de_la_liste

= »¤¤EnTete_ListeDeroulante;L;ITEMSSRC= »&GTRANGE(Plage de cellules)

Dans le cas où la fonction GTRANGE est utilisé en pointant vers un motif, il faut toujours sélectionner au moins une ligne en plus sous le motif.

Exemple :

Désigner les items source de la liste déroulante par les éléments d’un motif permet de personnaliser le contenu de la liste déroulante par les données d’une table de la base client.

Note : La fonction GTRANGE(référence) transforme la référence en une chaîne de caractères lors de l’import Design-Excel.

Le gtrange devrait pointer vers une référence absolue si la liste déroulante se trouve dans un motif ou si le range pointé se trouve sous un motif.

Application : Liste à contenu restreint

Le contenu de la liste déroulante utilisant le flag ITEMSSRC est complètement dynamique. La liste est déterminée par les cellules de la plage verticale ou horizontale ou du composant dans un motif.pointés par ITEMSSRC.

Les valeurs de la liste déroulante peuvent donc être issues de formules se trouvant dans les cellules pointées par le flag ITEMSSRC.

Ces formules peuvent renvoyer une valeur ou un vide suivant des conditions dépendant d’autres composants : on peut ainsi avoir des contenus plus ou moins restreints de listes déroulantes par rapport à une liste de référence initiale.

Imaginons un questionnaire où le correspondant sélectionne les formations auxquels il veut assister.

Un autre composant lui propose de choisir la formation (parmi celles sélectionnées) à laquelle il souhaite assister en priorité. Le classeur Excel pourra être constitué ainsi :

Dans le cas de cet exemple, la liste des formations ne se trouve pas dans un motif mais cela pourrait être le cas pour rendre le questionnaire plus souple. Dans le questionnaire, seules les formations qui auront été cochées apparaitront dans la liste déroulante inférieure.

Application : Listes liées personnalisables

En utilisant la production de contenu de listes à partir de formules, on peut construire des listes déroulantes liées dont les contenus de listes sont personnalisables (préremplies au lancement des questionnaires), notamment si les listes de référence se trouvent dans un motif. Il existe principalement deux techniques :
– Liste liée hors motif : Si la ou les listes parents ne sont pas dans un motif, on exploite une colonne supplémentaire de la liste de référence pour produire la liste
– Liste liée sur références triées : Si les listes de référence sont triées dans l’ordre des axes parents, on exploite le fait que les données soient triées en déterminant le bloc contigu de cellules contenant les données filles

Le fonctionnement des listes liées élaborées ainsi possède deux avantages par rapport aux listes liées construites dans Design :
– les listes liées construites dans Design ne sont pas personnalisables, donc statiques.
– les listes liées construites dans Design ne permettent pas de piloter deux listes filles avec une liste parent (ex: le choix du pays conditionne le choix d’une devise et le choix des régions).

Listes liées personnalisables hors motif

Comme dans l’exemple précédent concernant les formations, on utilise dans les cellules servant de contenu à la liste déroulante des formules renvoyant l’item voulu de la liste initiale ou une chaîne vide suivant la valeur sélectionnée dans une liste déroulante parent.
Ces formules sont calculées à partir de l’ensemble des combinaisons des items des deux listes (expression de la liaison)

Voici un exemple de listes liées (le contenu « couplé » des deux listes pourrait se trouver dans un motif pour rendre le questionnaire plus souple).

Cet exemple présente deux listes liées mais l’on peut étendre à trois, quatre listes, etc… en modifiant les formules afin qu’elles tiennent compte des valeurs sélectionnées dans toutes les listes déroulantes de niveau supérieur (une méthode simple consiste à concaténer, en ajoutant un caractère séparateur spécifique, les items de choisis dans les liste déroulantes de niveau supérieur).

Si une liste parent se trouve dans un multi-onglet, la liste d’éléments variables doit se trouver dans le multi-onglet (ou dans un onglet éventuellement masqué du groupe de multi-onglet).
Dans le cas d’une liste parent dans un multi-onglet, la liste pourra être approvisionnée par un motif ce qui laisse libre le nombre d’items maximum.

La liste contenant les différents items de référence n’est pas forcément triée.
Cette façon de construire des listes liées ne peut pas être utilisée lorsque la liste parent se trouve dans un motif.

Listes liées personnalisables sur listes de référence triées

Lorsque les listes de référence sont triées, on peut « calculer » la plage de cellules contigües contenant les données filles d’alimentation de la liste déroulante.

Une liste liée pourra alors s’écrire ainsi en utilisant la fonction GTLISTE.

=GTLISTE(B13 ; DECALER(K$1; EQUIV(A4;$J$2:$J$42;0) ; 0 ; NB.SI($J$2:$J$42;A4) ))

Les flags (M, E, …) sont modifiables comme pour toute autre liste et sont déclarés avec l’en-tête.

Pour rappel, la fonction DECALER(plage_initiale; nb_lig_décalage ; nb_col_décalage; nb_lig_plage_finale; nb_col_plage_finale) permet de renvoyer une plage dont le nombre de lignes et de colonnes est modifiable par calcul.

Le deuxième argument de la fonction GTLISTE doit renvoyer la plage, éventuellement calculée, utilisée pour alimenter le contenu de la liste déroulante.
Dans le cadre de l’exemple fourni, l’objectif du calcul de la plage des éléments de la liste est d’abord de repérer la première ligne contenant la valeur de la liste parent (EQUIV).
Puis de compter le nombre de lignes concernées par la valeur parent (NB.SI)
Enfin de renvoyer une plage commençant à la première valeur parent trouvée et ayant le nombre de lignes se référant à la valeur parent (calcul du nb.si).

La liste contenant les différents items de référence doit impérativement être triée dans l’ordre de liaison des listes déroulantes : axe parent puis axe fils.

L’exemple complet se trouve dans les documents téléchargeables en fin de cet article.

Si les EQUIV et les NB.SI sont effectués sur des plages de grandes dimensions (plus de quelques milliers de lignes), il sera plus efficace de précalculer dans un motif à part les EQUIV et les NB.SI sur les valeurs parents ou les combinaisons parents.

Fichiers de démonstration

Le fichier GTTut-ListeDeroul.zip‎ contient les éléments nécessaires à la mise en oeuvre d’un questionnaire reprenant toutes les fonctionnalités présentées dans cet article.

Le fichier « GTTut-ListeDeroul-Instructions d’installation », présent dans le zip, contient les instructions nécessaires à la mise en oeuvre.

Was this article helpful?
0 out Of 5 Stars
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
5
How can we improve this article?
How Can We Improve This Article?
Table of Contents