Arrondi

Résolu
pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   -  
pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention   -
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. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
  2. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    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
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Et en plus simple
      =ARRONDI(20*A1;0)/20
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      et en vba
      Public Function arr005(c As Double) As Double
      arr005 = Round(20 * c) / 20
      End Function
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    il y a aussi :
    =ARRONDI.AU.MULTIPLE(A2;0.05)
    eric
    0
  7. pasalou83
     
    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
  8. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Essaies ceci

    prix_cond = Round(20 * prix_cond) / 20
    0
    1. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
       
      Je te remercie pour ton aide, j'ai réussi à mettre ce code et celui ci fonctionne parfaitement.

      Bonne journée.

      Amicalement.

      Pascal
      0
  10. pascalou83400 Messages postés 285 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

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

    Je vous souhaite une bonne journée.

    Amicalement.

    Pascal
    0