Arrondi

Résolu
Bonjour à tous,

J'ai un problème d'arrondi, quand j'ai un nombre 2.90 et que je l'arrondi avec le code ci-dessous cela me fait 3.00 alors que le calcul est 2.90 + 0.29 donc 3.19, j'ai fais des essais avec 0.25, c'est pareil.

je ne trouve pas de solution , auriez vous une explication à mon problème.

prix_cond = prix_cond / Cells(J, 29)
prix_cond = prix_cond + Cells(J, 22)
prix_cond = Round(prix_cond, 0.5)
Cells(J, 26) = prix_cond

Merci.

Bonne soirée.
Pascal

9 réponses

  1. Bonjour
    Normal, vous demandez un arrondi à 0,5, autant dire 0, donc pas de décimales.
    Faite un essai avec une formule excel, il vous renverra la même chose.
    Corrigez avec arrondi 2
    prix_cond = Round(prix_cond, 2)
    cdlt
    0
    1. Bonjour Frenchie83,

      Merci pour votre réponse, j'ai fait un essai, mais je cherche à avoir des nombres qui finissent par 3.20 pour mon exemple ou par 0.05, je veux supprimer les 1, 2 ,3 ,4 ,6 , 7, 8 , 9.

      Je ne sais pas si mon explication est compréhensible.

      Bonne journée.
      0
      1. Re
        proposition en formule excel,
        =SI(ABS(PLANCHER(A1;0,05)-A1)<ABS(PLAFOND(A1;0,05)-A1);PLANCHER(A1;0,05);PLAFOND(A1;0,05))
        remplacez "A1" par votre valeur à tester
        cdlt
        0
        1. Bonjour à tous les deux

          tu as aussi

          =SI(MOD(10*A1;1)=0,5;A1;SI(MOD(10*A1;1)<0,5;ENT(10*A1)/10;(1+ENT(10*A1))/10))

          et en vba

          Public Function Arr(c As Single) As Single
          Dim c10 As Single
          c10 = (10 * c) - Int(10 * c)
          If c10 = 0.5 Then
            Arr = c
          ElseIf c10 < 0.5 Then
            Arr = Int(10 * c) / 10
          Else
            Arr = (1 + Int(10 * c)) / 10
          End If
          End Function

          Cdlmnt
          0
          1. Et en plus simple
            =ARRONDI(20*A1;0)/20
            0
          2. et en vba
            Public Function arr005(c As Double) As Double
            arr005 = Round(20 * c) / 20
            End Function
            0
        2. Contributeur
          Bonjour,

          il y a aussi :
          =ARRONDI.AU.MULTIPLE(A2;0.05)
          eric
          0
          1. Bonjour à tous,

            Je vais essayer de mettre en application dans mon code et je reviens vers vous si j'ai besoin de vos lumières.

            Je débute dans le vba et c'est pas très facile.

            Bonne journée.

            Pascal
            0
            1. Je vous remercie tous pour votre aide , mais je n'arrive pas à l'intégrer dans mon code vba de mon fichier.

              Mon code est le suivant :

              prix_cond = prix_cond / Cells(J, 29)
              prix_cond = prix_cond + Cells(J, 22)
              prix_cond = Round(prix_cond, 0.5)
              Cells(J, 26) = prix_cond

              Merci.

              Bonne journée.

              Pascal
              0
              1. Essaies ceci

                prix_cond = Round(20 * prix_cond) / 20
                0
                1. Je te remercie pour ton aide, j'ai réussi à mettre ce code et celui ci fonctionne parfaitement.

                  Bonne journée.

                  Amicalement.

                  Pascal
                  0
              2. Bonjour,

                Je vous remercie pour votre aide, la formule de ccm81 fonctionne à merveille.

                Je vous souhaite une bonne journée.

                Amicalement.

                Pascal
                0