Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Briinou
Contributor III
Contributor III

Condition de couleur sur histogramme

Bonjour,

J'ai un problème quant au remplissage conditionnel d'un histogramme. En effet, mon graphique affiche les années N-1 et N-2 ainsi que le mois précédent. Je souhaite passer ce dernier en une autre couleur afin de le distinguer.

Mon Qlik étant mis à jour tous les mois, je dois rendre les calculs les plus automatiques possibles.. J'ai donc créé une variable 'vMAXDATE' qui reprend le maximum de la date dans le fichier (date sous forme AAAAMM).

SET vMAXDATE MAX({1}DATE);

Dans les propriétés de mon graphique, onglet EXPRESSIONS puis 'Couleur d'arrière-plan', j'ai écris la formule suivante :

If($(vMAXDATE)=DATE,RGB(231,84,32),DarkGray())

Seulement tous mes bâtons passent à la couleur RGB décrite dans le code... Alors que dans un objet texte, vMAXDATE prend bien la valeur maximum de la date.

J'ai alors essayé de passer la variable entre quotes, de la mettre après le égal, mais toujours pas de distinction.

Avant de me pencher sur l'automatisation, je réalisais la condition manuellement et cela fonctionnait.

If(DATE='201612',RGB(231,84,32),DarkGray())

Merci par avance de vos retours.

Bon après midi.

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Sabrina,

Tu as 2 possibilités pour résoudre ton problème:

  1. Tu utilise l'expression suivante pour la couleur d'arrière plan : 

                 If($(=$(vMAXDATE))=DATE,RGB(231,84,32),DarkGray())
  2. Ou alors ta variable doit commencer par '='   :  

                 =MAX({1}DATE)

Ta variable ne contient que du texte 'MAX({1}DATE)'.

Dans la première solution, on récupère le contenu de ta variable (texte) $(vMAXDATE) puis on l'interprète pour récupérer le résultat attendu $(=...).

Dans la seconde solution, on transforme ta variable texte en expression qui sera directement interprétée par $(vMAXDATE).

Ca fonctionnait dans un objet texte, car tu  l'avais écris de cette manière : =$(vMAXDATE)

Si tu l'avais écrit comme ceci ça n'aurait pas fonctionné : =vMAXDATE

View solution in original post

4 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Si j'ai bien compris, tu as une seul expression?

Qu'as-tu comme dimension?

Briinou
Contributor III
Contributor III
Author

Bonjour Sébastien,

Oui, une seule expression, qui me permet d'avoir un pourcentage de données correctes sur l'ensemble des données présentes.

Ma dimension de graphique est le champs 'DATE', dont j'ai édité l'expression afin qu'il s'affiche au format 'AAAA-MM'. Voici l'expression :

=If(TOP_HISTO='1',LEFT(DATE,4)&'-'&RIGHT(DATE,2))

Le champ TOP_HISTO est créé dans ma requête SQL et permet aux lignes d'enregistrement de prendre la valeur '1' lorsque le critère de date est respecté... Lorsque ce critère n'est pas respecté, la valeur passe à 0.

J'espère que cela t'aidera. Et merci de ton aide

sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour Sabrina,

Tu as 2 possibilités pour résoudre ton problème:

  1. Tu utilise l'expression suivante pour la couleur d'arrière plan : 

                 If($(=$(vMAXDATE))=DATE,RGB(231,84,32),DarkGray())
  2. Ou alors ta variable doit commencer par '='   :  

                 =MAX({1}DATE)

Ta variable ne contient que du texte 'MAX({1}DATE)'.

Dans la première solution, on récupère le contenu de ta variable (texte) $(vMAXDATE) puis on l'interprète pour récupérer le résultat attendu $(=...).

Dans la seconde solution, on transforme ta variable texte en expression qui sera directement interprétée par $(vMAXDATE).

Ca fonctionnait dans un objet texte, car tu  l'avais écris de cette manière : =$(vMAXDATE)

Si tu l'avais écrit comme ceci ça n'aurait pas fonctionné : =vMAXDATE

Briinou
Contributor III
Contributor III
Author

Aaaah ! Ok je vois pourquoi ça bloquait.

En tout cas, merci de ton aide !