cs_florentin
Messages postés10Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention18 août 2004
-
11 août 2004 à 17:52
cs_ITALIA
Messages postés2169Date d'inscriptionvendredi 20 avril 2001StatutMembreDernière intervention30 juin 2009
-
13 août 2004 à 08:50
Cependant lorsque je place des montants à vigule ( j'ai bien pris en compte l'histoire de la virgule et du point sous windows), ma valeur total des texbox ne prend pas en compte les décimales? le résultat est juste mais sans décimal?
Contexte : développement d'une macros pour document word
cs_florentin
Messages postés10Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention18 août 2004 12 août 2004 à 09:31
Merci de votre aide !!
Je trouve ce site super bien , il y une semaine je n'y connaissais rien et vous m'avez tous aider à évoluer . Je trouve ça sympa.
Bon, mais j'ai tout de même un soucis....
Lorsque je remplace Val par Cdlb , ça plante si j'ai une textbox à vide( dans mon exemple lorsque je me place sur la ligne en mode plantage, je vois ça: ReseauP3.value =""). Mais je constate ( toujours en mode plantage) que mon appli à bien mis les décimales.
Je retrouve le même phénomène lorsque je déclare des variables Dim. Et c'est pour cela que j'avais présenté ma syntaxe ainsi pour mon addition. Car effectivement de ce fait, mon appli accépté des texbox vide dans mon addition.
Si vous avez une solution.... j'avoue que sur ce point là je m'arrache les cheveux depuis 3 jours.
cs_ITALIA
Messages postés2169Date d'inscriptionvendredi 20 avril 2001StatutMembreDernière intervention30 juin 20099 12 août 2004 à 09:41
et ma solution ???
pour ton souci de null :
if Makertarif.Value="" then Makertarif.Value="0"
if ReseauP3.Value="" then ReseauP3.Value="0"
if Licence.Value="" then Licence.Value="0"
total.Value = Str$(Cdlb(Makertarif.Value) + Cdlb(ReseauP3.Value) + Cdlb(Licence.Value))
cs_florentin
Messages postés10Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention18 août 2004 12 août 2004 à 10:14
avec ta solution, j'avais mes même soucis de textbox =""
J'ai placé ton code dans mon appli, mais cette fois-ci j'ai un message d'erreur sur le Cdlb : erreur de compilation, Sub ou Fonction non définie.
J'y avais déjà pensé au :
if Makertarif.Value="" then Makertarif.Value="0"
Le soucis c'est que dès que je commence à saisir le premier chiffre dans la zone, ca plante. Et c'est pour ça que j'avais utiliser cette syntaxe, ca se passe super bien
Je suis casi sur que le prob vient d'autre part...
et tout ca pour une addition, je trouve ça dingue.
NB:
code pour la virgule :If Chr(KeyAscii) "." Then KeyAscii Asc(",")
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 12 août 2004 à 11:26
Heu, c pas Cdlb mais Cdbl.
D'autre part, c sur que si le textbox est vide ou qu'il contient un caractère non numérique, ça plantera aussi.
Donc, faut controler la saisie, soit dans le keypress des textbox soit après :
Voir la solution d'ITALIA plus un tit truc que j'utilise souvent :
if isnumeric("0.0") then 'si le point est un séparateur décimal
'on remplace les virgules par des points
Makertarif.Value= replace(Makertarif.Value, ",", ".")
ReseauP3.Value= replace(ReseauP3.Value, ",", ".")
Licence.Value= replace(Licence.Value, ",", ".")
else 'sinon
'on remplace les points par des virgules
Makertarif.Value= replace(Makertarif.Value, ".", ",")
ReseauP3.Value= replace(ReseauP3.Value, ".", ",")
Licence.Value= replace(Licence.Value, ".", ",")
end if
Comme ça , tu n'as plus a te préoccuper de la config régionale.
cs_florentin
Messages postés10Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention18 août 2004 12 août 2004 à 12:12
Tout d'abord, excusez pour la faute d'orto.
Ca marche avec la bonne ortho
Mais je pense que mon erreur vient aussi de l'emplacement dans les évènements.
Effectivement pour un avoir résultat dynamique ( en textbox3) je place le même code dans tous les textbox(1,2,4)...ainsi j'ai un résultat dynamique (nouvelle exemple) dans ma textbox3.
Cette solution fonctionne très bien si on utilise Val mais avec CDbl c'est pas la peine.
Tandis que si je mets mon code qu'une seule fois dans :
Private Sub TextBox3_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
cs_florentin
Messages postés10Date d'inscriptionmercredi 11 août 2004StatutMembreDernière intervention18 août 2004 12 août 2004 à 14:19
ok,
J'ai fais ça :
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)If TextBox3.Value "" Then TextBox3.Value "0"If TextBox2.Value "" Then TextBox2.Value "0"If TextBox4.Value "" Then TextBox4.Value "0"If TextBox1.Value "" Then TextBox1.Value "0"
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)If TextBox3.Value "" Then TextBox3.Value "0"If TextBox2.Value "" Then TextBox2.Value "0"If TextBox4.Value "" Then TextBox4.Value "0"If TextBox1.Value "" Then TextBox1.Value "0"
TextBox3.Value = Str$(CDbl(TextBox2.Value) + CDbl(TextBox1.Value) + CDbl(TextBox4.Value))
End Sub
Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)If TextBox3.Value "" Then TextBox3.Value "0"If TextBox2.Value "" Then TextBox2.Value "0"If TextBox4.Value "" Then TextBox4.Value "0"If TextBox1.Value "" Then TextBox1.Value "0"
TextBox3.Value = Str$(CDbl(TextBox2.Value) + CDbl(TextBox1.Value) + CDbl(TextBox4.Value))
End Sub
Vous pouvez essayer, c'est pas très dynamique même pas du tout....
mon prob était simple à la base mais ca prend des proportions ...
mettre des IF pour mettre une valeur a 0 avant calcul... je trouve que c'est pas très souple ....
C'est un simple addition qui fonctionne sans les décimales ...sniff sniff
ce qui me rire c'est qu'avec la multiplication je n'ai pas de prob, les décimales apparaissent correctement : Par exemple dans la même appli :
Private Sub remisebox_Change()
resul$ = TarifP3.Value
If remisebox <> "" Then
If resul$ <> "" Then
Pourcentage$ = remisebox.Value / 100
Remis$ = (1 - Pourcentage$)
Licence.Value = (resul$ * Remis$)
End If
End If
Le résultat dans Licence.value apparait bien avec les décimales ... rigolo non ?
Merci de votre aide...en espérant que le temps me donne la solution... Ca fait 4 jours que je suis sur une addition, peut être que dans une semaine j'aurai une illumination ..