VB6 convertir string pour double [Résolu]

Joke758 34 Messages postés mercredi 21 février 2007Date d'inscription 6 juin 2008 Dernière intervention - 23 mai 2007 à 00:24 - Dernière réponse : chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention
- 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!
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 23 mai 2007 à 01:20
3
Merci
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. 

Merci chaibat05 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de chaibat05
Joke758 34 Messages postés mercredi 21 février 2007Date d'inscription 6 juin 2008 Dernière intervention - 23 mai 2007 à 02:40
0
Merci
Ça ne marche pas :(
j'obtiens: Run-time error '13':

Type mismatch.
Commenter la réponse de Joke758
cs_MPi 3872 Messages postés mardi 19 mars 2002Date d'inscription 13 juillet 2018 Dernière intervention - 23 mai 2007 à 03:10
0
Merci
    Dim Var1 As String, Var2 As String
    Var1 = "4.4"
    Var2 = "5.7"
   
    MsgBox Val(Var1) + Val(Var2)

MPi
Commenter la réponse de cs_MPi
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 23 mai 2007 à 08:33
0
Merci
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


 
Commenter la réponse de cs_Exploreur
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 23 mai 2007 à 14:51
0
Merci
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 />. 
Commenter la réponse de chaibat05
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 24 mai 2007 à 09:39
0
Merci
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)
Commenter la réponse de Renfield
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 24 mai 2007 à 16:15
0
Merci
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 />
Commenter la réponse de chaibat05
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 25 mai 2007 à 06:58
0
Merci
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
Commenter la réponse de Renfield
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 25 mai 2007 à 10:50
0
Merci
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.

Commenter la réponse de chaibat05

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.