Qlik Community

Groupe des Utilisateurs Francophones

Announcements
BI & Data Trends 2021. Discover the top 10 trends emerging in today. Join us on Dec. 8th REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Not applicable

Définir une couleur spécifique par agence à l'aide du script

Bonjour,

J'ai un champ "agences" et je cherche à définir une couleur spécifique par agence. J'aimerais optimiser mes graphiques et donc procéder à cette méthode via le script (et non de devoir à chaque fois préciser dans mon expression, dans couleur d'arrière plan plus précisément, la formule à utiliser).

A savoir que mon projet QlikView génère des fichiers QVD (un fichier QVD par table).

A côté de ça, sous excel, j'ai un fichier excel se nommant "Parameters" comportant deux onglets, l'un se nommant "metadata" (où je "renomme" les tables ainsi que les champs) qui se présente ainsi :

                                                    TABLE.IN               TABLE.OUT               FIELD.IN                    FIELD.OUT

                                                     ............                   ..................               ..................                  ..................

, et l'autre onglet se nommant "color" qui se présente ainsi :

                                                     NAME               A                  R                   G                 B

                                                     Agence1          255               255                153              51

                                                     Agence2          255               0                    153              0

                                                     Agence3          255               51                  0                  153

                                                     Agence4          255               255                255              153

J'ai écrit ceci dans le script mais ça ne fonctionne pas... :

Dans le script, dans l’onglet COLOR :
COLOR_MAP:
Mapping
LOAD NAME, Argb(A,R,G,B) as nameColor
FROM [xxxxxxxxParameters.xlsx] (ooxml, embedded labels, table is COLOR)
;

Dans le script, dans l’onglet QVD :
ApplyMap('COLOR', NAME) as nameColor







Quelqu'un peut m'aider à résoudre mon problème ?


Cordialement,


Prees

12 Replies
Highlighted
Creator III
Creator III

Bonjour Missprees,

je ne comprend pas trop :

  1. si c'est un graph, tu peux dans l'onglet "couleur" des "propriétés", choisir une couleur par dimension
  2. si c'est un tableau, je ne sais pas comment faire autrement que par la méthode que tu décris.

mais si tu veux avoir plusieurs colonnes ou plusieurs tableaux, tu peux copier/coller et juste modifier la formule de calcul, Non ?

Florent.

Highlighted
Creator
Creator

Bonjour Missprees,

Je ne comprends pas tout à ta tentative mais voici une des méthodes les plus fiables et simple que j'utiliserais si je devais paramétrer mes couleurs via le script:

En tant que développeur, ce qui est important, à mon avis, c'est de permettre la bonne gouvernance des couleurs d'une application via le model et le script et de laisser au designer le soin de les activer ou bon lui semble dans les objets QV.

Agences_Colors:

LOAD * inline [

Agence, R, G, B

Agence1,255,153,51

Agence2,0,153,0

Agence3,51,0,153

Agence4,255,255,153

];

Il faudra ensuite s'assurer que le champ Agence est bien associé aux données de mesures de votre table de faits (mesures).

Et enfin Il suffit d'activer les bonnes couleurs dans les objets dépendants de la dimension Agence via: RGB(R,G,B)

Cdt,

Maurice

Highlighted
Contributor III
Contributor III

Bonjour,

ApplyMap('COLOR', NAME😞 le nom de votre table de map est COLOR_MAP et non pas COLOR.

Peut-être est-ce le problème ?

Cdt,

Philippe

Highlighted
Not applicable

Bonjour Florent,

Oui mais justement, je voudrais ne pas avoir besoin de le faire pour chaque objet.

Prees

Highlighted
Not applicable

Bonjour Maurice,

Mon champ Agence ne figure pas dans ma table des Faits, mais dans mes dimensions...

Quand vous dites qu'il suffit d'activer les bonnes couleurs dans les objets via RGB(R,G,B) c'est dans expressions puis couleurs d'arrière-plan? Mais ce que je cherche à faire c'est que ça se fasse automatiquement pour gagner du temps.

Cordialement,

Prees

Highlighted
Creator
Creator

Corriger ApplyMap par:

ApplyMap('COLOR_MAP', NAME) as nameColor


Cdt,

Maurice

Highlighted
Creator
Creator

Bonjour Prees,

Oui c'est dans expression, couleur d'arrière plan de ta mesure:

Dans "Definition" mettre =RGB(R,G,B)

Tu peux créer aussi une variable vColor et l'utiliser au même endroit: =$(vColor)

Mais je ne vois pas comment tu peux faire plus automatique dans QV à ma connaissance !

Maurice

Highlighted
Creator
Creator

Prees,

Il y' a peut être une solution à tester en jouant sur les couleurs par défaut utilisées par l'application toute entière:

Les couleurs sont numérotées de  1 -- 18, l'astuce à savoir est que QV utilise l'ordre de chargement des dimensions dans le script comme ordre pour ces couleurs !

Supposons que:

Agence2 soit chargée en premier

Agence1 en deuxième

Agence3 en troisième

...

Eh bien QV utilisera dans l'ordre le bleu Agence2, le orange pour Agence1 et le vert pour Agence3 comme ici définis.

Donc si tu notes l'ordre de chargement de tes Agences, tu devrait pouvoir paramétrer ici leurs couleurs correspondantes pour toute ton application et là tu sera en full automatique...même plus besoin de gérer les RGB dans le script, tout sera centralisé ici.

A tester.

Maurice 

Highlighted
Not applicable

Bonjour Maurice,

Mais je dois utiliser des couleurs bien spécifiques par Agence. Je ne peux laisser le bleu, orange, vert et jaune...

J'ai bien tenter de modifier les couleurs dans Paramètres --> Propriétés du document --> onglet Général --> puis je suis allée dans Aspect de la sélection (en essayant le jeu de couleur "printemps") mais rien ne se passe... Tous les objets sur ma feuille restent inchangés... Peut-être ma procédure n'est pas correcte ? Mais je ne vois pas ce que je fais mal pour que ça ne fonctionne pas...

Prees,