OVH Cloud OVH Cloud

Fonction Arrondi.inf dans VBA

29 réponses
Avatar
JCL
Bonjour,
existe t-il l'équivalent de arrondi.inf dans VBA? Je n'ai trouvé que Round
et cela ne répond pas à mon souci.
En fait, je cherche la fonction VBA qui me permettrait de transformer
automatiquement 68,56 en 68.50; 68.58 en 68,50.

Merci d'avance.

9 réponses

1 2 3
Avatar
lSteph
Bonjour Alain,
;-)
Si tu permets, je ne suis pas vraiment d'accord avec ta démonstration qui
peut illustrer très bien ce que j'y vois,
lorsqu'on parle d'arrondi pour les nombres positifs , on fait soit un
arrondi au plus juste, soit par excès , soit par défaut.
Lorsque l'on s'éloigne du 0 côté positif parler d'arrondir inférieur
convient pour arrondi par défaut à 0,n près s'accomode
de cette vérification:
62.56 > 62.5
mais lorsque l'on est en négatif il faut soit raisonner en valeur absolue
soit considèrer l'écart en valeur négative
ainsi un intervalle de 0, 5 positif doit il correspondre à un intervalle
de -0,5 si l'on s'exprime en négatif.
Soit pour reprendre l'exemple on inverse le signe et cela colle ainsi
: -62.56<-62.5 ou ramené en positif abs(-62.56)>abs(-62.5)

à bientôt

Amicalement

lSteph

"AV" a écrit dans le message de news:
%
| Après pour le sens d'arrondi , côté négatif , je reste perplexe sur les
| propos d'Alain
| car il me semble que si côté positif on arrondit 62,56 à 62,5
| on doit procèder de même côté négatif soit avec -62,56 doit
envoyer -62,5

S'il s'agit d'arrondi inférieur (question initiale)
62.56 doit donner 62.50
-62.56 doit donner -62.00 et non -62.50

Il suffit de faire 2 tests logiques pour s'en convaincre :
= 62.56 > 62.5
= -62.56 > -62.5


AV




Avatar
JLuc
*Bonjour AV*,

Ca, c'est ce que donne excel avec arrondi.inf, mais la logique voudrait
que, pour un arrondi inferieur d'un nombre negatif, l'arrondi se fasse
dans l'autre sens : 62.56 = 62.5, -62.56 devrait etre = -62.6

Il suffit de faire 2 tests logiques pour s'en convaincre :
= 62.56 > 62.5
= -62.56 > -62.5


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
lSteph
Bonjour JLuc,

Pour obtenir une valeur inférieur soit!
Pour obtenir un arrondi non!
Car (selon mon humble avis) rounddown traduit de l'anglais en arrondi.inf
s'entend arrondi (par défaut) par opposition à arrondi par excès.

l'écart à équivalence se doit (selon moi) d'être mesuré en valeur absolue
soit négatif -0.5 correspondant à positif 0.5 de part et d'autres du zéro.

Reste que outre ce que voudrait la logique qui ne semble visiblement pas
être la même pour tout le monde.
Personne ne s'y trompe mais visiblement n'envisage pas ici tout à fait la
même chose.
L'important, c'est d'y voir clair et de savoir où l'on va.
Vive le MPFE et tous ses participants et disons que si parfois ,
on est pas d'accord entre nous cela doit permettre une meilleure réflexion
de part et d'autre.

Bon Dimanche.

lSteph

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

*Bonjour AV*,

Ca, c'est ce que donne excel avec arrondi.inf, mais la logique voudrait
que, pour un arrondi inferieur d'un nombre negatif, l'arrondi se fasse
dans l'autre sens : 62.56 = 62.5, -62.56 devrait etre = -62.6

Il suffit de faire 2 tests logiques pour s'en convaincre :
= 62.56 > 62.5
= -62.56 > -62.5


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





Avatar
lSteph
Re,
ou pourquoi pas :
MsgBox 1*(Int(x / 0.5) * 0.5)
Cette formulation ne convient pas
Si,si! Effectivement, j'ai dit sans doute un peu vite que

j'étais d'accord, il reste le problème du sens négatif qui tient simplement
de l'acception du sens d'arrondi.inf (par défaut) et finalement
arrondi.inf ou Worksheetfunction.roundown que d'autres ont répondu
entre temps convient très bien.

Toutefois, j'ai bien compris ta façon de voir et ainsi il me semble que l'on
peut clore
cet, au demeurant, intéressant débat, d'autant que le problème initial, quoi
qu'il en soit d'après
l'exemple redonné par JCL filtre d'abord par un Select Case des valeurs de
0 à n, excluant
ainsi (à tort ou à raison) la présence de valeurs négatives.

Cordialement.

lSteph

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

| MsgBox CDbl(Int([a1] * 10) / 10)

Cette formulation ne convient pas pour les valeurs négatives....

AV




Avatar
AV
| Ca, c'est ce que donne excel avec arrondi.inf, mais la logique voudrait
| que, pour un arrondi inferieur d'un nombre negatif, l'arrondi se fasse
| dans l'autre sens : 62.56 = 62.5, -62.56 devrait etre = -62.6

-62.56 ----> -62.6
Glups.... Mais que fait_on de l'intervalle de 0.5 ?
Je ne peux pas être d'accord avec ça...

AV
Avatar
AV
Je ne suis pas d'accord...mais bon...

AV
Avatar
JLuc
*Bonjour AV*,

Glups.... Mais que fait_on de l'intervalle de 0.5 ?


J'ai bien relu les posts, il n'a jamais ete question d'intervale de 0.5
8-o
Seulement d'arrondir au dixieme inferieur. Ou alors j'ai encore tout
faut :oÞ

--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
yoyoalternatif
Bonjour,

Hum, si j'achète des articles en HTaxe et qu'à cause des décimales
on m'arrondit un prix de vente ttc
de 15.56 à 15.50 c'est très commercial et j'en suis satisfait.
Si maintenant , on s'est trompé dans la quantité de ma commande et
que l'on doit appliquer
la même fonction pour calculer l'arrondi du montant à déduire, et
bien avec votre méthode
je serais encore plus content puisque je vais gagner 50cts par
article....

Merci!

-:)

yoyo



| de l'acception du sens d'arrondi.inf (par défaut) et finalement
| arrondi.inf ou Worksheetfunction.roundown que d'autres ont répondu
| entre temps convient très bien.


Il y a, me semble-t-il, incompréhension sur la question posée et donc sur la(les) réponse(s) :
Il ne s'agit pas de faire l'exégèse de la fonction ARRONDI.INF qui ar rondit en tendant vers zéro (voir aide) mais de répondre à la questio n (** envisagée/supposée/subodorée/devinée) :
Comment arrondir une valeur aux 0.50 (ou autre intervalle, peu importe) i nférieurs ?

Plus concrètement :
Valeurs initiales positives --> résultats attendus
10.01 --> 10.00
10.25 --> 10.00
10.50 --> 10.50
10.75 --> 10.50
10.99 --> 10.50
Ces résultats peuvent être obtenus par (nbre de solutions non exhaus tif !)
=PLANCHER(x;0.5) ou bien =ENT(x/0.5)*0.5 ou encore.....

Si l'on se situe dans cette logique de résultats, la valeur obtenue est , dans le "meilleur" des cas, ÉGALE à la valeur précédente (10.50 - -> 10.50) ou bien toujours INFÉRIEURE de quelques dixièmes (10.99 -- > 10.50 ou 10.01 --> 10.00...etc...).

Pour que cette logique soit respectée, il convient, lorsque la valeur i nitiale est négative, que la valeur obtenue soit encore ou ÉGALE à la valeur initiale ou INFÉRIEURE à la valeur initiale et donc, dans ce ca s, s'éloigne de zéro.

Donc.....
-10.99 doit donner -11.00 (valeur inférieure à -10.99) et non -10.50 (valeur supérieure à -10.99)

Donc.....
La fonction PLANCHER, même adaptée pour les valeurs négatives sous la forme =PLANCHER(x;SIGNE(x)*0.5), ne convient pas, et seule (parmi les deux formulations proposées) =ENT(x/0.5)*0.5 respecte la logique initia le

** Rayer les mentions inutiles

NDLR : A défaut d'incompréhension des propos qui précédent, l'aut eur devra changer de boulot
-:)
AV


------=_NextPart_000_0144_01C65709.50967E40
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
X-Google-AttachSize: 4488

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859- 1">
<META content="MSHTML 6.00.2900.2802" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face=Arial size=2>&gt;|&nbsp;de l'acception du sens d'arro ndi.inf
(par défaut) et finalement<BR>&gt;| arrondi.inf ou Worksheetfunction.ro undown
que d'autres ont répondu<BR>&gt;| entre temps convient très bien.</FO NT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Il y a, me semble-t-il, incompréhensio n sur la
question posée&nbsp;et donc sur la(les) réponse(s) :</FONT></DIV>
<DIV><FONT face=Arial size=2>Il ne s'agit pas de faire l'exégèse de
la&nbsp;fonction ARRONDI.INF qui arrondit en tendant vers zéro (voir ai de) mais
de répondre à la question (<STRONG>**</STRONG>
envisagée/supposée/subodorée/devinée)&nbsp;:</FONT></DIV>
<DIV><FONT face=Arial size=2>Comment arrondir une valeur&nbsp;aux 0.5 0 (ou autre
intervalle,&nbsp;peu importe) inférieurs ?</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Plus concrètement :</FONT></DIV>
<DIV><FONT face=Arial size=2>Valeurs initiales positives&nbsp;--&gt; résultats
attendus</FONT></DIV>
<DIV><FONT face=Arial size=2>10.01 --&gt; 10.00</FONT></DIV>
<DIV><FONT face=Arial size=2>10.25 --&gt; 10.00</FONT></DIV>
<DIV><FONT face=Arial size=2>10.50 --&gt; 10.50</FONT></DIV>
<DIV><FONT face=Arial size=2>10.75 --&gt; 10.50</FONT></DIV>
<DIV><FONT face=Arial size=2>10.99 --&gt; 10.50</FONT></DIV>
<DIV><FONT face=Arial size=2>Ces résultats peuvent être obtenus p ar&nbsp; (nbre
de solutions non exhaustif !)</FONT></DIV>
<DIV><FONT face=Arial size=2>=PLANCHER(x;0.5) ou bien =ENT(x/0.5) *0.5 ou
encore.....</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>Si l'on se situe dans cette logique de r ésultats,
la valeur obtenue est, dans le "meilleur" des cas, <STRONG><FONT
color=#0000ff>ÉGALE </FONT></STRONG>à la valeur précédente (10. 50 --&gt; 10.50)
ou bien&nbsp;toujours <STRONG><FONT color=#0000ff>INFÉRIEURE</FONT></ STRONG> de
quelques dixièmes (10.99 -- &gt; 10.50 ou 10.01 --&gt;
10.00...etc...).</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><U><STRONG>Pour que cette logique soit
respectée</STRONG></U>, il convient, lorsque la <FONT color=#ff0000>< FONT
color=#000000>valeur initiale est</FONT> <STRONG>négative</STRONG></F ONT>, que
la valeur obtenue soit <FONT color=#ff0000><STRONG>encore </STRONG></FO NT>ou
<STRONG><FONT color=#0000ff>ÉGALE</FONT></STRONG> à la valeur initi ale ou
<STRONG><FONT color=#0000ff>INFÉRIEURE</FONT></STRONG> à la valeur initiale et
donc, dans ce cas,&nbsp;<U><STRONG>s'éloigne de
zéro</STRONG></U>.&nbsp;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><STRONG>Donc.....</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2><STRONG>-10.99</STRONG> doit donner
<STRONG>-11.00</STRONG> (valeur <FONT color=#ff0000>inférieure</FONT> à
-10.99)&nbsp;et non <STRONG>-10.50</STRONG> (valeur <FONT
color=#ff0000>supérieure</FONT> à -10.99)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><STRONG>Donc.....</STRONG></FONT></DIV>
<DIV><FONT face=Arial size=2>La fonction PLANCHER, même adaptée p our les valeurs
négatives&nbsp;sous la forme =PLANCHER(x;SIGNE(x)*0.5), ne convient p as, et
seule&nbsp;(parmi les deux formulations proposées) =ENT(x/0.5)*0.5 re specte la
logique initiale</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><STRONG>**</STRONG> Rayer les mentions
inutiles</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>NDLR : A défaut d'incompréhension de s propos qui
précédent, l'auteur devra changer de boulot</FONT></DIV>
<DIV><FONT face=Arial size=2>-:)</FONT></DIV>
<DIV><FONT face=Arial size=2>AV</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>

------=_NextPart_000_0144_01C65709.50967E40--



Avatar
AV
Cher yoyo anonyme(...),

la même fonction pour calculer l'arrondi du montant à déduire, et
bien avec votre méthode
je serais encore plus content puisque je vais gagner 50cts par article....


Je pense que vous devriez sérieusement vous pencher sur la question de
savoir -50 est supérieur à -10
Apparemment vous semblez le penser...
Consultez donc votre banquier, il ne manquera pas de vous éclairer sur le
système des découverts et sur les aggios qui s'y appliquent !

AV

1 2 3