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,

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

    Je vous souhaite une bonne journée.

    Amicalement.

    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. 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. 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. Contributeur
          Bonjour,

          il y a aussi :
          =ARRONDI.AU.MULTIPLE(A2;0.05)
          eric
          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. 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 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. 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