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

Access Discussion :

Problème de calcul avec arrondis


Sujet :

Access

  1. #1
    Membre habitué

    Inscrit en
    Mars 2007
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 325
    Points : 132
    Points
    132
    Par défaut Problème de calcul avec arrondis
    Bonjour,

    J'espère que cette fois-ci, c'est un "vrai" problème - pas encore le système qui me joue des tours! Parce que si c'est un "vrai" problème, il y aura une "vraie" solution!!!

    Dans ma BD, j'ai une requête qui comporte une formule qui a comme principe (je ne tiens pas compte de la "syntaxe" ici, seulement du principe):

    Arrondi (valeur * 1,50)

    Et je veux que le résultat soit arrondi sans décimale, au nombre entier supérieur.

    Ce qui fait que j'ai des valeurs comme :

    5 * 1,5 = 8 (ça, ça va, c'est parfait)
    171 * 1.5 = 257 (ça aussi, c'est parfait)
    25 * 1.5 = 38 (ça fonctionne)

    Mais j'ai aussi comme résultat
    15 * 1.5 = 22 (alors que le résultat devrait être 23)
    95 * 1.5 = 142 (alors que le résultat devrait être 143)
    171 * 1.5 = 256 (alors que le résultat devrait être 257)
    31 * 1.5 = 46 (alors que le résultat devrait être 47)

    Ça m'embête car comme il s'agit de factures, au bout du compte, je ne balance plus! Car mes factures sont erronnées. À noter que ces résultats sont tous dans la même "colonne"

    Quelqu'un a une idée? Parce que ça me bogue...

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Peut-être en typant tes données comme des double tu pourrais résoudre ce problème.

    Tu peux aussi utiliser la fonction suivante qui va faire le travail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub Test_MonArrondi()
        Debug.Print MonArrondi(15 * 1.5)
    End Sub
     
    Public Function MonArrondi(prmValeur As Double) As Long
     
      Dim result As Long
      Dim partieEntiere As Double
      Dim partieDecimale As Double
      partieEntiere = Int(prmValeur)
      partieDecimale = prmValeur - partieEntiere
     
      If partieDecimale >= CDbl(0.5) Then
          result = CLng(partieEntiere + 1)
        Else
          result = CLng(partieEntiere)
      End If
     
      MonArrondi = result
     
    End Function
    Au moins si cela ne marche pas tu pourras suivre le calcul.
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir
    il semblerait effectivement que la fonction Round ait des problèmes quand la décimale tombe sur 0.5 - déjà sur ton exemple tu as une fois 171*1.5
    qui donne 256 et une autre 257 et ça a mon avis ce n'est pas normal dans tous les cas verifies !!
    une solution
    supprime la fonction et met simplement dans ton champ calculé
    "Nom du Champ":[VALEUR]*1.5 et la propriété du champ : décimal = 0 et tu n'auras plus de problème, tes sommes seront correctes.

  4. #4
    Membre habitué

    Inscrit en
    Mars 2007
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 325
    Points : 132
    Points
    132
    Par défaut
    Merci à vous deux de vos réponses.

    Cependant, le VBA est un peu au-dessus de mes compétences immédiates. Et 0 décimale permet un affichage adéquat... mais le grand total au bas de la page en tient compte.

    Vos commentaires m'ont cependant donné une idée toute simple qui fonctionne parfaitement!

    Arrondi ((valeur+0,01) * 1,50)

    (Ce calcul en est un de tarification en dollars) J'ai ajouté un cent à ma formule et Access calcule correctement l'arrondi!

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    ha! ha! malines ces nanas - elles trichent et finalement malgré les difficultes elles trouvent la solution -
    félicitation tu as trouvé une solution

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Citation Envoyé par Flaguette Voir le message
    Cependant, le VBA est un peu au-dessus de mes compétences immédiates.
    Il suffit de créer un nouveau module et de copier le code que j'ai écrit. Après tu remplace le round() par MonArrondi() et le tour est joué.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. problème de calcul avec iReport
    Par wilkom2009 dans le forum Jasper
    Réponses: 1
    Dernier message: 18/02/2010, 19h31
  2. XSL problème de calcul avec décimales
    Par jejelafrite dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/07/2007, 21h53
  3. Problème de calculer avec textbox et produire un single ou double ?
    Par zizou2007 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 27/01/2007, 18h59
  4. Problème de calcul avec les float
    Par Oberown dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/05/2006, 09h28
  5. Problème de calcul avec les heures
    Par smotte76 dans le forum Access
    Réponses: 12
    Dernier message: 28/04/2006, 20h21

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