En vba, le séparateur est, de toute façon, le point
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus bas)
Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
En vba, le séparateur est, de toute façon, le point
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus bas)
Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
En vba, le séparateur est, de toute façon, le point
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus bas)
Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
re, bonjour,En vba, le séparateur est, de toute façon, le point
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus
bas)Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
"je ne dirais pas cela juste pour t'empfffbêter"
en A1 je mets 62,56
j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de type
Cordialement.
lSteph
"AV" a écrit dans le message de news:| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
re, bonjour,
En vba, le séparateur est, de toute façon, le point
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus
bas)
Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
"je ne dirais pas cela juste pour t'empfffbêter"
en A1 je mets 62,56
j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de type
Cordialement.
lSteph
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
OndzqPaVGHA.1348@TK2MSFTNGP15.phx.gbl...
| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
re, bonjour,En vba, le séparateur est, de toute façon, le point
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus
bas)Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
"je ne dirais pas cela juste pour t'empfffbêter"
en A1 je mets 62,56
j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de type
Cordialement.
lSteph
"AV" a écrit dans le message de news:| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
Re...
Et ben........ c'est comme moi,,,,,,
sauf si x=val([a1])
JJ
"lSteph" a écrit dans le message de news:re, bonjour,En vba, le séparateur est, de toute façon, le poin
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus
bas)Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
"je ne dirais pas cela juste pour t'empfffbêter"
en A1 je mets 62,56
j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de type
Cordialement.
lSteph
"AV" a écrit dans le message de news:| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
Re...
Et ben........ c'est comme moi,,,,,,
sauf si x=val([a1])
JJ
"lSteph" <lecocosteph@frite.fr> a écrit dans le message de news:
uP02NlaVGHA.4300@TK2MSFTNGP14.phx.gbl...
re, bonjour,
En vba, le séparateur est, de toute façon, le poin
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus
bas)
Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
"je ne dirais pas cela juste pour t'empfffbêter"
en A1 je mets 62,56
j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de type
Cordialement.
lSteph
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
OndzqPaVGHA.1348@TK2MSFTNGP15.phx.gbl...
| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
Re...
Et ben........ c'est comme moi,,,,,,
sauf si x=val([a1])
JJ
"lSteph" a écrit dans le message de news:re, bonjour,En vba, le séparateur est, de toute façon, le poin
(je n'ai pas dit le contraire, c'est même ce que j'ai écrit un peu plus
bas)Si tu veux bien me dire dans quel cas de figure ça plante...> Pffffff...
"je ne dirais pas cela juste pour t'empfffbêter"
en A1 je mets 62,56
j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de type
Cordialement.
lSteph
"AV" a écrit dans le message de news:| Si tu permets il me semble que ta solution est la seule qui a tendance
| renvoyer une erreur 13
Si tu veux bien me dire dans quel cas de figure ça plante
| car si l'on est en Fr, c'est habituellement la virgule qui s'emploie
pour
| les décimales!
Quel que soit le séparateur sytème, je ne constate pas un renvoi
d'erreur....
En vba, le séparateur est, de toute façon, le point
| J'ai proposé CDbl(Int(x * 10)) / 10
Pour éclairer mon précédent propos
Si on a en A1 la valeur -10,65 ou -10.65
La réponse attendue pour la valeur arrondie à 0,5 inférieur est -11
Ta soluce renvoie -10.60
| ....tu as (par définition) raison....
Pffffff....
AV
...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.
...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" <JCL@discussions.microsoft.com> a écrit dans le message de news:
C349F576-F9DA-4143-AE65-6C414F663644@microsoft.com...
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" <JCL@discussions.microsoft.com> a écrit dans le message de news:
7EC8A194-2D2C-43B6-B741-3C2E302EA9EC@microsoft.com...
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.
...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.
...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.
...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" <JCL@discussions.microsoft.com> a écrit dans le message de news:
C349F576-F9DA-4143-AE65-6C414F663644@microsoft.com...
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" <JCL@discussions.microsoft.com> a écrit dans le message de news:
7EC8A194-2D2C-43B6-B741-3C2E302EA9EC@microsoft.com...
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.
...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.
| j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de
Ok vu le cas de figure !
x = Application.Substitute([A1], ",", ".")
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
ou pourquoi pas :
MsgBox 1*(Int(x / 0.5) * 0.5)
AV
| j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de
Ok vu le cas de figure !
x = Application.Substitute([A1], ",", ".")
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
ou pourquoi pas :
MsgBox 1*(Int(x / 0.5) * 0.5)
AV
| j'execute ta sub zzz et j'obtiens erreur d'execution 13 incompatibilité
de
Ok vu le cas de figure !
x = Application.Substitute([A1], ",", ".")
MsgBox Format(Evaluate("int(" & x & "/0.5)*0.5"), "0.00")
ou pourquoi pas :
MsgBox 1*(Int(x / 0.5) * 0.5)
AV