Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Créer une variable qui appelle le résultat d'une liste déroulante

Bonjour,

Je suis nouvel utilisateur sur qlikview et je me retrouve en difficulté concernant la création de variables.

En effet, mon besoin est le suivant :

J'ai un tableau avec les colonnes suivantes : Libellé / Montant N / Montant N-1

J'ai réussi à créer ce tableau, voici les expressions que j'ai mise pour les deux dernières colonnes :

Montant N : Sum({<Phase={"REELLE"},Referentiel={"2016"}, flowname={"TD000"}>}Montant)

Montant N-1 : Sum({<Phase={"REELLE"},Referentiel={"2015"}, flowname={"TD000"}}>}Montant)

Ce que je souhaite faire désormais c'est ne pas fixer l'option Phase car j'en dispose de plusieurs et la mettre en variable.


L'idée la plus simple il me semble c'est de créer une liste multiple avec phase 1 relative à la colonne Montant N et phase 2 relative à la colonne Montant N-1

Mon problème c'est comment déclarer ma variable montant N et montant N-1 et comment l'appeler dans mes deux expressions?

Merci d'avance

Yoann

1 Solution

Accepted Solutions
kevinchevrier
Partner - Creator III
Partner - Creator III

En fait, c'est normal car tes champs sont liés (étant sur la même ligne dans ta table).

Voici une solution ;

Si tu colles le script ci-dessous dans l'onglet correspondance se sera bon :

correspondance\groupes :

SQL

select a.updper as 'period', b.phasename as 'Referentiel', c.phase as 'code phase', c.phasename as 'Phase', c.ldescf as 'Phase libellé', a.tablenum

from wpkref a

inner join  wphase b on a.updper = b.phase

inner join wlist c on a.phase = c.phase;

filtre :

LOAD * INLINE [

Phase2

CVAE-AC01,

JAN-REEL,

PREVISIONP1,

REELLE

];

View solution in original post

13 Replies
kevinchevrier
Partner - Creator III
Partner - Creator III

Bonjour,

Tu créés une variable avec ctrl + alt + q.

Tu y mets la formule souhaitée. Je ne suis pas sûr d'avoir bien compris ce que tu souhaites...

Si c'est Phase alors tu mets =Phase ou = only(Phase)

Pour appeler une variable tu fais $(Nomdetavariable)

Par exemple : Sum({<Phase={$(vPhase)},Referentiel={"2016"}, flowname={"TD000"}>}Montant)


Kevin

t_moutault
Contributor III
Contributor III

Bonjour Yoanne,

tu souhaites comparer N et N-1 sur des phases différentes ?

Not applicable
Author

Bonjour,

Merci pour vos réponses

Effectivement je veux deux phases différentes.

Le souci c'est que ce sera le même champ (phase) qui sera appelé.

le raccourci ctrl+ alt + q ne me sort rien...

kevinchevrier
Partner - Creator III
Partner - Creator III

Désolé c'est : ctrl + alt + v

Ensuite tu veux deux variables bien distinctes au niveau de ton champ Phase, alors peut-être qu'il faudrait que tu créé un champ Phase_bis.

Peux-tu nous préciser ta demande avec un exemple car je ne suis pas sûr de bien avoir compris ?

Kevin

Not applicable
Author

Bonjour,

J'ai préparé un fichier qvw pour vous montrer un exemple.

Vous verrez dedans un tableau basique que j'ai réussi à faire les montants reportés sont les bons.

Maintenant si vous regardez les formules associées pour chaque colonne c'est uniquement la phase qui change.

Je voudrais mettre ceci variable pour l'utilisateur.

Qu'il choisisse lui-même la phase de la colonne 1 et la phase de la colonne 2.

Le seul souci c'est que je ne vois pas comment vous envoyer le fichier ...

Not applicable
Author

C'est bon j'ai trouvé je n'avais pas vu l'option éditeur avancé...

kevinchevrier
Partner - Creator III
Partner - Creator III

Dans ton script, onglet correspondance :

tu créé : c.phasename as 'Phase colonne 2'

Ensuite, ctrl + alt + v, ajouter :

vPhase1 = Phase

vPhase2 = Phase colonne 2


Dans ta première expression :

Sum({<Phase={$(vPhase1)},Referentiel={"2016"}, flowname={"I99"}>}Montant)


Dans ta deuxième expression :

Sum({<Phase={$(vPhase2)},Referentiel={"2016"}, flowname={"I99"}>}Montant)


Tu créé tes 2 listes déroulantes avec les champs "Phase" et "Phase colonne 2" pour que l'utilisateur puisse sélectionner les phases souhaitées dans chaque colonne.


Kevin

Not applicable
Author

Je pense à ça aussi mais je dois mal m'y prendre.

J'ai réussi à faire appel à la variable grâce à vos formules mais lorsque je choisis une phase pour la phase1 il me la mets automatiquement pour la phase2.

Je n'arrive pas à pouvoir choisir deux phases différentes, j'ai bien rajouter dans mon script une deuxième phase pourtant.

kevinchevrier
Partner - Creator III
Partner - Creator III

En fait, c'est normal car tes champs sont liés (étant sur la même ligne dans ta table).

Voici une solution ;

Si tu colles le script ci-dessous dans l'onglet correspondance se sera bon :

correspondance\groupes :

SQL

select a.updper as 'period', b.phasename as 'Referentiel', c.phase as 'code phase', c.phasename as 'Phase', c.ldescf as 'Phase libellé', a.tablenum

from wpkref a

inner join  wphase b on a.updper = b.phase

inner join wlist c on a.phase = c.phase;

filtre :

LOAD * INLINE [

Phase2

CVAE-AC01,

JAN-REEL,

PREVISIONP1,

REELLE

];