Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problème : Calcul sous totaux conditionnels

Bonjour à tous,

Je viens vers vous car j'ai un soucis de calcul.

Pour faire simple, j'ai un tableau simple avec :

En dimension :

- Code Article

En expression :

- CA Annuel

- CA Annuel N-1

- Volume Annuel

- Volume Annuel N-1

- Filter : Si les 4 expressions précédentes sont >0 alors 'COMMON' sinon 'NO')

En suite c'est là que ça se gâte, les autres expressions :

- CA Annuel N-1 Common : Si Filter = 'Common' alors CA Annuel N-1, sinon 0

Le calcul s'effectue correctement, mais le total de l'expression est faux. Je suis obligé de sélectionne "Somme de ligne" pour avoir un total correct.

Le problème qui m'est posé, c'est que lorsque j'utilise cette expression dans d'autres formules, il utilise "Total de l'expression" et non "Somme de ligne" comme valeur...Donc les résultats sont faux.

Avez vous une solution pour m'aider ?

Merci d'avance

6 Replies
Not applicable
Author

Dans ton cas il faudra que tu utilises une fonction

sum(aggr(...., "niveau de calcul le plus bas"))

pour que ta formule soit réutilisable ailleur que dans un tableau.

Not applicable
Author

Ça ne fonctionne pas, mais je n'utilise peut être pas correctement la formule...

Dimension :

- Code Article

Expressions :

To = sum({<ANNEE={$(vMaxYear)},DATSTAT={'<=$(vMaxDate)'},MOIS=>}HTSTAT)

To Prior =sum({<ANNEE={$(vMaxYearN1)},DATSTAT={'<=$(vMaxDateN1)'},MOIS=>}HTSTAT)

Volume = sum({<ANNEE={$(vMaxYear)},DATSTAT={'<=$(vMaxDate)'},MOIS=>}KLUMSTAT)

Volume Prior = sum({<ANNEE={$(vMaxYearN1)},DATSTAT={'<=$(vMaxDateN1)'},MOIS=>}KLUMSTAT)

Filter = if(To>0 and [To Prior]>0 and Volume>0 and [Volume Prior]>0,'COMMON','NO')

To Prior Common = if(filter='COMMON',[To Prior],0)

Et c'est ce To Prior Common que je souhaiterai réutiliser correctement par la suite.

J'ai essayé : sum(aggr(if(filter='COMMON',[To Prior],0),[Code Article]))

Mais ça ne me renvoi que des 0...

Not applicable
Author

J'ai trouvé pourquoi je n'avais que des 0, c'est les formules complètes que je dois mettre.

Ça me renvoie les chiffres, mais je n'ai toujours pas le bon résultat...

Not applicable
Author

j'aurai essayé avec

sum(aggr(sum(if(filter='COMMON',[To Prior],0)),[Code Article]))

Not applicable
Author

J'ai essayé, mais je n'ai que des 0 car filter etc ce sont déjà des colonnes calculées.

J'ai donc mis le complet :

sum(aggr(if(sum({<ANNEE={$(vMaxYear)},DATSTAT={'<=$(vMaxDate)'},MOIS=>}HTSTAT)>0 and sum({<ANNEE={$(vMaxYearN1)},DATSTAT={'<=$(vMaxDateN1)'},MOIS=>}HTSTAT)>0 and sum({<ANNEE={$(vMaxYear)},DATSTAT={'<=$(vMaxDate)'},MOIS=>}KLUMSTAT)>0 and sum({<ANNEE={$(vMaxYearN1)},DATSTAT={'<=$(vMaxDateN1)'},MOIS=>}KLUMSTAT)>0,sum({<ANNEE={$(vMaxYearN1)},DATSTAT={'<=$(vMaxDateN1)'},MOIS=>}HTSTAT),0),CARTSAP))

CARTSAP étant ma dimension Code Article.

Je n'ai plus de 0, mais les bons chiffres. Le total par contre est faux.

J'ai creusé et trouvé dans le tableau certaines lignes qui se mettent à 0, alors qu'elles ne devraient pas, puisque les conditions sont remplies (> 0)...

Not applicable
Author

Ca fonctionne !

J'ai ajouté {<MOIS=>} juste avant le aggr et ça passe correctement !