VB6 convertir string pour double

Résolu
Joke758 Messages postés 34 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 6 juin 2008 - 23 mai 2007 à 00:24
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 25 mai 2007 à 10:50
Bonjour, je doit convertir une variable string en un double.
Exemple:

a = "4.3"
b = "5.7" 'Ne me dite pas d'enlever les "" je ne peux pas car je doit les prendre dans un fichier text alors cest un string
Msgbox a + b

CDbl() ne marche pas!

Aider moi s'il vous plait!!!
Merci!
A voir également:

9 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 01:20
Salut,
MsgBox CCur(a)+CCur(b)
Si le séparateur décimal dans las paramètres rgionnaux
est bien le pointSinon tu dois passer par Replace()

<hr />® l l i n g , l' agité du bocal : 
   Etre une heure, une heure seulement..Rien qu' une heure,
   Vert, vert, vert et beau à la foooooooooooooooooooooooois. 
3
Joke758 Messages postés 34 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 6 juin 2008
23 mai 2007 à 02:40
Ça ne marche pas :(
j'obtiens: Run-time error '13':

Type mismatch.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
23 mai 2007 à 03:10
    Dim Var1 As String, Var2 As String
    Var1 = "4.4"
    Var2 = "5.7"
   
    MsgBox Val(Var1) + Val(Var2)

MPi
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 mai 2007 à 08:33
Bonjour à tous,

Si tu le prends tes données dans un fichier texte, et qu'elles sont représentées comme tu nous le montre, il y a de forte chance pour que ton point de pose un problème, alors dans le cas où(comme le fait remarqué Chaibat05, le bonjour à Rolling), regarde cela :

Private Sub Command1_Click()


Dim MyVarTxt1 As String
Dim MyVarTxt2 As String


MyVarTxt1 = "4.3"
MyVarTxt2 = "5.7"


MyVarTxt1 = Replace(MyVarTxt1, ".", ",")
MyVarTxt2 = Replace(MyVarTxt2, ".", ",")


MsgBox CDbl(MyVarTxt1) + CDbl(MyVarTxt2)


End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
23 mai 2007 à 14:51
Salut tout le monde,
@Exploreur, Rolling te salues aussi.
Il est aux anges en ce moment.
Son voeu a été exhaussé et a été, enfin,  mis en vert.

<hr />. 
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 mai 2007 à 09:39
CDbl utilises les paramètres régionnaux.
Val non, c'est un vrai 4x4

ne fais surtout pas :
MyVarTxt1 = Replace(MyVarTxt1, ".", ",")

car ton programme ne fonctionnera pas sur un poste où les parametres régionnaux spécifieront un '.' comme séparateur décimal.

utilises Val, qui s'attend à avoir un point, comme séparateur décimal (format international).
C'est une TRES bonne chose que ton fichier contienne "1.5" et non "1,5" ton appli est plus facilement distribuable.
Val("1,5") ne fonctionera pas, par contre... il renverra 1, fortement perturbé qu'il est par la virgule...

NB. pareil pour CCur, tout dépend des parametres régionnaux.
NB2. même soucis, en général, pour les dates. enregistrez toujours vos dates sous la forme yyyy-mm-dd qui est reconnue par CDate, quels que soient vos parametres régionnaux (pas de confusion entre le 9 Janvier et le premier septembre)
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 mai 2007 à 16:15
Salut,
si Val("1,5") ne fonctionera pas, ou est le 4x4
si la source de données ne dépend pas de soi ?
il y' aura donc toujours quelque chose à prendre
en considération et c' est donc pareil  pour tout...


Mais bonne analyse toutes foise surtout en ce concerne les dates.

PS :  le vert c' était juste pour une heure :-)


<hr />
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mai 2007 à 06:58
c'estcomme tout, effectivement...

Val est la seule fonction du lot qui, pour une valeur donnée va renvoyer toujours la même chose, quelques soient les paramètres régionnaux.

CDbl("1,5") fonctionnera chez vous, mais ne fonctionnera pas aux US, par exemple.
Val("1.5"), lui, marchera toujours. D'ou le vif l'interet qu'il y a a enregistrer les infos dans leur forme internationale. (je parle des fichier plats/xml, pas de soucis avec des bases de données correctement typées)

J'ai bossé deux ans sur un logiciel que nous vendions a travers le monde (europe de l'est, etats unis, chine, etc) et je peux te garantir que si on homogénéise pas, on à des erreurs 13, ou des valeurs erronnées lors de l'import export.

c'est un peu la même chose avec Excel. si on exporte des formules, dans le dessein de les importer plus tard, il faut enregistrer les .Formula et non les FormulaLocal :
SUM(A1:A5) et non SOMME(A1:A5)

la Formula sera toujours comprise, quelle que soit la langue et les parametres regionnaux du poste (important pour l'item 'separateur de liste' qui indique le separateur des parametres sous excel)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
25 mai 2007 à 10:50
Bonjour Renfield ,
Convaincant . Et pour ma part je suis canvaincu.
Jusqu' à présent j' étais pas très partisan de val() surtout que
je travaille exclusivement sur BD.
Mais Val(), Je connaissais quand je faisais du Pascal et du Clipper.
Toujours est il que vu sous cet angle là, on ne peut qu' adhèrer.
Bonne journée.

0
Rejoignez-nous