OVH Cloud OVH Cloud

soustrair des nombres

9 réponses
Avatar
msillienne
Bonjour, je suis en vb6, mais j'ai un gros pblm qui tarde=20
a =EAtre r=E9solu, j'ai besoin d'aide svp
voila j'ai une spreadsheet danbs mon userform, je fait=20
rentrer des nombre a virgule dans mon spreadsheet (point=20
plutot que virgule), et je fait un calcul derriere sauf=20
qu'il r=E9cupere la valeur en texte et non pas en nombre du=20
coup ca plante ma soustraction ex je rentre 345.666 et=20
dans l'espion je le vois comme ceci "345.666" donc c'est=20
du texte. j'ai vue que dans .net on pouvait faire option=20
strict off, y'aurais il un autre moyen sur vb6. merci=20
c'est urgent

9 réponses

Avatar
Vincent Guichard
Bonjour,

Utilise une conversion explicite avec Val() ou CDbl().

Vincent Guichard
Avatar
YannX
"Vincent Guichard" a écrit dans le message de
news:41b5bc1b$0$8105$
Bonjour,

Utilise une conversion explicite avec Val() ou CDbl().

Vincent Guichard


PLutot CDbl(), j'ai eu quelques surprises avec Val()
sur les caractères spéciaux (point décimal...)
YannX
Avatar
Patrice Henrio
Et même pourquoi pas une conversion par transtypage

Dim X as Double, Y as string
Y="345.666"
X=Y


Si le séparateur est la virgule
Y=replace(Y,".",",")

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


"Vincent Guichard" a écrit dans le message de
news:41b5bc1b$0$8105$
Bonjour,

Utilise une conversion explicite avec Val() ou CDbl().

Vincent Guichard


PLutot CDbl(), j'ai eu quelques surprises avec Val()
sur les caractères spéciaux (point décimal...)
YannX




Avatar
ng
Salut,

Parce que c'est une conversion implicité, on préfère le faire explicitement.

--
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/

Patrice Henrio wrote:
Et même pourquoi pas une conversion par transtypage

Dim X as Double, Y as string
Y="345.666"
X=Y


Si le séparateur est la virgule
Y=replace(Y,".",",")

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


"Vincent Guichard" a écrit dans le
message de news:41b5bc1b$0$8105$
Bonjour,

Utilise une conversion explicite avec Val() ou CDbl().

Vincent Guichard


PLutot CDbl(), j'ai eu quelques surprises avec Val()
sur les caractères spéciaux (point décimal...)
YannX




Avatar
Vincent Guichard
YannX a écrit :
"Vincent Guichard" a écrit dans le message de
news:41b5bc1b$0$8105$

Bonjour,

Utilise une conversion explicite avec Val() ou CDbl().

Vincent Guichard



PLutot CDbl(), j'ai eu quelques surprises avec Val()
sur les caractères spéciaux (point décimal...)
YannX




Et bien, je dirais justement qu'avec Val(), tu n'a pas de surprises: Le
séparateur décimal est TOUJOURS le ".". Alors qu'avec CDbl(), le
séparateur décimal dépends des paramètres locaux.

Vincent Guichard
Avatar
YannX
"Vincent Guichard" a écrit dans le message de
news:41b6c454$0$3441$
YannX a écrit :
> "Vincent Guichard" a écrit dans le message


de
> news:41b5bc1b$0$8105$
>
>>Bonjour,
>>
>>Utilise une conversion explicite avec Val() ou CDbl().
>>
>>Vincent Guichard
>
> PLutot CDbl(), j'ai eu quelques surprises avec Val()
> sur les caractères spéciaux (point décimal...)
> YannX
>
>
Et bien, je dirais justement qu'avec Val(), tu n'a pas de surprises: Le
séparateur décimal est TOUJOURS le ".". Alors qu'avec CDbl(), le
séparateur décimal dépends des paramètres locaux.



D'accord, j'aurais dû préciser le contexte : en mode de saisies
numériques gérées par programme en texte...

@+
Avatar
msillienne
en fait j'ai du faire une fonction qui récupere les
paramettre régionnaux et en fonction du point ou de la
virgule je "replace" la virgule par un point et vice
versa.
ensuite je convertis mon chiffre en dbl() et le tour est
joué ca marche superb bien pour l'instant
-----Message d'origine-----
Salut,

Parce que c'est une conversion implicité, on préfère le


faire explicitement.

--
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/

Patrice Henrio wrote:
Et même pourquoi pas une conversion par transtypage

Dim X as Double, Y as string
Y="345.666"
X=Y


Si le séparateur est la virgule
Y=replace(Y,".",",")

"YannX" a écrit dans le message




de news:


"Vincent Guichard" a






écrit dans le
message de news:41b5bc1b$0$8105






$
Bonjour,

Utilise une conversion explicite avec Val() ou CDbl








().

Vincent Guichard


PLutot CDbl(), j'ai eu quelques surprises avec






Val()
sur les caractères spéciaux (point décimal...)
YannX






.



Avatar
msillienne
oups merci a tous et toutes
Avatar
ng
Salut,

Oui à condition d'utiliser Val() (qui prend comme séparateur le point,
qqsoit les paramètres du système).

--
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/

msillienne wrote:
en fait j'ai du faire une fonction qui récupere les
paramettre régionnaux et en fonction du point ou de la
virgule je "replace" la virgule par un point et vice
versa.
ensuite je convertis mon chiffre en dbl() et le tour est
joué ca marche superb bien pour l'instant
-----Message d'origine-----
Salut,

Parce que c'est une conversion implicité, on préfère le faire
explicitement.

--
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/

Patrice Henrio wrote:
Et même pourquoi pas une conversion par transtypage

Dim X as Double, Y as string
Y="345.666"
X=Y


Si le séparateur est la virgule
Y=replace(Y,".",",")

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


"Vincent Guichard" a écrit dans le
message de news:41b5bc1b$0$8105






$
Bonjour,

Utilise une conversion explicite avec Val() ou CDbl ().

Vincent Guichard


PLutot CDbl(), j'ai eu quelques surprises avec Val()
sur les caractères spéciaux (point décimal...)
YannX






.