Décimales dans 1 textbox

bonjour tout le monde,

j'ai un fichier de gestion de stock.

lorsque, par userform, j'ajoute ou soustrait des valeurs entières, cela fonctionne bien.

Par contre lorsqu'il s'agit de décimales cela ne fonctionne plus, par exemple stock 6 - sortie 2.5 me donne comme résultat

8.5 au lieu de 3.5.

Sur l'èvenement change de ma textbox de sortie j'ai le code suivant :

Sub calcul_sortie()

Me.TBTotal_Stock = Val(Format(Me.TBTotal_Stock.Value, "#,00")) - Val(Format(Me.TBSortie_Stock, "#,00"))

End Sub

J'ai vu en parcourant ce forum, la possibilité de mettre Cdec à la place de format ?

cela solutionnerait-il mon problème ?

Merci

Bonsoir, et bienvenue !

J'ai vu en parcourant ce forum, la possibilité de mettre Cdec à la place de format ?

cela solutionnerait-il mon problème ?

Avez vous essayé ?

@ bientôt

LouReeD

onjour et merci,

oui j'ai essayé de rentrer :

Me.TBTotal_Stock = CDec(Me.TBTotal_Stock.Value) - CDec(Me.TBSortie_Stock.Value)

mais ca ne marche pas, je pense que la formulation n'est pas la bonne !

bonjour

déjà mettre un point a la place de la virgule ex:"#.00"

A+

Maurice

bonjour,

J'ai remplacé la virgule par un point mais c'est pareil !

cdlt

bonjour

tu enlève le format

Me.TBTotal_Stock = Val(Me.TBTotal_Stock.Value) - Val(Me.TBSortie_Stock)

et dans

TBTotal_Stock_change

TBTotal_Stock.value = format(TBTotal_Stock.value,"#.00")

A+

Maurice

Merci Maurice,

J'ai remplacé ma formule par la tienne.

Elle fonctionne parfaitement avec la soustraction de valeurs entières, mais dès que j'entre une valeur décimale, ça ne marche plus.

@+

bonjour

donne au moins un modèle de ton fichier pour voir

et aussi de savoir si tu tape un point ou une virgule dans la textbox

et aussi de savoir si tu a mis un KeyPress

A+

Maurice

Je te joins un fichier reprenant mes valeurs, mais surprise là ça marche !

je vais essayer de trouver ça ne fonctionne pas dans mon fichier.

@+

13essai.xlsm (20.62 Ko)

euréka, j'ai trouvé.

en fait dans mon fichier initial j'utilisais deux fois la valeur de me.TbTotalStock.Je pense que ça plantait à caus de ça.

J'ai ajouté une 2ème textbox reprenant la valeur de me.TbTotalStock que j'ai appelée TB_stock_initial et donc ma formule devient

Me.TbTotalStock = me.TB_stcok_initial - me.tbSortie

et là ça fonctionne nickel

merci quand même du dérangement.

@+

bonjour

j'ais bloquer le point pour éviter un plantage

et pour gérer la virgule if faux mettre Cdbl a la place de Val

Private Sub UserForm_Initialize()
TB_stock.Value = Range("A1").Value
End Sub

Private Sub TBSortie_Stock_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("1234567890,", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub

Private Sub TBSortie_Stock_Change()
TBTotal_Stock = CDbl(TB_stock.Value) - CDbl(TBSortie_Stock)
'et dans
'TBTotal_Stock_Change
TBTotal_Stock.Value = Format(TBTotal_Stock.Value, "#.00")
End Sub

A+

Maurice

ok bien pris pour moi

merci à tous

bonjour

et voila la fin

Private Sub UserForm_Initialize()
TB_stock.Value = Range("A1").Value
TB_stock.Locked = True
TBTotal_Stock.Value = Range("A1").Value
TBTotal_Stock.Locked = True
End Sub

Private Sub TBSortie_Stock_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890,", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub

Private Sub TBSortie_Stock_Change()
TBTotal_Stock = CDbl(TB_stock.Value) - CDbl(TBSortie_Stock)
End Sub

Private Sub TBTotal_Stock_Change()
TBTotal_Stock.Value = Format(TBTotal_Stock.Value, "#.00")
End Sub

Private Sub CommandButton1_Click()
Range("A1").Value = CDbl(TBTotal_Stock)
Unload Me
End Sub

Aller bon courage

A+

Maurice

sans vouloir abuser, tu pourrais m'éclaircir sur le

Private Sub TBSortie_Stock_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("1234567890,", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep

End Sub

merci

Bonjour

Voila avec le KeyPress modifier

Private Sub UserForm_Initialize()
TB_stock.Value = Range("A1").Value
TB_stock.Locked = True
TBTotal_Stock.Value = Range("A1").Value
TBTotal_Stock.Locked = True
End Sub

Private Sub TBSortie_Stock_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'TRANSFORMER LE POINT PAR UNE VIRGULE
 If KeyAscii = 46 Then KeyAscii = 44
'ACCEPTER UNIQUEMENT UNE SEULE VIRGULE ET LES CHIFFRES ENTRE 0 ET 9
 If InStr("1234567890,", Chr(KeyAscii)) = 0 Or (InStr(TBSortie_Stock.Value, ",") <> 0 And Chr(KeyAscii) = ",") _
    Or (TBSortie_Stock.SelStart = 0 And Chr(KeyAscii) = ",") Then KeyAscii = 0: Beep
End Sub

Private Sub TBSortie_Stock_Change()
If TBSortie_Stock.Value <> "" Then
TBTotal_Stock = CDbl(TB_stock.Value) - CDbl(TBSortie_Stock)
End If
End Sub

Private Sub TB_stock_Change()
TB_stock.Value = Format(TB_stock.Value, "#.00")
End Sub

Private Sub TBTotal_Stock_Change()
TBTotal_Stock.Value = Format(TBTotal_Stock.Value, "#.00")
End Sub

Private Sub CommandButton1_Click()
Range("A1").Value = CDbl(TBTotal_Stock)
Unload Me
End Sub

A+

Maurice

merci Archer,

c'est tout simplement génial de transformer seul le point en virgule.

Du coup , ça solutionne quelque petits bugs minimes que je rencontrais.

Bon dimanche à toi et à la communauté.

Bonjour

aller encore une modife pour finir

Private Sub TBSortie_Stock_Change()
If TBSortie_Stock = "" Then TBTotal_Stock = TB_stock.Value
If TBSortie_Stock.Value <> "" Then
TBTotal_Stock = CDbl(TB_stock.Value) - CDbl(TBSortie_Stock)
End If
End Sub

A+

Maurice

merci encore une fois pour le temps que tu passes sur mon projet en cours !

@+

Rechercher des sujets similaires à "decimales textbox"