IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

problème d'arrondi dans un état


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut problème d'arrondi dans un état
    Bonjour à tous

    Voilà j'ai un soucis d'arrondi entre une appli dotnet (c#) et une appli vb6.
    Dans un état développé avec le composant crystal report de visual studio 2003 j'ai une somme sur laquelle il manque 0.01. Lorsque je fais la somme à la main je trouve 464,18 alors que CR me donne 464,17. Le champ qui sert à fairte la somme est un champ calculé. Il calcul une tva. Je précise que le montant de tva pour chaque ligne est correct. Mais la somme de ce champ pose problème.

    La formule pour le champ somme est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formula = Sum ({@MontLigneTVA1})
    La formule pour le champ montant tva est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim montantTVA_1 as double
    if({rqyResultat.LfaCodeTva} = 1) then 
        montantTVA_1 = ({rqyResultat.Tva} / 100) * {@prixtotligne}
    end if
    formula = montantTVA_1
    Dans mon appli VB6 qui travaille sur les même données pas de problème de ce genre. Mais les états dans cette appli windows sont des fichiers HTML. je n'utilise donc pas de composant de reporting type crystal report.

    Du coup je ne sais pas trop comment faire ... Vous avez une idée ? une piste ?

    grome

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    le résultat dépend de si tu fais tes arrondis sur chaque ligne avant de faire la somme ou si tu le fais qu'à la fin
    sinon essaye avec un decimal au lieu d'un double (bien que tes sommes ne doivent pas avoir beaucoup de chiffres après la virgule)

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    les chiffres sont bien formatés.
    Il n'y a que deux chiffres après la virgule. J'ai tracé le code des deux cotés, pour être certain, que le montant HT de chaque ligne sur lequel est calculé le montant de TVA, est correct. Le montant de TVA obtenu est correct et bien formatté lui aussi sur deux chiffre, les arrondis à ce niveau sont corrects.

    Par contre la somme finale n'est pas bonne dans l'état Crystal report.

    Dans mon état, pour tester tout çà, j'ai affiché le montant de la tva pour chaque ligne. Puis j'ai vérifié çà à la main avec ma calculette. 289.20 +17.64 + 6.82 etc Et quand je fais la somme je trouve bien le montant de la TVA (464.18) que je trouve dans mon appli VB6. !!??!!?? CR dans Visual Studio donne (464,17) Bizarre non ?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Comment les chiffres sont formatés ? A l'affichage ? Parce que si c'est à l'affichage, la valeur contenue dans la variable reste celle avec 4 ou 5 décimales après la virgule et donc il peut y avoir au final une erreur d'arrondi.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    http://www.cilc.fr/cap.jpg
    Voilà comment la sortie écran...

    J'en profite pour donner la formule que j'utilise dans l'état pour calculer le total hors taxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formula = Round ({rqyResultat.LfaQte},2 )* Round ({rqyResultat.LfaPrixU},2 )
    Voilà j'ai mis tout le détail des formules. Le total que l'on observe à l'écran est obtenu en faisant formula = sum(MontantTvaLigne) il devrait donné 464.18

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Et si tu faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    formula = Round ({rqyResultat.LfaQte}*{rqyResultat.LfaPrixU},2)
    ?

  7. #7
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Comment les chiffres sont formatés ? A l'affichage ? Parce que si c'est à l'affichage, la valeur contenue dans la variable reste celle avec 4 ou 5 décimales après la virgule et donc il peut y avoir au final une erreur d'arrondi.
    Oui bien sur mais dans ce cas j'aurais une différence bien plus importante que 0.01 centimes d'euros sur un total de 2000 ou 3000 euros tu peux avoir une erreur d'un euro. Ce n'est pas le cas ici.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim montantTVA_1 as double
    if({rqyResultat.LfaCodeTva} = 1) then 
        montantTVA_1 = Round(({rqyResultat.Tva} / 100) * {@prixtotligne}, 2)
    end if
    formula = montantTVA_1
    et rien changer d'autre ?

  9. #9
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Et si tu faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    formula = Round ({rqyResultat.LfaQte}*{rqyResultat.LfaPrixU},2)
    ?
    Ca change rien... je viens juste d'essayer...
    par contre je vais essayer de faire ce calcul dans la requete sql plutôt que dans l'état. Je suis pas convaincu mais bon ...

  10. #10
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    [CODE]
    et rien changer d'autre ?
    Que veux tu dire par là ?

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Mais tu calcules bien la somme de tous les montantTVA_1 ou la formule avec les deux rounds ?

  12. #12
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Mais tu calcules bien la somme de tous les montantTVA_1 ou la formule avec les deux rounds ?
    je calcule la somme de tous les montantTVA_1. la formule avec les deux rounds elle sert juste à calculer le montant HT. Après il y a le champ montantTVA_1 qui est un champ formule qui calcule le montant de la tva. et à la fin je fais la somme de ce champ. Et c'est cette somme qui est fausse.

    Bon je viens de procéder autrement j'ai fais dans la requete sql ma multiplication qte * prix unitaire et j'obtiens bien le bon total ht bien formaté, bien arrondi, pas de problème. pas de pbs non plus pour calculer le montant de tva pour chaque ligne. Mais la encore quand je fais le total çà ne marche pas. 464.17 au lieu de 464.18. j'ai même remplacé les types dans le dataset de l'état (j'ai remplacé les decimaux par des doubles et rien n'y fait). je vais aller encore plus loin et calculer le montant de la tva dans la requete sql (juste pour tester, je vais considérer que tout est à 19.6). Et je ferais la somme dans l'état.

    A la fin je vais plus avoir de formule dans mon état...

  13. #13
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut


    ok c'est bon ca viens bien de Crystal report.

    Si je fais tous les calculs dans la requete sql et bien au final la somme du champ montant tva est bonne je trouve bien 464.18. Ceci que le type du dataset soit double ou decimal pour les 4 champs en question. qte, prixu, montht, monttva

  14. #14
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 163
    Points : 98
    Points
    98
    Par défaut
    je me suis débrouillé en recréant mes champs formules et en faisant les calculs dans la requète sql

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de moyenne dans un état.
    Par toun02 dans le forum IHM
    Réponses: 1
    Dernier message: 24/11/2007, 05h22
  2. Réponses: 0
    Dernier message: 30/10/2007, 15h45
  3. Problème de date dans un état
    Par MAMANHOU dans le forum IHM
    Réponses: 2
    Dernier message: 13/06/2007, 16h04
  4. problème d'affichage dans 1 état
    Par tomas dans le forum IHM
    Réponses: 7
    Dernier message: 02/03/2007, 15h59
  5. Problème d'affichage dans mon état
    Par gontrand16 dans le forum Access
    Réponses: 6
    Dernier message: 05/07/2006, 20h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo