trollfever
Messages postés8Date d'inscriptionjeudi 7 décembre 2006StatutMembreDernière intervention15 février 2007
-
13 févr. 2007 à 15:21
trollfever
Messages postés8Date d'inscriptionjeudi 7 décembre 2006StatutMembreDernière intervention15 février 2007
-
15 févr. 2007 à 22:55
Salut à tous, je me suis mis a chipoter une peu sur le VBA depuis peu, et la suis sur un os... J'ai un petit problème : je n'arrive pas pas à récupurer un nombre avec virgule à l'issue de ma multiplication. L'arrondi se fait automatiquement à l'unité suppérieur.
Quantite_final.Value = Quantité.Value
Prix_final.Value = Val(Quantité.Value) * Val(Prix.Value)
End Sub
La valeur qui s'affiche donc dans Prixl_final.value est toujours un entier alors que je le voudrais avec 2 chiffres après la virgule. J'ai essayé plein de choses différentes, ce y compris le passage par des variables définies par Dim Prix as Double, mais j'ai toujours un entier qui vient me ...
Je vous remercie d'avance de votre aidre, surtout que je suis pressé étant ici dans le cadre d'un stage se finissant dans 3 jours.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 13 févr. 2007 à 18:01
Normal, Val te donne la valeur entière du nombre (il me semble !), remplace val par CDbl plutôt :
Prix_final.Value = CDbl(Quantité.Value) * CDbl(Prix.Value)
DD05
Messages postés53Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention11 juin 20101 13 févr. 2007 à 19:19
Salut,
Val renvois un nombre réel si la valeur entre parenthèses contient un
point. Si le chiffre entre parenthèses est avec une virgule, il renvois
un entier.
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 13 févr. 2007 à 19:27
Val() renvoit toujours un Double:
MsgBox TypeName(Val(1))
dans ce Double il peut y avoir un entier bien sûr !
autant rien mettre (conversion implicite --> Double)
Prix_final.Value = Quantité.Value * Prix.Value
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 13 févr. 2007 à 23:22
ouais...
trollfever, lui, n'est plus là ...
J'ai posé, dès ma 1ère réponse, quelques questions.... elle sont loin d'être "gratuites"...
Leurs réponses permettraient sans aucun doute de cesser de faire des suppositions diverses.
trollfever
Messages postés8Date d'inscriptionjeudi 7 décembre 2006StatutMembreDernière intervention15 février 2007 14 févr. 2007 à 11:22
Salut et merci du temps que vous m'avez consacré. désolé de ne pas avoir répondu plus tot mais je n'ai pas de connexion à la maison...
Voila, j'ai partiellement résolu mon problème: les multiplication des 2 TXTBOX avec virgules fonctionne mais la somme (case Total_final) semble ne pas prendre en compte la virgule (dois je déclarer la var total autrement ou déclarer Total_final.value autrement?)
Je vous join une partie du code et une représentation de mon problème. Merci de votre aide!
CODE
Private Sub Quantité_Change()
Prix_final.Visible = True
Quantite_final.Visible = True
Produit_Final.Visible = True
Label22.Visible = True
Label23.Visible = True
Dim total As Double
Total_final.Visible = True
Quantite_final.Value = Quantité.Value
Prix_final.Value = Val(Quantité.Value) * Val(Prix.Value)If Prix_final2.Visible False Then total Val(Prix_final.Value)If Prix_final2.Visible True And Prix_final3.Visible False Then total = Val(Prix_final.Value) + Val(Prix_final2.Value)If Prix_final2.Visible True And Prix_final3.Visible True Then total = Val(Prix_final.Value) + Val(Prix_final2.Value) + Val(Prix_final3.Value)
Total_final.Value = total
End Sub
trollfever
Messages postés8Date d'inscriptionjeudi 7 décembre 2006StatutMembreDernière intervention15 février 2007 14 févr. 2007 à 23:56
Mérci, cela me note bien un valeur avec deux Zéros apres la virgule mais toujours deux 00, c'est a dire qu'il ne me prend pas en compte les valeurs apres la virgule du reste
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 15 févr. 2007 à 01:13
moi je vois des points dans Prix, Quantité, ... et ensuite des virgules
faut rester compatible, or Format() ne renvoit pas forcément le point mais le signe décimal qui dépend de la configuration, de même que la conversion implicite.
tu te compliques bien la vie, il faut passer par Round() pour ne garder que 2 chiffres après la virgule,
ensuite passer par Str$() qui renverra bien le point mais aussi un espace devant qu'il faudra supprimer par Ltrim():
Prix_final.Value = LTrim(Str$(Round(Val(Quantité.Value) * Val(Prix.Value), 2)))
alors qu'en gardant la configuration telle qu'elle est, c'est beaucoup plus simple:
Prix_final.Value = Format$(CDbl(Quantité.Value) * CBbl(Prix.Value), "standard")
vicosta
Messages postés178Date d'inscriptionlundi 5 juin 2006StatutMembreDernière intervention30 novembre 2011 15 févr. 2007 à 12:20
t'as raison, la fonction Str renvoie le point , et la fonction Cstr renvoie la virgule (ceci si les paramètres linguistiques l'exigent comme séparateur décimal, ce que est le cas en France)
mais je reviens à ma grand doûte:
Prix_final.Value ne peut pas être un textbox !!! Est-ce que quelqun peut assigner la propriété Value sur un tel contrôle ?