Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
stephanie29
Contributor III
Contributor III

Besoin d'aide formule avec condition

Bonjour,

Ma formule avec condition pour le contrôle fonctionne correctement, mais j'aimerais qu'elle affiche également 'pas planifié' si aucune donnée n'est présente dans la colonne 'surface planifiée'."

Voici mon tableau et ma formule actuelle 

stephanie29_0-1743601311883.png

If( ([PLANIF_UNITE] = 'KG' AND ( ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3 )), 'Justificatif',
If( ([PLANIF_UNITE] = 'PI' AND ( ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3)), 'Justificatif', ' OK' ) )

Que dois-je ajouter à cette formule pour que le mot "pas planifié" apparaisse ?

Merci de votre aide 😉

Labels (1)
1 Solution

Accepted Solutions
SRA
Partner - Creator
Partner - Creator

Bonjour,

Ce n'est pas évident d'imaginer la solution à utiliser sans voir les données sources.

Cependant, essayons cela :

IF( IsNull(PLANIF_SURFACE) OR PLANIF_SURFACE=0, 'pas planifié',
If( ([PLANIF_UNITE] = 'KG' AND ( ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3 )), 'Justificatif',
If( ([PLANIF_UNITE] = 'PI' AND ( ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3)), 'Justificatif', ' OK' ) ) )

View solution in original post

6 Replies
SRA
Partner - Creator
Partner - Creator

Bonjour,

Vous pouvez probablement utiliser cela : Coalesce( votre formule, 'Pas planifié')

Coalesce retourne la première expression non nulle trouvée. Si votre formule retourne Null, alors la seconde expression 'Pas planifié' sera retournée.

Pour plus de détail sur la fonction Coalesce : https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ConditionalFun...

Remarque: une bonne pratique est de ne pas utiliser de IF dans une expression de graphique (ou dimension/mesure). Pour optimiser votre application il vaudrait mieux essayer de réaliser ce calcul au niveau du script de chargement. 

Bien cordialement

SRA

stephanie29
Contributor III
Contributor III
Author

Bonjour,

Je suis désolée mais je n'ai pas très bien compris.

J'ai mis devant Coalesce mais cela ne fonctionne pas

Coalesce (If( ([PLANIF_UNITE] = 'KG' AND ( ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3 )), 'Justificatif',

If( ([PLANIF_UNITE] = 'PI' AND ( ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3)), 'Justificatif', ' OK' 'pas planifié' ) ) )

SRA
Partner - Creator
Partner - Creator

Coalesce prend 2 à n arguments. Il les évaluera dans l'ordre et s'arrêtera au premier qui ne retourne pas Null. Dans votre cas le premier argument doit être votre formule, et le deuxième la valeur 'pas planifié'.

Il faudrait donc écrire la formule de cette façon:

Coalesce( If( ([PLANIF_UNITE] = 'KG' AND ( ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3 )), 'Justificatif',
If( ([PLANIF_UNITE] = 'PI' AND ( ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3)), 'Justificatif', ' OK' ) ) , 'pas planifié' )

stephanie29
Contributor III
Contributor III
Author

Je viens de mettre cette formule mais malheureusement le mot 'pas planifie' n'apparait pas. Il me met le mot 'OK' 

SRA
Partner - Creator
Partner - Creator

Bonjour,

Ce n'est pas évident d'imaginer la solution à utiliser sans voir les données sources.

Cependant, essayons cela :

IF( IsNull(PLANIF_SURFACE) OR PLANIF_SURFACE=0, 'pas planifié',
If( ([PLANIF_UNITE] = 'KG' AND ( ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_FACTURATION_POIDS_NET) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3 )), 'Justificatif',
If( ([PLANIF_UNITE] = 'PI' AND ( ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 > 0.3
OR ((Sum(LIVD_PIECE_QUANTITE) / PLANIF_SURFACE) / [Rendement moyen OP / Ha]) - 1 < -0.3)), 'Justificatif', ' OK' ) ) )

stephanie29
Contributor III
Contributor III
Author

Bonjour,

Je viens de faire un essai avec cette formule et elle fonctionne.

Merci de votre aide.