Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Utilisation des Set Analysis au lieu de la fonction IF

Bonjour à tous,

Débutant sur Qliqview, je créé mon premier tableau de bord financier. J'ai commencé par lire les quelques 230 pages du tutorial Qlikview pour me familiariser avec les bases du logiciel.

Sur ce site j'ai également lu le document pdf sur les set analysis.

Je rencontre un problème dans la conception de mon tableau de bord.

Je souhaite créé un tableau de bord de trésorerie. J'ai chargé les éléments financiers (balance des comptes).

J'ai donc des comptes comptables, et des montants.

Jusqu'ici pas de soucis.

J'ai créé un simple graphique pour l'instant pour tester.

J'aimerai sélectionner seulement les comptes de trésorerie dans ce graphique et non pas tous les comptes.

Mes comptes comptables de trésorerie sont compris dans les fourchettes de comptes suivantes :

De 50700000 à 50879999

De 50900000 à 51799999

De 51900000 à 51979999

De 51990000 à 53900000

Comme vous pouvez le constater certains comptes sont exclus.

Pour traiter ce problème, j'ai d'abord pensé à créer des variables. En effet, dans le cas ou certains comptes viendraient à être modifié, je pourrai simplement modifier la variable en question.

DebutTreso1 = 50700000

FinTreso1 = 50879999

DebutTreso2 = 50900000

FinTreso2 = 51799999

...

J'ai également créé des variables pour borner la sélection de mes écritures :

DateDebutEcriture

DateFinEcriture

Dans l'onglet expression de mon expression de mon graphique, dans la case Définition, j'ai rentré l'expression suivante :

Sum({$<[Date écriture]={">=$(=DateDebutEcriture)"}*{"<=$(=DateFinEcriture)"},[Numéro de compte] ={">=$(=DebutTreso1)"}*{"<=$(=FinTreso1)"},[Numéro de compte] ={">=$(=DebutTreso2)"}*{"<=$(=FinTreso2)"},[Numéro de compte] ={">=$(=DebutTreso3)"}*{"<=$(=FinTreso3)"},[Numéro de compte] ={">=$(=DebutTreso4)"}*{"<=$(=FinTreso4)"}>}Solde)

Problème...cette expression ne fonctionne pas bien:

-J'ai bien les bonnes dates sélectionnées, mais je n'ai que les comptes compris entre mes variables DebutTreso4 et FinTreso4...

Les comptes dans les autres fourchettes ne sont pas pris en compte ?

Est-ce que j'ai raté quelque-chose ?

Est-ce qu'il existe une solution plus simple ? J'ai peut-être monté une usine à gaz

Merci par avance pour votre aide

Cordialement,

Labels (1)
5 Replies
maxgro
MVP
MVP

What about using a flag you set at the reload time to identify your  comptes?

You can use your variables to identify start1...end1, start2...end2, at the beginning of the script and use them to set the flag; when the comptes range changes, change the variables before the reload.

Then in the user interface the set analysis is very simple, something as

sum($(<FlagTresorerie={1}>} Solde)

Not applicable
Author

Helle Massimo,

Thank you for helping me.

I'm sorry but I'm beginning with this software. What do you mean by flags ?

Have you an example of script with flags ?

I'm sure it's a good way to fix my problem.

Thank you

Julien

maxgro
MVP
MVP

when you load your "comptes" table add a flag (new column, FlagTresorerie) to identify the Tresorerie 

// variables to define comptes tresorerie

let DebutTreso1 = 50700000;

let FinTreso1 = 50879999;

let DebutTreso2 = 50900000;

let FinTreso2 = 51799999;

// load of comptes and add the flag

TabFinalComptes:

load

  Compte,

  ....., // other fields

  if(Compte > $(DebutTreso1) and Compte < $(FinTreso1) or Compte > $(DebutTreso2) and Compte < $(FinTreso1),1, 0) as FlagTresorerie

from

     .........

larouge69
Contributor III
Contributor III

Bonjour Julien,

Étant moi même contrôleur de gestion, je te conseillerai d'essayer de catégoriser tes comptes comptables en amont.

(à partir de ton outil d'extraction, ou dans ton fichier excel, ou via le script qlikview)

Ainsi au chargement des données tu disposes d'un axe d'analyse supplémentaire (cpte bancaire fournisseurs, rglts clients, ...).

Sinon tu peux inclure ce dimensionnement dans le chargement du script avec des if (même si c'est pas très joli)

if ( Compte >= .... and(compte <= ....), ' Trso1 ', if (Compte >= .... and(Compte <= ....), ' Treso 2', ' Treso 3')) as CategorieTreso

Tu disposeras par la suite d'une dimension CategorieTreso sur laquelle tu pourras mettre en évidence tes variations ... sans compliquer les set analysis.

A ta dispo si tu as besoin de plus d'explication,

Cordialement,

francoiscave
Partner - Creator III
Partner - Creator III

Bonjour Julien,

Comme David, je partirai également sur une catégorisation de tes comptes.

Une façon plus simple serait de créer (manuellement ou à l'aide de fonction) une table de mapping qui contiendrai deux champs : tes numéros de comptes et les catégories.

Pour cela, il suffit de charger avant ta table qui contient le champ Numéro de Comptes, une table de mapping:

Data_mpg:

Mapping Load

     NumérosDeCompte,

     Catégorie

From TonFichierExcel.xls;

Puis d'insérer dans le chargment de ta table où il y a le champ Numéro de Comptes la fonction Applymap.

Data:

Load

     ...

     NumérosDeCompte,

     ApplyMap('Data_mpg',NumérosDeCompte,'Pas trouvé') as Catégorie

     ...

From MaSource;

C'est une fonction qui peut s'apparenter à RECHERCHEV sous Excel... Je sais séduire les contrôleurs de gestion ;-)...

Il te sera facile de faire des Set Analysis à partir de ce "flag" Catégorie:

Sum({<Catégorie={'Trésorerie'}>}Facture) par exemple.

A bientôt, et reviens vers nous si tu as besoin d'aide,

François