Calcul avec virgule

Signaler
Messages postés
855
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour a tous et bonne année 2008

J'ai besoin d'aide svp. J'ai besoin de faire un calcul dans un textbox mais qui prendras en compte les virgules, comment je peux le faire ?

J'ai essayé le bouton JLFNumber mais cette commande ne passe pas :
Private Sub Timer1_Timer()
T_Total = Val(T_MontantDevise * T_Taux)
End Sub

Pouvez vous m'aider svp !

10 réponses

Messages postés
200
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
24 mars 2012
2
Salut, il faut que tes variables soient de type double.
Ensuite tu vas avoir une erreur sur la conversion de type (cast de la chaîne en type double ou un truc comme ça. Donc il faut convertir. Voici comment passer du double au string :

txtResult.Text = (Convert.ToDouble(ValeurTextbox.Text) * T_Taux).ToString

Cet exemple te permet d'afficher dans un textbox le résultat du calcul entre une valeur saisie dans un autre textbox et un taux au format double.

Bonne continuation.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
VB travaille avec le point comme séparateur décimal


soit tu transformes, soit tu utilises cdbl



Private Sub Command1_Click()
 toto = "11,2"
 MsgBox CDbl(toto) * 2
End Sub
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
" ...VB travaille avec le point comme séparateur décimal..."

Cela dépend des fonction utilisées, certaines ne comprennent que le point, d'autres ne comprennent que le séparateur définie dans les paramètres régionnaux de windows.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
salut,
oui, il faudra utiliser Val(toto) * 2

Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonjour,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Personnellement, j’ai adopté une autre solution qui me semble meilleur.



 




J’utilise le remplacement du signe décimal par le point, puis je converti en Double. (on remarquera l’inversion du point et de la virgule…)



 




Pour VBA ou VB6, cela donne :




 






MsgBox Val(Replace(Text1.Text, ",", "."))
* 2





 




Pour VB2005 :




 






MsgBox(CDbl(Replace(TextBox1.Text, ".", ",")) * 2)



 




Pourquoi meilleur ? C’est tout simplement parce que l’utilisateur peut alors rentrer les nombres comme il veut, soit avec le point, soit avec la virgule, contrairement aux solutions précédentes qui impose à l’utilisateur d’utiliser que la virgule.

Pour Casy, si on calcul avec un type défini par Double (Dim machin As Double), tous les calculs internes à VB6 (VBA) sont avec le point comme séparateur... Sinon, je suis intéressé de connaître un contre exemple...
Espérons que pour VB2005, cela soit la même chose...

Amicalement,
Us.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
ouff... il merde le forum... désolé pour la mise en forme... Visiblment, dès qu'on est plusieurs à répondre en même temps, tout se bloque...

Us.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
"...si on calcul avec un type défini par Double (Dim machin As Double),
tous les calculs internes à VB6 (VBA) sont avec le point comme
séparateur..."

Le point (comme la virgule d'ailleurs) n'a absolument aucune signification sur un type double. Tout les calculs internes sont fait en double.
On ne peut parler de séparateur décimal que sur la représentation textuelle du nombre.
Sur le nombre lui-même, il n'existe pas de notion de séparateur décimal.
Heureusement, car sinon il existerait des problèmes de traitement des nombres lorsqu'on change de pays.

Pour rappel, un nombre Double, quelque soit sa valeur est toujours formé par une mantisse et un exposant : mantisse E exp avec la mantisse toujours de la forme 0,xxxxxxxxx

PS : Il est très habituel en programmation, de confondre une valeur et sa représentation textuelle car c'est souvent effectivement la seule visualisation que l'on en a. Mais il faut garder à l'esprit que ce que l'on voit de la valeur, n'est qu'une représentation, et comme toute représentation, sujet à interprétation.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
1
Date d'inscription
samedi 29 décembre 2007
Statut
Membre
Dernière intervention
17 avril 2008

Mr US_30
thank you very very very match
Messages postés
45
Date d'inscription
dimanche 7 mai 2006
Statut
Membre
Dernière intervention
14 juin 2015

Salut,
Si vous voulez avoir le résultat avec la virgule, il vaut mieux déclarer ces trois variables en double comme ça :

dim T_Total as double
dim T_MontantDevise as double
dim T_Taux as double

Et pour que vous aurez aussi deux chiffres après la virgule, il faut mètre la formule suivant:

T_Total = format(T_MontantDevise * T_Taux ,"0.00").

Bonne continuation.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour, athomforce,
Ta méthode est à éviter et peut être la cause de sérieuses erreurs.
Regarde ===>>
Dim toto As Double
toto = 1.2354
MsgBox Format(toto, "0.00") * 2 & " " & toto * 2