OVH Cloud OVH Cloud

Probleme addition

2 réponses
Avatar
SALVA
Bonsoir,

j'ai un probleme , je ne comprends pas !!!!

Dim x As Double

x = Val(TxtEnchere.Text) ' TxtEnchere.Text= 10.5
x = x + 0.5

TxtEnchere.Text = x
TxtEnchere.Refresh

a la sortie la 1° fois j'ai 11, mais la 2° fois ca ne bouge pas j'ai
toujours 11.
il y a quelque chose d'anormal?
Si oui, quoi?
a l'aide SVP.
Merci

Salva

2 réponses

Avatar
Jean-Marc
"SALVA" a écrit dans le message de
news:
Bonsoir,

j'ai un probleme , je ne comprends pas !!!!

Dim x As Double

x = Val(TxtEnchere.Text) ' TxtEnchere.Text= 10.5
x = x + 0.5

TxtEnchere.Text = x
TxtEnchere.Refresh



a la sortie la 1° fois j'ai 11, mais la 2° fois ca ne bouge pas j'ai
toujours 11.
il y a quelque chose d'anormal?



Si oui, quoi?
a l'aide SVP.



Hello,
la réponse est simple, mais le problème pas si évident. Les réels en VB
s'écrivent avec une virgule comme séparateur décimal quand ils sont
écrits sous forme de chaine de caractères.

Donc au départ, ton textBox TextEnchere doit valoir "10,5" et non pas
"10.5" Ensuite, Val est un peu piégeur dans ce cas. Il vaut mieux
utiliser Cdbl. Enfin, quand tu affectes x à ton TextEnchere, il vaut
mieux utiliser CStr, c'est plus clair. Donc ça donne:

Dim x As Double

x = CDbl(TextEnchere.Text)
x = x + 0.5
TextEnchere.Text = CStr(x)

Si tu veux absolument que le "." apparaisse dans le textbox, ou mieux,
si tu veux laisser le choix du séparateur, alors il faut faire une
petite coversion au départ et à la fin, avec la fonction Replace:

Dim x As Double
Dim s As Double

s = Replace(TextEnchere.Text, ".", ",")
x = CDbl(s)
x = x + 0.5
TextEnchere.Text = Replace(CStr(x), ",", ".")

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
ng
Salut,

En fait pour le parsing des chaines de caractères avec les fonctions
CDouble(), CInt()... le séparateur dépend du système (',', '.', ...) alors
qu'avec Val(), le séparateur est *toujours* un '.'.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Jean-Marc wrote:
"SALVA" a écrit dans le message de
news:
Bonsoir,

j'ai un probleme , je ne comprends pas !!!!

Dim x As Double

x = Val(TxtEnchere.Text) ' TxtEnchere.Text= 10.5
x = x + 0.5

TxtEnchere.Text = x
TxtEnchere.Refresh



a la sortie la 1° fois j'ai 11, mais la 2° fois ca ne bouge pas j'ai
toujours 11.
il y a quelque chose d'anormal?



Si oui, quoi?
a l'aide SVP.



Hello,
la réponse est simple, mais le problème pas si évident. Les réels en
VB s'écrivent avec une virgule comme séparateur décimal quand
ils sont écrits sous forme de chaine de caractères.

Donc au départ, ton textBox TextEnchere doit valoir "10,5" et non
pas "10.5" Ensuite, Val est un peu piégeur dans ce cas. Il
vaut mieux utiliser Cdbl. Enfin, quand tu affectes x à ton
TextEnchere, il vaut mieux utiliser CStr, c'est plus clair. Donc ça
donne:

Dim x As Double

x = CDbl(TextEnchere.Text)
x = x + 0.5
TextEnchere.Text = CStr(x)

Si tu veux absolument que le "." apparaisse dans le textbox, ou
mieux, si tu veux laisser le choix du séparateur, alors il faut
faire une petite coversion au départ et à la fin, avec la
fonction Replace:

Dim x As Double
Dim s As Double

s = Replace(TextEnchere.Text, ".", ",")
x = CDbl(s)
x = x + 0.5
TextEnchere.Text = Replace(CStr(x), ",", ".")