PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Simple graphe donut 2 valeurs
Simple graphe donut 2 valeurs
Débuté par Max, 20 déc. 2024 15:32 - 7 réponses
Membre enregistré
37 messages
Posté le 20 décembre 2024 - 15:32
Bonjour,
Je tourne en rond alors je fais appel à vous.
J'aimerai juste faire un camembert (donut) comme ci-joint.
Il représente 1 montant objectif fixe en début d'année. (ici 176 200€)
J'ai une requête toute simple qui fait une somme des totaux HT des factures et qui me renvoie une
valeur ici 67015€
En gros je veux comparer les 2 valeurs comme sur l'image.
Je ne sais pas comment alimenter le graphe
Je sais que le calcul du pourcentage c'est
(67015 / 176200) * 100
Je vous remercie


Membre enregistré
141 messages
Posté le 21 décembre 2024 - 06:56
Bonjour

Je vois votre problème, vous ne savez pas coder alors que vous demandez une graphe de pourcentage, j'ai le codage pour vous

1. Vous devrez coder le programme suivant

// EDD (12/24) : Création d'une nouvelle graphe type graphe : beignet (donut) vous savez çà je pense
// EDD (12/24) : Créer une bouton de facturation
LOCAL
cFacture is ClFacture
LIB_Pourcentage = "0"
cFacture:m_nEntrée = 176200
cFacture:m_nSortie = 67015
cFacture:Validation()
IF cFacture:m_bRetour = True THEN
grSupprimeTout(GRP_Facturation)
grAjouteDonnée(GRP_Facturation, 1, 1, cFacture:m_nSortie)
grAjouteDonnée(GRP_Facturation, 1, 2, cFacture:m_nEntrée - cFacture:m_nSortie)
grCouleurSérie(GRP_Facturation, 1, RVB(0,128,255))
grCouleurSérie(GRP_Facturation, 2, RVB(129,191,255))
grDessine(GRP_Facturation)
cFacture:Facturation()
LIB_Pourcentage = Arrondi(cFacture:m_nPourcentage, 0) + " %"
END

// EDD (12/24) : Créer une classe ClFacture
ClFacture est une Classe
m_bRetour is booléen
m_nEntrée is numérique
m_nSortie is numérique
m_nPourcentage is numérique
FIN
// EDD (12/24) ; Créer les méthodes suivantes
PROCÉDURE Validation()
:m_bRetour = True
IF :m_nEntrée = 0 THEN
Info("Merci de vérifier l'entrée des argents s'il vous plaît.")
:m_bRetour = False
ELSE IF :m_nSortie = 0 THEN
Info("Merci de vérifier la sortie des argents s'il vous plaît.")
:m_bRetour = False
END

PROCÉDURE Facturation()
:m_nPourcentage = (100 * :m_nSortie) / :m_nEntrée

// EDD (12/24) : Créer un libellé pour afficher le pourcentage LIB_Pourcentage
NB : C'est un code en version classe

Cordialement
Mr.RATSIMANDRESY
Niry Aina Eddy
Membre enregistré
141 messages
Posté le 21 décembre 2024 - 06:58




: Lecture d'un nouveau graphe
Membre enregistré
37 messages
Posté le 21 décembre 2024 - 11:01
Bonjour et un grand merci pour votre aide précieuse.
Je teste ça dès que possible (Là organisation des fêtes de fin d'année)
A ce propos de joyeuses fêtes à vous ainsi qu'à l'ensemble des membres de ce forum
Membre enregistré
37 messages
Posté le 21 décembre 2024 - 11:38
Je n'ai ps pu m'empêcher de prendre quelques minutes pour essayer.
Votre code fonctionne à merveille avec les valeurs "fixes"
cFacture:m_nEntrée = 176200
cFacture:m_nSortie = 67015

Par contre si je tente de dire que cFacture:m_nEntrée = le contenu d'un champ présent dans la fenêtre ou un champ issu d'une requête que je lance à l'initialisation de la fenêtre, cela ne fonctionne pas.

exemple dans l'initialisation de ma fenêtre (là où j'ai placé votre code LOCAL etc) j'ai
HExécuteRequête(REQ_CA_ANNEEENCOURS)
CA_EN_COURS=REQ_CA_ANNEEENCOURS.la_somme_Total_TTC

si je fais
cFacture:m_nEntrée = cFacture:m_nEntrée = 176200

rien nada
Je pense que pour cFacture:m_nSortie cela sera identique

Allez je file et encore merci
Membre enregistré
37 messages
Posté le 21 décembre 2024 - 14:57
Erreur je voulais pas dire
cFacture:m_nEntrée = cFacture:m_nEntrée = 176200

Mais
cFacture:m_nEntrée = CA_EN_COURS
Membre enregistré
37 messages
Posté le 21 décembre 2024 - 22:05
En définitive j'avais fait une erreur, cela fonctionne bien.
Le seul problème de ce code, apparemment, c'est quand le chiffre d'affaire dépasse l'objectif....
Plus aucun affichage
Membre enregistré
130 messages
Posté le 26 décembre 2024 - 11:25
bonjour,

c'est normal vous utilisez un camembert pour définir un ratio; vous ne pouvez dépasser la valeur maximum , un cercle ne peut faire plus de 360°.