Bonjour,
J'ai quelques fois un déséquilibre sur ma tva à cause d'un mauvais calcule des arrondi, par exemple :
ht = 73 378.80
tva = 5 136.52
ttc = j'ai 78 515.31 contre 78 515.32
alors comment faire pour fixé ce problème!?
Merci
Bonjour,
J'ai quelques fois un déséquilibre sur ma tva à cause d'un mauvais calcule des arrondi, par exemple :
ht = 73 378.80
tva = 5 136.52
ttc = j'ai 78 515.31 contre 78 515.32
alors comment faire pour fixé ce problème!?
Merci
Salut,
Le montant HT et la TVA sont-ils des champs renseignés à la main ou ils sont issus d'un calcul sur lequel tu fais déjà un arrondi ?
Si tu as un peu de code, n'hésites pas à le poster car comme ça, on ne pourra pas vraiment dire où se situe le problème![]()
Dans ma boule de cristal, je viens de voir qu'en amont tu te bases sur un nombre de décimales > 2.
En ces conditions, normal que la base de l'arrondi soit répercuté sur ton résultat, qui doit au passage être raboté à seulement deux décimales.
Bon... encore un p'tit coup de chiffon à ma boule![]()
Voila le code
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 data.add('60000000'+';'+fieldbyname('cpt_compte').asstring+';;'+'D'+';'+FormatFloat('0.00',fieldbyname('MTHT').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'0'+';;'+'G'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring); data.add('60000000'+';'+fieldbyname('cpt_compte').asstring+';;'+'D'+';'+FormatFloat('0.00',fieldbyname('MTHT').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'1'+';'+fieldbyname('ZST_SECTION_ANALYTIQUE').asstring+'-'+fieldbyname('CLS_CODE').asstring+';'+'A'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring); data.add('60000000'+';'+fieldbyname('TVA_CODE').asstring+';;'+'D'+';'+FormatFloat('0.00',fieldbyname('MTTVA').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'0'+';;'+'G'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring); data.add('60000000'+';'+'4417000000'+';'+fieldbyname('frn_code').asstring+';'+'C'+';'+FormatFloat('0.00',fieldbyname('MTHT').AsFloat+fieldbyname('MTTVA').AsFloat)+';'+fieldbyname('ACH_DATE_DE_LA_PIECE').asstring+';'+fieldbyname('ACH_NUMERO').AsString+';'+'0'+';;'+'G'+';'+fieldbyname('CLS_CLASSIFICATION').asstring+' '+fieldbyname('ART_LIBELLE_COURT').asstring);
Regarde avec :
Sinon donne ton taux de TVA
Code : Sélectionner tout - Visualiser dans une fenêtre à part ...FormatFloat('#.##',field...
@+
Pareil,
Le taux de tva est : 20%
Merci
Alors je te conseillerais d'oublier tout provisoirement ton appli et de simplement faire une petite maquette de test toute basique, mais avec bien entendu le FormatFloat(...)
Bien souvent l'on s'entête sur de fausses bases.
Alors ça donne pareil ?
@+
Bonjour,
pour les calculs financiers, pour ne pas tomber dans les erreurs d'arrondis, il est préférable d'utiliser le type de données CURRENCY au lieu des réels simples ou double précision.
Le type Currency est spécialemend adapté aux calculs financiers et gère convenablement le problème d'arrondi.
Cordialement
Le même problème,
MTHT = 73378.80
Code : Sélectionner tout - Visualiser dans une fenêtre à part CurrToStrF(fieldbyname('MTHT').AsCurrency+fieldbyname('MTTVA').AsCurrency,ffFixed, 2
MTTVA = 5136.52
Normalement je dois avoir en MTTC= 78515.32 alors avec mon code j'ai = 78515.31
essai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CurrToStrF(fieldbyname('MTHT').AsFloat+fieldbyname('MTTVA').AsFloat,ffFixed, 2
Es-tu sûr qu'il n'y a pas un Trunc au remplissage de la DB ?
ps: HT=73378.80, TVA=5136.52, Taux = 20%![]()
J'avais recommandé plus haut ceci :
Mais...Alors je te conseillerais d'oublier tout provisoirement ton appli et de simplement faire une petite maquette de test toute basique, mais avec bien entendu le FormatFloat(...)
Car souvent en "réduisant" là ou ça fait mal, la solution arrive naturellement.
Je parle sans passer par un rapport de BDD. Non un code hyper basic afin de se rendre compte que ça coince ailleurs.
ca marche avec cet exemple :
J'ai 78515.32 bien arrondi
Code : Sélectionner tout - Visualiser dans une fenêtre à part label1.Caption:=FormatFloat('#.##',73378.80+5136.52);![]()
Oki, voilà une nouvelle base solide de référence et d'appui.
Mais en intégration sur ton apli, ça donne quoi, comme auparavant ?
@+
C'est normal. A mon avis, tes valeurs exactes sont, par exemple :
HT = 73378.795 arrondi à 73378.80
TVA = 5136.515 arrondi à 5136.52
TTC = HT+TVA = 78515.310 donc l'affichage arrondi 78515.31 est bon.
Le truc, c'est qu'il faudrait arrondir tes valeurs avant de les additionner dans le calcul TTC. Ainsi t'aurais TTC = 73378.80+5136.52 = 78515.32
Bonne chance![]()
C'est ce dont j'ai vu en ma boule de cristal, et écrit en message n°3.
Mais encore aucune précision en ce sens de la part de son posteur
@+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager