VBA - Soustraction qui se fait mal (Userform)

Bonjour à tous,

Dans un userform, j'ai une première Textbox où il faut entrer une valeur, dans la seconde il faut entrer une valeur plus petite que la première sinon message d'erreur, et la troisième calcule la différence.

Mais mon problème est que :

  • J'entre "4" dans Textbox1, je mets "5" dans textbox 2 > ok, messsage d'erreur, merci de mettre une valeur inférieure
  • J'entre "17" dans textbox 1, je mets "4" dans textbox2 > problème, message d'erreur, merci de mettre une valeur inférieure???
  • J'entre "17" dans textbox 1, je mets "12" dans textbox2 > ok pas de problème je peux passer à la suite

Comment est-ce possible qu'une comparaison de nombres marche pour certains et pas d'autres ??

Private Sub textbox2_change()

If Me.TextBox2.Value > Me.TextBox1 Then
    MsgBox ("Entrer une valeur inférieure ou égale au nombre d'entrées/sorties"), vbCritical
    Exit Sub
End If

If Me.TextBox2.Value <> "" Then
    Me.TextBox3.Value = Val(Me.TextBox1.Value) - Val(Me.TextBox2)
End If

End Sub

Bonjour,

Si la seule procédure que tu as est celle que tu nous as indiqué ici, alors c'est normal.

Ta procédure ne se lance que quand tu modifies ta textbox2, et pas quand tu modifies ta textbox1

Je ne comprends pas... Pourquoi cel fonctionne avec certains chiffres et pas d'autres ?

Ce n'est pas une question de chiffre ...

C'est juste que ta comparaison ne se fait pas quand tu modifies ta première textbox, mais uniquement quand tu modifies ta textbox2.

Ajoute la même procédure dans ton textbox1_change() :

Private Sub textbox1_change()

If Me.TextBox2.Value > Me.TextBox1 Then
    MsgBox ("Entrer une valeur inférieure ou égale au nombre d'entrées/sorties"), vbCritical
    Exit Sub
End If

If Me.TextBox2.Value <> "" Then
    Me.TextBox3.Value = Val(Me.TextBox1.Value) - Val(Me.TextBox2)
End If

End Sub

J'ai ajouté ce code dans le textbox1_change, mais toujous le même problème

En PJ le code entier (c'est sûrement le bazar dedans, j'y connais rien, j'avance à tatons...)

Je viens de tester, si dans la textbox1 je mets "17", si j'écris "04" ça fonctionne mais pas "4"... Mais si dans textbox1 je mets "63", là "4" dans textbox2 ne pose pas de problème, c'est à n'y rien comprendre !!

Bonjour

pour les chiffre sans virgule mettre un Val

If Val(TextBox2.Value) > Val(TextBox1.Value) Then

A+

Maurice

J'ai trouvé la solution pile au moment où tu as répondu haha

Merci beaucoup !!

Bonjour tu peux aussi utiliser la fonction "CDBL" pour le calcul des textbox.

et pas besoin des Me.textbox1.value textbox1.value çà suffit

Rechercher des sujets similaires à "vba soustraction qui fait mal userform"