Arrondi

Résolu
pascalou83400 Messages postés 277 Date d'inscription   Statut Membre Dernière intervention   -  
pascalou83400 Messages postés 277 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

Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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
pascalou83400 Messages postés 277 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
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Et en plus simple
=ARRONDI(20*A1;0)/20
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
et en vba
Public Function arr005(c As Double) As Double
arr005 = Round(20 * c) / 20
End Function
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

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

prix_cond = Round(20 * prix_cond) / 20
0
pascalou83400 Messages postés 277 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
pascalou83400 Messages postés 277 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