Calcul avec virgule

Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 4 janv. 2008 à 12:29
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 14 juin 2015 à 06:55
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

Le newbie Messages postés 200 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 24 mars 2012 2
4 janv. 2008 à 13:03
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.
1
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 janv. 2008 à 13:07
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 janv. 2008 à 13:21
" ...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 #   
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 janv. 2008 à 13:47
salut,
oui, il faudra utiliser Val(toto) * 2

Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0

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

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 janv. 2008 à 13:51
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.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
4 janv. 2008 à 13:54
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.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 janv. 2008 à 14:03
"...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 #   
0
abderrahmane82 Messages postés 1 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 17 avril 2008
17 avril 2008 à 13:37
Mr US_30
thank you very very very match
0
athomforce Messages postés 45 Date d'inscription dimanche 7 mai 2006 Statut Membre Dernière intervention 14 juin 2015
14 juin 2015 à 05:19
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 juin 2015 à 06:55
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

0
Rejoignez-nous