Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Bckaps
Contributor II
Contributor II

Calcul solde bancaire cumulé

Bonjour à tous,

Je souhaite faire un suivi de solde de trois comptes bancaires.
Voici les données :
Cpte       DateSolde        MontantSolde
1              1/sept/23         5000
1              2/sept/23           5200
1              03/sept/23           5100
2              01/sept/23           2000
2              02/sept/23           2100
3              01/sept/23           1000

Quand il n'y a pas d'opération sur le compte, il n'y a pas de données. Le dernier solde reste en vigueur. 
Ainsi, au 05/sept/20223 par exemple, j'ai bien sur l'ensemble de mes comptes 5100 + 2100 + 1000 = 8 200 €.
Ma problématique : comment je peux calculer ce solde global à une date donnée par une variable (dans notre exemple le 05/09/2023).

Merci d'avance pour votre aide.

Le résultat attendu serait 5100 + 2100 + 1000 = 8 200

17 Replies
Cirdecp007
Creator
Creator

Peut-être comme ça :

 sum({<Cpte={'1'},DateSolde=$(=max({<Cpte={'1'}>}DateSolde))>}MontantSolde) + sum({<Cpte={'2'},DateSolde=$(=max({<Cpte={'2'}>}DateSolde))>}MontantSolde) + sum({<Cpte={'3'},DateSolde=$(=max({<Cpte={'3'}>}DateSolde))>}MontantSolde)

Ou :

sum({<Cpte={'1'},DateSolde=$(=max(DateSolde))>}MontantSolde) + sum({<Cpte={'2'},DateSolde=$(=max(DateSolde))>}MontantSolde) + sum({<Cpte={'3'},DateSolde=$(=max(DateSolde))>}MontantSolde)

Ou :

sum({<Cpte={'1'},DateSolde=$(=max({<Cpte={'1'},DateSolde={"<=$(vDate)"}>}DateSolde))>}MontantSolde) + sum({<Cpte={'2'},DateSolde=$(=max({<Cpte={'2'},DateSolde={"<=$(vDate)"}>}DateSolde))>}MontantSolde) + sum({<Cpte={'3'},DateSolde=$(=max({<Cpte={'3'},DateSolde={"<=$(vDate)"}>}DateSolde))>}MontantSolde)

Ou : 

sum({<Cpte={'1'},DateSolde={"$(=max({<Cpte={'1'}>}DateSolde))"}>}MontantSolde) + sum({<Cpte={'2'},DateSolde={"$(=max({<Cpte={'2'}>}DateSolde))"}>}MontantSolde) + sum({<Cpte={'3'},DateSolde={"$(=max({<Cpte={'3'}>}DateSolde))"}>}MontantSolde)

Ou :

sum({<Cpte={'1'},DateSolde={"$(=max(DateSolde))"}>}MontantSolde) + sum({<Cpte={'2'},DateSolde={"$(=max(DateSolde))"}>}MontantSolde) + sum({<Cpte={'3'},DateSolde={"$(=max(DateSolde))"}>}MontantSolde)

Ou :

sum({<Cpte={'1'},DateSolde={"$(=max({<Cpte={'1'},DateSolde={"<=$(vDate)"}>}DateSolde))"}>}MontantSolde) + sum({<Cpte={'2'},DateSolde={"$(=max({<Cpte={'2'},DateSolde={"<=$(vDate)"}>}DateSolde))"}>}MontantSolde) + sum({<Cpte={'3'},DateSolde={"$(=max({<Cpte={'3'},DateSolde={"<=$(vDate)"}>}DateSolde))"}>}MontantSolde)

 

Je pense que la synthaxe n'est pas loin de fonctionner. Quel est le résultat de $(=max({<Cpte={'1'}>}DateSolde)) par exemple ? Peut-être faut-il encore ajouter une fonction date() pour changer le format et l'adapter à celui attendu par DateSolde...

Dref278
Creator II
Creator II

Oui, c'est ce que j'ai dit dans mon post.

Ce qui me questionne, c'est que Qlik est connu pour son moteur associatif, hors, là on souhaite associer des données (Date et solde) qui ne le sont pas forcément dans le modèle. 

Une autre solution pourrait être de générer les données manquantes dans le script de chargement. Cela doit pouvoir se faire avec une jointure. Par contre, cela va générer de la volumétrie dans votre application.

Cdlt,

Pour avoir une bonne réponse, il faut poser la bonne question (Chat GPT, 2023)
Bckaps
Contributor II
Contributor II
Author

Bonjour,

J'ai réussi à générer les données manquantes dans le script  mais avec une condition pour que le calcul soit juste : il doit y avoir un relevé chaque jour. J'aimerais m'affranchir de cette condition. Je vous joins le qvf. Le calcul est bon pour les comptes 1 et 2 mais pas pour le 3 (il y a des trous). Avez-vous une idée pour remplir les trous ?

Bckaps_0-1697016060202.png

Dites moi si je ne suis pas clair dans mes explications.

Bckaps
Contributor II
Contributor II
Author

Bonjour,

Personne pour m'aider ?

Cirdecp007
Creator
Creator

Bonjour,

Ce n'est pas très logique que ça marche pour le 1 et le 2 mais pas pour le 3.

Je suppose qu'il y a une erreur de syntaxe sur la ligne concernant le 3.

Peux-tu nous afficher la formule que tu as écrite ? 

Bckaps
Contributor II
Contributor II
Author

Bonjour,

Voici le code :

Bckaps_0-1697702042004.png

 

Cirdecp007
Creator
Creator

Je comprends mieux.

Le code est fait dans le script de démarrage alors que je proposais des formules dans l'application (plus simple selon moi).

Je ne maitrise pas suffisamment le script de démarrage pour aider mais ce que je peux dire c'est que la formule, je pense, ne marche sur aucune des 3 lignes.

Plus précisément, j'ai remarqué que la formule ne faisait que répéter la somme finale mais ne renseignait pas les valeurs entre 2 dates.

En effet, pour les comptes 1 et 2, les dates sont consécutives donc on ne voit pas le problème mais je suis à peu près sûr que si une date (par exemple 03/09/2023 du compte 1) est modifiée en une autre (par exemple 04/09/2023 toujours pour le compte 1), il y aura un trou aussi (en 03/09/2023 dans notre exemple).

Bckaps
Contributor II
Contributor II
Author

Bonjour,

Personne pour m'aider ?