Calculs entre textbox

bonne nuit, encore une fois j'ai besoin de votre lumière pour m'éclairer,

dans les calculs à l'intérieur des textbox, mais comme un exemple

vaut mieux qu'un millier de mots, j'ai mis en place un petit fichier.

Salut,

Tu peux faire un arrondi à 2 décimale : Round(Val(TextBox1) - Val(TextBox2) - Val(TextBox3), 2)

Bonsoir,

avant de faire des calculs avec des TextBox il faut prendre des précautions...

Avec

Val(Replace(TextBox1, ",", ".")) 

vous faites deux choses : vous remplacez la virgule par un point et vous prenez la "valeur" du texte résultant. Si vous ne faite que Val, alors pour les chiffres à virgules cela pose des problèmes d'interprétations...

A essayer donc.

vbMBHB

Merci pour votre aide, mais comme je suis un amateur en VBA, je ne sais pas où l'intégrer, il serait plus simple si vous pouvez modifier mon exemple, et donc essayer de comprendre

merci

Désolé, j'arrête là, je ne comprend pas l'idée.

vbMBHB

Je ne comprends pas bien.

Si tu as réussi à créer ton userform et créer les formules de calcul de tes textbox, je pense que tu es capable de faire un copier coller avec les solutions proposer ci-dessus.

Bonjour, Salut à tous !

D'abord il apparaît que les TextBox 1 et 4 ne sont pas concernés par la saisie : il convient donc de les verrouiller pour empêcher toute saisie (propriété Locked à True, et simultanément propriété TabStop à False, qui les éliminera en tant que points d'arrêt lors de la tabulation). L'utilisateur ne pourra pas saisir.

Ensuite, un minimum de mise en forme consiste à afficher tes montants avec virgule (à moins que ton séparateur décimal soit autre ?), et deux chiffres après la virgule. Il faut donc mettre en forme le montant initialisé dans TextBox1 et transformer le point en virgule à la saisie dans TextBox2 et 3.

Enfin, remplacer l'évènement Change (qui se produit à chaque caractère saisi) par AfterUpdate (qui intervient lors de la validation de la saisie). Transférer la mise à jour lors de saisie à une proc. commune, qui formatera la saisie dans la TextBox appelante et procèdera au calcul à affecter la la TextBox4.

Ce qui donne (code) :

Sub Maj(n As Integer)
    Dim i%, Tot
    With Controls("TextBox" & n)
        .Value = Format(Val(Replace(.Value, ",", ".")), "0.00")
    End With
    Tot = Val(Replace(TextBox1.Value, ",", "."))
    For i = 2 To 3
        Tot = Tot - Val(Replace(Controls("TextBox" & i).Value, ",", "."))
    Next i
    TextBox4.Value = Format(Tot, "0.00")
End Sub

Private Sub TextBox2_AfterUpdate()
    Maj 2
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 46 Then KeyAscii = 44
End Sub

Private Sub TextBox3_AfterUpdate()
    Maj 3
End Sub

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 46 Then KeyAscii = 44
End Sub

Private Sub UserForm_Initialize()
    Me.TextBox1.Value = Format(Worksheets("Folha1").Range("A65536").End(xlUp), "0.00")
End Sub

Cordialement.

Bonsoir,

Décidément, MFerrand est là pour nous montrer le chemin ! Merci à lui !

vbMBHB

c'est justement ce que je cherchai

merci

Rechercher des sujets similaires à "calculs entre textbox"