Total décimal dans textbox userform

Bonjour,

J'ai un problème pour les calculs de plusieurs textbox dans un userform qui me serrvira une fois fini de programme facture donc me faut absolument des chiffres juste

Voici mon code :

If ComboBox1.Value <> "" And TextBox18.Value <> "" And TextBox19.Value <> "" Then

TextBox20.Value = Val(TextBox18.Value) * Val(TextBox19.Value) 'Total HTVA

TextBox21.Value = (Val(TextBox20.Value) / 100 * (Val(ComboBox1.Value))) 'Montant de la TVA

TextBox22.Value = CDbl(TextBox20.Value) + CDbl(TextBox21.Value) 'Total TVAC

TextBox20.Value = format(CCur(TextBox20.Value), "# ##0.00 €")

Le problème donc c'est qu'en TextBox 20 et 22

il m'affiche des nombres arrondi et ne prend pas en compte ce qu'il y à après la virgule...

En TextBox 21 la il prend bien en compte les décimale lors du calcul de tva

BOOOO ...

Avez vous une idée miracle ?

Bonjour,

pourquoi ne pas utiliser ce qui marche ? A priori VAL fonctionne... alors pourquoi passer à CDBL ?

@ bientôt

LouReeD

Car cela ne fonctionne pas pour les autres lignes ! ? ... je comprend rien non plus

TextBox20.Value = Val(TextBox18.Value) * Val(TextBox19.Value) 'Total HTVA

TextBox20.Value = CDbl(TextBox18.Value) * CDbl(TextBox19.Value) 'Total HTVA

que sa soit 1 ou l'autre sa bug tjrs quelque part

Avez vous votre fichier ?

Comme cela ce n'est pas simple de voir si vous utilisez un point ou une virgule dans les TextBox pour signifier les décimales, car quoi qu'il en est une TextBox reste du texte, donc il faudra convertir pour additionner "correctement" et l'instruction FORMAT c'est du texte également... Et un vide ne correspond pas à 0, cela correspond à du texte qui n'a pas de caractère... Donc peut amener à une incompatibilité de type...

@ bientôt

LouReeD

Ouep je jongle avec les 2 donc Val ou Cdbl mais rien ne fonctionne

129test.xlsm (455.51 Ko)

Bonjour, Salut LouReed !

Je crois que le problème c'est qu'avec des nombres formatés à 2 décimales dans une TextBox, s'il y avait plus de décimales dont il devrait être tenu compte par la suite, elles seront perdues ! Tu n'extraieras que les 2 décimales affichées...

Hormis cela, la différence entre Val et CDbl (ou CSng ou CCur...) est que Val ne connaît que le point comme séparateur décimal, alors que les autres ne prendront que la virgule (ou le séparateur figurant dans les paramètres régionaux de Windows.

Ceci étant, il me semble t'avoir fait des conversions avec CCur dans ton autre sujet, parce que le format Currency (Monétaire) est en principe indiqué pour les calculs comptables ou monétaires.

Je pense que c'est ce format numérique que tu devrais choisir... Par contre, je ne vois pas trop l'intérêt d'affubler les nombres placés dans les TextBox d'un format monétaire, et j'y laisserais plutôt les résultats bruts ou, pour harmoniser, formatés à 4 décimales (le type Currency limite les décimales à 4 en virgule fixe pour obtenir une plus grande précision dans les calculs...)

Cordialement.

A essayer oui mais le code en lui même à l air correct au moins ? Je remplace juste les val et cdbl par autre chose c'est sa

Il faut surtout choisir un type de données et t'y tenir et t'assurer du séparateur décimal...

Bonjour

modification des combobox

et de la textbox 18 19 20

Avoir

A+

Maurice

143test-2.xlsm (442.19 Ko)

archer :

Merci, je regarde cela mais mon code à bien changer

vous avez fait le ménage je voit

Parfait sa fonctionne,

je suis entrain de continuer les autres lignes en suivant ton code modèle

Private Sub TextBox18_keyPress(ByVal KeyAscii As MSForms.ReturnInteger)

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

End Sub

Private Sub TextBox19_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Call VirgulChiffre(KeyAscii, 19)

End Sub

Private Sub TextBox27_keyPress(ByVal KeyAscii As MSForms.ReturnInteger)

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

End Sub

Private Sub TextBox26_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Call VirgulChiffre(KeyAscii, 26)

End Sub

Private Sub TextBox33_keyPress(ByVal KeyAscii As MSForms.ReturnInteger)

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

End Sub

Et ainsi de suite...

Pareil pour les calculs :

'Calcul + Format Ligne 1

Private Sub TextBox19_AfterUpdate()

If TextBox19.Value = "" Then TextBox20.Value = "": Exit Sub

TextBox19.Value = Format(CCur(TextBox19.Value), "# ##0.00 EURO")

TextBox19.ForeColor = IIf(Val(Replace(TextBox19.Value, ",", ".")) < 1, vbGreen, vbRed)

TextBox20.Value = Val(Replace(TextBox19.Value, ",", ".")) * Val(TextBox18.Value)

TextBox21.Value = (Val(TextBox20.Value) / 100 * (Val(ComboBox1.Value))) 'Montant de la TVA

TextBox22.Value = CDbl(TextBox20.Value) + CDbl(TextBox21.Value) 'Total TVAC

End Sub

'Calcul + Format Ligne 2

Private Sub TextBox26_AfterUpdate()

If TextBox26.Value = "" Then TextBox25.Value = "": Exit Sub

TextBox26.Value = Format(CCur(TextBox26.Value), "# ##0.00 EURO")

TextBox26.ForeColor = IIf(Val(Replace(TextBox26.Value, ",", ".")) < 1, vbGreen, vbRed)

TextBox25.Value = Val(Replace(TextBox26.Value, ",", ".")) * Val(TextBox27.Value)

TextBox24.Value = (Val(TextBox25.Value) / 100 * (Val(ComboBox2.Value))) 'Montant de la TVA

TextBox23.Value = CDbl(TextBox25.Value) + CDbl(TextBox24.Value) 'Total TVAC

End Sub

Cela va faire long mais fonctionnera

Par contre aurais tu une idée à modifier et/ou rajouter avant que je termine le code trop loin pour que :

lorsque je modifie le taux de tva (combobox) ou la quantité ou le prix HTVA que les 3 textbox re calcul la somme ?

Car sa arrive que je rentre donc des données pour faire une facture, et je me dit zut, c'était 2 de stock.. ou ah non 21% au lieu de 6% ...

bref mais la quand j'essaie de modifier un textbox il re calcul pas et si je reclic sur le prix HTVA et rappuie sur la touche "entrer" pour "actualiser" il envoie une erreur "incompatibilité de type"

Merci à toi

J'ai réussis

Est ce que sa à l'air ok comme code ?

je doit faire pareil pour les 10 lignes cela va crée un très long code mais bon :p

Au moins ici quand je change une donnée dans n'importe quel textbox sa refait le calcul direct

'Calcul + Format Ligne 1 Donc ici c'est juste pour calculer la ligne 1

Private Sub TextBox19_AfterUpdate()

If TextBox19.Value = "" Then TextBox20.Value = "": Exit Sub

'TextBox19.Value = Format(CCur(TextBox19.Value), "# ##0.00 EURO")

'TextBox19.ForeColor = IIf(Val(Replace(TextBox19.Value, ",", ".")) < 1, vbGreen, vbRed)

TextBox20.Value = Val(Replace(TextBox19.Value, ",", ".")) * Val(TextBox18.Value)

TextBox21.Value = (Val(TextBox20.Value) / 100 * (Val(ComboBox1.Value))) 'Montant de la TVA

TextBox22.Value = CDbl(TextBox20.Value) + CDbl(TextBox21.Value) 'Total TVAC

End Sub

Private Sub ComboBox1_AfterUpdate()

TextBox19_AfterUpdate

End Sub

Private Sub TextBox18_AfterUpdate()

TextBox19_AfterUpdate

End Sub

Private Sub TextBox20_AfterUpdate()

TextBox19_AfterUpdate

End Sub

Private Sub TextBox21_AfterUpdate()

TextBox19_AfterUpdate

End Sub

Private Sub TextBox22_AfterUpdate()

TextBox19_AfterUpdate

End Sub

'Calcul + Format Ligne 2 Donc ici c'est juste pour calculer la ligne 2

Private Sub TextBox26_AfterUpdate()

If TextBox26.Value = "" Then TextBox25.Value = "": Exit Sub

'TextBox26.Value = Format(CCur(TextBox26.Value), "# ##0.00 EURO")

'TextBox26.ForeColor = IIf(Val(Replace(TextBox26.Value, ",", ".")) < 1, vbGreen, vbRed)

TextBox25.Value = Val(Replace(TextBox26.Value, ",", ".")) * Val(TextBox27.Value)

TextBox24.Value = (Val(TextBox25.Value) / 100 * (Val(ComboBox2.Value))) 'Montant de la TVA

TextBox23.Value = CDbl(TextBox25.Value) + CDbl(TextBox24.Value) 'Total TVAC

End Sub

Private Sub ComboBox2_AfterUpdate()

TextBox26_AfterUpdate

End Sub

Private Sub TextBox27_AfterUpdate()

TextBox26_AfterUpdate

End Sub

Private Sub TextBox25_AfterUpdate()

TextBox26_AfterUpdate

End Sub

Private Sub TextBox24_AfterUpdate()

TextBox26_AfterUpdate

End Sub

Private Sub TextBox23_AfterUpdate()

TextBox26_AfterUpdate

End Sub

Archer ?

Tu saurais regarder car je n'arrive pas à faire additionner plusieurs textbox pour le total en dessous

Private Sub TextBox77_AfterUpdate()

TextBox77.Value = Val(TextBox22.Value) + Val(TextBox23.Value) ("et par la suite + TextBox 29 + 35 + 41 + 47 + 53 + 59 + 65 + 71)

End Sub

J'ai essayer CDbl, Val, j'ai essayer de mettre le code à plusieurs endroit, avec ou sans afterupdate .. nn rien ne fonctionne :/

bonjour

je veux mes redonne un modèle avec le nouveaux code

A+

Maurice

Merci beaucoup il sera peut être fini pour fin de semaine comme je m'était dit grâce à toi

54test-2.xlsm (443.89 Ko)

Bonjour

pour éviter les problème avec la virgule faire un Replace

Ex : Val(Replace(TextBox27.Value, ",", ".")) + Val(Replace(TextBox28.Value, ",", "."))

12.20 : mettre val

12,20 : mettre Val(Replace

12,20 Euro : mettre Val(Replace

aller du courage

A+

Maurice

Merci Merci

Mais ... la TextBox77 n'affiche rien ...

Private Sub TextBox77_AfterUpdate()

TextBox77.Value = Val(Replace(TextBox27.Value, ",", ".")) + Val(Replace(TextBox28.Value, ",", "."))

End Sub

Bonjour

j'ais fait une routine Calcul a voir

si tu est en forme

Private Sub TextBox19_AfterUpdate()
    If TextBox19.Value = "" Then TextBox20.Value = "": Exit Sub
    Call Calcul(1, 19, 20, 18, 21, 22)
End Sub

Private Sub Calcul(C1, T1, T2, T3, T4, T5)
                   '1, 19, 20, 18, 21, 22
    Controls("TextBox" & T2).Value = Val(Replace(Controls("TextBox" & T1).Value, ",", ".")) * Val(Controls("TextBox" & T3).Value)
    Controls("TextBox" & T4).Value = (Val(Controls("TextBox" & T2).Value) / 100 * (Val(Controls("ComboBox" & C1).Value))) 'Montant de la TVA
    Controls("TextBox" & T5).Value = CDbl(Controls("TextBox" & T2).Value) + CDbl(Controls("TextBox" & T4).Value) 'Total TVAC
End Sub

A+

Maurice

Je pense qu'on se mélange les pinceaux la

Je parle de la TextBox77 donc le Gros TOTAL des 10 Lignes

ainsi que forcément TextBox78 (total tva des 10 lignes) & TextBox79 (total htva des 10 lignes)

et dans ton code je revoit les textbox 19 20 21 22 de la 1er ligne .. :/ ????

Il fonctionne très bien le code que tu avait fait pk le changer ???

Donc du coup c'est juste l'histoire du code qui calcul les 10 lignes qu'il me faut et la j'avoue je suis largué jusqu'au bout du monde

bonsoir

pour ta question

Private Sub TextBox77_AfterUpdate()

TextBox77.Value = Val(Replace(TextBox27.Value, ",", ".")) + Val(Replace(TextBox28.Value, ",", "."))

End Sub

TextBox28 = Intitulé donc pas possible

aller bon courage

A+

Maurice

Rechercher des sujets similaires à "total decimal textbox userform"