OVH Cloud OVH Cloud

Arrondir une montant à 5 centimes

8 réponses
Avatar
Max du Vuache
Bonjour,

Pourquoi les résultat d'une formule et d'une fonction personnalisée de cette
même formule est différent ?



Je m'explique :



En A1, je mets 0.0025

En A2, je mets la formule =ARRONDI(A1*20;)/20

Le résultat est 0.05, ce qui est juste



Ensuite, je mets en A3 la formule =ArrA5cts(A1)

qui fait appel à la fonction :

Function ArrA5cts(val)

ArrA5cts = Round(val * 20, 0) / 20

End Function

Et le résultat est : 0



Quelqu'un peut m'expliquer pourquoi ?



Merci,



Max

8 réponses

Avatar
Pierre Fauconnier
Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5 et au
supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Max du Vuache" <nospam du a écrit dans le message de
news:
Bonjour,

Pourquoi les résultat d'une formule et d'une fonction personnalisée de
cette même formule est différent ?



Je m'explique :



En A1, je mets 0.0025

En A2, je mets la formule =ARRONDI(A1*20;)/20

Le résultat est 0.05, ce qui est juste



Ensuite, je mets en A3 la formule =ArrA5cts(A1)

qui fait appel à la fonction :

Function ArrA5cts(val)

ArrA5cts = Round(val * 20, 0) / 20

End Function

Et le résultat est : 0



Quelqu'un peut m'expliquer pourquoi ?



Merci,



Max




Avatar
OnE
Bonsoir,

C'est même pire que çà, la fonction round arrondi les nombres ,5 (pas
les autres) au nombre pair le plus proche, ainsi round(9.5,2) =
round(10.5,2) = 10

Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5 et au
supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?




Avatar
isabelle
bonjour,

il n'y a pas ce problème avec,

=PLAFOND(A1;0.05)
montant = 0.0025
MT = Application.Ceiling(montant, 0.05)

isabelle


Bonsoir,

C'est même pire que çà, la fonction round arrondi les nombres ,5 (pas
les autres) au nombre pair le plus proche, ainsi round(9.5,2) =
round(10.5,2) = 10


Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5 et au
supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?






Avatar
ChrisV
Bonjour à tous,

Ma version d'Excel souffrirait-elle d'un micro climat..?
(20°8 C à 00:10...)

avec les valeurs suivantes **, j'obtient les résultats suivants --->:
avec de la gauche vers la droite:
=ARRONDI(A15*20;)/20 ou =0,05*ARRONDI(A15/0,05;)
=PLAFOND(A15;0,05)
=ArrA5cts(A15)

**1,28 --> 1,3 --> 1,3 --> 1,3
**1,25 --> 1,25 --> 1,25 --> 1,25
**1,24 --> 1,25 --> 1,25 --> 1,25
**0,003 --> 0 --> 0,05 --> 0
**0,0025 --> 0 --> 0,05 --> 0
**0,002 --> 0 --> 0,05 --> 0

Les 1e et 3e résultats me semblent corrects, la proposition d'Isa convenant
parfaitement pour arrondir les centimes au multiple de 5 supérieur, mais
qu'elle était précisément le souhait du demandeur...
et surtout le résultat sur la valeur 0.0025 !!!


ChrisV


"isabelle" a écrit dans le message de news:
%
bonjour,

il n'y a pas ce problème avec,

=PLAFOND(A1;0.05)
montant = 0.0025
MT = Application.Ceiling(montant, 0.05)

isabelle


Bonsoir,

C'est même pire que çà, la fonction round arrondi les nombres ,5 (pas les
autres) au nombre pair le plus proche, ainsi round(9.5,2) = round(10.5,2)
= 10


Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5 et au
supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?








Avatar
isabelle
hello ChrisV,

c'est un micro climat qui se répend car avec 0.0025 et =ARRONDI(A15*20;)/20 j'obtiens également 0

isabelle


Bonjour à tous,

Ma version d'Excel souffrirait-elle d'un micro climat..?
(20°8 C à 00:10...)

avec les valeurs suivantes **, j'obtient les résultats suivants --->:
avec de la gauche vers la droite:
=ARRONDI(A15*20;)/20 ou =0,05*ARRONDI(A15/0,05;)
=PLAFOND(A15;0,05)
=ArrA5cts(A15)

**1,28 --> 1,3 --> 1,3 --> 1,3
**1,25 --> 1,25 --> 1,25 --> 1,25
**1,24 --> 1,25 --> 1,25 --> 1,25
**0,003 --> 0 --> 0,05 --> 0
**0,0025 --> 0 --> 0,05 --> 0
**0,002 --> 0 --> 0,05 --> 0

Les 1e et 3e résultats me semblent corrects, la proposition d'Isa convenant
parfaitement pour arrondir les centimes au multiple de 5 supérieur, mais
qu'elle était précisément le souhait du demandeur...
et surtout le résultat sur la valeur 0.0025 !!!


ChrisV


"isabelle" a écrit dans le message de news:
%

bonjour,

il n'y a pas ce problème avec,

=PLAFOND(A1;0.05)
montant = 0.0025
MT = Application.Ceiling(montant, 0.05)

isabelle



Bonsoir,

C'est même pire que çà, la fonction round arrondi les nombres ,5 (pas les
autres) au nombre pair le plus proche, ainsi round(9.5,2) = round(10.5,2)
= 10



Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5 et au
supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?













Avatar
isabelle
et j'ajouterais que c'est normal «mesemble avoir déjà entendu ça ;-)»
puisque,
Si no_chiffres est supérieur à 0 (zéro), nombre est arrondi au nombre de décimales indiqué.
Si no_chiffres est égal à 0, nombre est arrondi au nombre entier le plus proche.
Si no_chiffres est inférieur à 0, nombre est arrondi à gauche de la virgule.

isabelle


hello ChrisV,

c'est un micro climat qui se répend car avec 0.0025 et
=ARRONDI(A15*20;)/20 j'obtiens également 0

isabelle


Bonjour à tous,

Ma version d'Excel souffrirait-elle d'un micro climat..?
(20°8 C à 00:10...)

avec les valeurs suivantes **, j'obtient les résultats suivants --->:
avec de la gauche vers la droite:
=ARRONDI(A15*20;)/20 ou =0,05*ARRONDI(A15/0,05;)
=PLAFOND(A15;0,05)
=ArrA5cts(A15)

**1,28 --> 1,3 --> 1,3 --> 1,3
**1,25 --> 1,25 --> 1,25 --> 1,25
**1,24 --> 1,25 --> 1,25 --> 1,25
**0,003 --> 0 --> 0,05 --> 0
**0,0025 --> 0 --> 0,05 --> 0
**0,002 --> 0 --> 0,05 --> 0

Les 1e et 3e résultats me semblent corrects, la proposition d'Isa
convenant parfaitement pour arrondir les centimes au multiple de 5
supérieur, mais qu'elle était précisément le souhait du demandeur...
et surtout le résultat sur la valeur 0.0025 !!!


ChrisV


"isabelle" a écrit dans le message de news:
%

bonjour,

il n'y a pas ce problème avec,

=PLAFOND(A1;0.05)
montant = 0.0025
MT = Application.Ceiling(montant, 0.05)

isabelle



Bonsoir,

C'est même pire que çà, la fonction round arrondi les nombres ,5
(pas les autres) au nombre pair le plus proche, ainsi round(9.5,2) =
round(10.5,2) = 10



Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5 et
au supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?















Avatar
ChrisV
Salut Isa,

et j'ajouterais que c'est normal...


personne n'ayant "tilté" au "résultat initial" (>...Le résultat est 0.05,
ce qui est juste) du demandeur...
voilà maintenant qui me rassure ;-)


ChrisV


"isabelle" a écrit dans le message de news:

et j'ajouterais que c'est normal «mesemble avoir déjà entendu ça ;-)»
puisque,
Si no_chiffres est supérieur à 0 (zéro), nombre est arrondi au nombre de
décimales indiqué.
Si no_chiffres est égal à 0, nombre est arrondi au nombre entier le plus
proche.
Si no_chiffres est inférieur à 0, nombre est arrondi à gauche de la
virgule.

isabelle


hello ChrisV,

c'est un micro climat qui se répend car avec 0.0025 et
=ARRONDI(A15*20;)/20 j'obtiens également 0

isabelle


Bonjour à tous,

Ma version d'Excel souffrirait-elle d'un micro climat..?
(20°8 C à 00:10...)

avec les valeurs suivantes **, j'obtient les résultats suivants --->:
avec de la gauche vers la droite:
=ARRONDI(A15*20;)/20 ou =0,05*ARRONDI(A15/0,05;)
=PLAFOND(A15;0,05)
=ArrA5cts(A15)

**1,28 --> 1,3 --> 1,3 --> 1,3
**1,25 --> 1,25 --> 1,25 --> 1,25
**1,24 --> 1,25 --> 1,25 --> 1,25
**0,003 --> 0 --> 0,05 --> 0
**0,0025 --> 0 --> 0,05 --> 0
**0,002 --> 0 --> 0,05 --> 0

Les 1e et 3e résultats me semblent corrects, la proposition d'Isa
convenant parfaitement pour arrondir les centimes au multiple de 5
supérieur, mais qu'elle était précisément le souhait du demandeur...
et surtout le résultat sur la valeur 0.0025 !!!


ChrisV


"isabelle" a écrit dans le message de news:
%

bonjour,

il n'y a pas ce problème avec,

=PLAFOND(A1;0.05)
montant = 0.0025
MT = Application.Ceiling(montant, 0.05)

isabelle



Bonsoir,

C'est même pire que çà, la fonction round arrondi les nombres ,5 (pas
les autres) au nombre pair le plus proche, ainsi round(9.5,2) =
round(10.5,2) = 10



Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5 et au
supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?

















Avatar
Oliv'
Salut à tous,
j'avais trouvé pour arrondir à un chiffre divisible par 4 (transposé ici
pour 5)
=ARRONDI.SUP(A15/5;2)*5
Si ca peux faire avancer l'bazar ;-))

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


ChrisV que je salut a écrit


Salut Isa,

et j'ajouterais que c'est normal...


personne n'ayant "tilté" au "résultat initial" (>...Le résultat est 0.05,
ce qui est juste) du demandeur...
voilà maintenant qui me rassure ;-)


ChrisV


"isabelle" a écrit dans le message de news:

et j'ajouterais que c'est normal «mesemble avoir déjà entendu ça ;-)»
puisque,
Si no_chiffres est supérieur à 0 (zéro), nombre est arrondi au
nombre de décimales indiqué.
Si no_chiffres est égal à 0, nombre est arrondi au nombre entier le
plus proche.
Si no_chiffres est inférieur à 0, nombre est arrondi à gauche de la
virgule.

isabelle


hello ChrisV,

c'est un micro climat qui se répend car avec 0.0025 et
=ARRONDI(A15*20;)/20 j'obtiens également 0

isabelle


Bonjour à tous,

Ma version d'Excel souffrirait-elle d'un micro climat..?
(20°8 C à 00:10...)

avec les valeurs suivantes **, j'obtient les résultats suivants
--->: avec de la gauche vers la droite:
=ARRONDI(A15*20;)/20 ou =0,05*ARRONDI(A15/0,05;)
=PLAFOND(A15;0,05)
=ArrA5cts(A15)

**1,28 --> 1,3 --> 1,3 --> 1,3
**1,25 --> 1,25 --> 1,25 --> 1,25
**1,24 --> 1,25 --> 1,25 --> 1,25
**0,003 --> 0 --> 0,05 --> 0
**0,0025 --> 0 --> 0,05 --> 0
**0,002 --> 0 --> 0,05 --> 0

Les 1e et 3e résultats me semblent corrects, la proposition d'Isa
convenant parfaitement pour arrondir les centimes au multiple de 5
supérieur, mais qu'elle était précisément le souhait du
demandeur... et surtout le résultat sur la valeur 0.0025 !!!


ChrisV


"isabelle" a écrit dans le message de news:
%

bonjour,

il n'y a pas ce problème avec,

=PLAFOND(A1;0.05)
montant = 0.0025
MT = Application.Ceiling(montant, 0.05)

isabelle



Bonsoir,

C'est même pire que çà, la fonction round arrondi les nombres ,5
(pas les autres) au nombre pair le plus proche, ainsi
round(9.5,2) = round(10.5,2) = 10



Bonsoir

Je pense que round de vba arrondit au nombre inférieur pour <=5
et au supérieur pour >5

Tu peux corriger cela avec
Function ArrA5cts(val)
ArrA5cts = WorksheetFunction.Round(val * 20, 0) / 20
End Function

qui utiliser la fonction Round d'Excel et non celle de VBA.

Ok?