Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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.

10 réponses

1 2 3
Avatar
AV
| En fait, je cherche la fonction VBA qui me permettrait de transformer
| automatiquement 68,56 en 68.50; 68.58 en 68,50.

Exemple :
Sub zzz()
x = [A1]
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
End Sub

AV
Avatar
lSteph
Bonjour,
deux façons entre autres :

MsgBox Format(CDbl(Int(2.56 * 10)) / 10, "0.00")
MsgBox Format(WorksheetFunction.Floor(2.58, 0.1), "0.00")

lSteph
"JCL" a écrit dans le message de news:

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.


Avatar
JCL
Salut,
j'ai essayé mais sans succès. Toutefois j'ai fait une erreur dans mon post.
Au lieu de lire "68,56 en 68.50; 68.58 en 68,50.", il fallait lire 68,56 en
68,50
Ce que je recherche en VBA c'est comme l'exemple http://cjoint.com/?ebmfQTC6Mf

A+

"AV" wrote:

| En fait, je cherche la fonction VBA qui me permettrait de transformer
| automatiquement 68,56 en 68.50; 68.58 en 68,50.

Exemple :
Sub zzz()
x = [A1]
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
End Sub

AV





Avatar
lSteph
Re ou bonjour,
tu ne vois donc pas ma proposition, je reformule autrement

x=[a1]

CDbl(Int(x* 10)) / 10

ou

WorksheetFunction.Floor(x, 0.1)

lSteph
"JCL" a écrit dans le message de news:

Salut,
j'ai essayé mais sans succès. Toutefois j'ai fait une erreur dans mon
post.
Au lieu de lire "68,56 en 68.50; 68.58 en 68,50.", il fallait lire 68,56
en
68,50
Ce que je recherche en VBA c'est comme l'exemple
http://cjoint.com/?ebmfQTC6Mf

A+

"AV" wrote:

| En fait, je cherche la fonction VBA qui me permettrait de transformer
| automatiquement 68,56 en 68.50; 68.58 en 68,50.

Exemple :
Sub zzz()
x = [A1]
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
End Sub

AV







Avatar
Ardus Petus
RoundDown = Int(v * 10) / 10

Cordialement,
--
AP

"JCL" a écrit dans le message de
news:
Salut,
j'ai essayé mais sans succès. Toutefois j'ai fait une erreur dans mon
post.

Au lieu de lire "68,56 en 68.50; 68.58 en 68,50.", il fallait lire 68,56
en

68,50
Ce que je recherche en VBA c'est comme l'exemple
http://cjoint.com/?ebmfQTC6Mf


A+

"AV" wrote:

| En fait, je cherche la fonction VBA qui me permettrait de transformer
| automatiquement 68,56 en 68.50; 68.58 en 68,50.

Exemple :
Sub zzz()
x = [A1]
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
End Sub

AV







Avatar
JCL
Salut et merci pour ta réponse.
Toutefois, étant novice en programmation VBA, ton exemple ne me "parle" pas.
Peux tu si tu as un peu de temps développer toute la Sub end Sub?
Y a t-il un site ou je peux retrouver toutes les propriétés, méthodes,
fonctions etc... sur le net car je n'ai pas installé la fonction d'aide VBA
d'Excel.

"lSteph" wrote:

Bonjour,
deux façons entre autres :

MsgBox Format(CDbl(Int(2.56 * 10)) / 10, "0.00")
MsgBox Format(WorksheetFunction.Floor(2.58, 0.1), "0.00")

lSteph
"JCL" a écrit dans le message de news:

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.







Avatar
Jacky
Bonjour,
Equivalant de =ARRONDI.INF(D6;1)
En vba serait:
[A1] = Application.RoundDown([D6], 1)

Salutations
JJ

"JCL" a écrit dans le message de
news:
Salut,
j'ai essayé mais sans succès. Toutefois j'ai fait une erreur dans mon
post.

Au lieu de lire "68,56 en 68.50; 68.58 en 68,50.", il fallait lire 68,56
en

68,50
Ce que je recherche en VBA c'est comme l'exemple
http://cjoint.com/?ebmfQTC6Mf


A+

"AV" wrote:

| En fait, je cherche la fonction VBA qui me permettrait de transformer
| automatiquement 68,56 en 68.50; 68.58 en 68,50.

Exemple :
Sub zzz()
x = [A1]
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
End Sub

AV







Avatar
lSteph
..D'accord (avoir l'aide c'est qd même mieux)
Préalable dans le cas que tu décris j'ai plutôt utilisé plancher que
arrondi.inf mais c'est au choix
admettons que tu as mis une valeur en [a1]
on va afficher des messages utilisant chacun une méthode différente

''''****
Sub tst()
x = [a1]
MsgBox " Première possibilité: " & vbCrLf _
& Format(CDbl(Int(x * 10)) / 10, "0.00")
MsgBox " Seconde possibilité: " & vbCrLf _
& Format(WorksheetFunction.Floor(x, 0.1), "0.00")
MsgBox " troisième possibilité: " & vbCrLf _
& CDbl(Int(x * 10)) / 10
MsgBox " quatrième possibilité: " & vbCrLf _
& WorksheetFunction.Floor(x, 0.1)
'renvoi dans cellules
[b1].FormulaLocal = Format(CDbl(Int(x * 10)) / 10, "0.00")
[c1].FormulaLocal = Format(WorksheetFunction.Floor(x, 0.1), "0.00")
[d1] = CDbl(Int(x * 10)) / 10
[e1] = WorksheetFunction.Floor(x, 0.1)
End Sub
''''******

explication:

en vba ceci fait la conversion en arrondi plancher:
CDbl(Int(x * 10)) / 10
ceci utilise la fonction de feuille de calcul excel:
WorksheetFunction.Floor(x, 0.1)
nota:
Dans la feuille l'apparition de deux décimales dépendra du format nombre
utilisé pour les cellules.
si dans Excel en Fr la norme est la virgule en Vba cela se traduit par un
point
Format sert juste à l'affichage des deux décimales dans le msgbox
donc dans ce cas j'utilise formulalocal pour le renvoi dans la cellule ainsi
j'ai un peu compliqué mais cela permet de voir dans l'exemple comment le
format mis avec point
dans vba est restitué dans la cellule .
Si tu enlève le .formulalocal tu auras le résultat en "nombre texte".
Situ n'as pas utilisé de format le retour dans la cellule est interprèté en
standard.

Tout dépend de ce qu'on veut faire, si c'est pour une utilisation dans le
programme dans un msgbox, dans un formulaire,
voir dans la feuille et selon ce dernier cas on pourrait créer une Function
en vba mais dans l'exemple c'est inutile
puisqu'elle existe déjà.

'lSteph







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

Salut et merci pour ta réponse.
Toutefois, étant novice en programmation VBA, ton exemple ne me "parle"
pas.
Peux tu si tu as un peu de temps développer toute la Sub end Sub?
Y a t-il un site ou je peux retrouver toutes les propriétés, méthodes,
fonctions etc... sur le net car je n'ai pas installé la fonction d'aide
VBA
d'Excel.

"lSteph" wrote:

Bonjour,
deux façons entre autres :

MsgBox Format(CDbl(Int(2.56 * 10)) / 10, "0.00")
MsgBox Format(WorksheetFunction.Floor(2.58, 0.1), "0.00")

lSteph
"JCL" a écrit dans le message de news:

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.









Avatar
AV
| j'ai essayé mais sans succès.

C'est que tu es victime d'un micro-climat ....!

PS : A la question "Comment arrondir à 0.50 inférieur", à cette heure, seule, la
solution que je t'ai proposé est compatible avec les valeurs négatives.

On ne prend jamais assez de précautions...
AV
Avatar
lSteph
Bonjour Alain,

C'est que tu es victime d'un micro-climat ....!
Si tu permets il me semble que ta solution est la seule qui a tendance

renvoyer une erreur 13
car si l'on est en Fr, c'est habituellement la virgule qui s'emploie pour
les décimales!
J'ai proposé CDbl(Int(x * 10)) / 10
qui fonctionne fort bien dans nombre de cas en revanche
d'accord pour floor il faut indiquer le signe
et comme c'est une exception qui confirme la règle car dans 99%
des cas tu as (par définition) raison et pour moi tu es l'un des meilleurs
je confirme quand même encore une fois tu as raison:
On ne prend jamais assez de précautions...


Cordialement.

lSteph


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

| j'ai essayé mais sans succès.

C'est que tu es victime d'un micro-climat ....!

PS : A la question "Comment arrondir à 0.50 inférieur", à cette heure,
seule, la
solution que je t'ai proposé est compatible avec les valeurs négatives.

On ne prend jamais assez de précautions...
AV




1 2 3