Champ calculé dans un UserForm

Bonjour Forum,

Je viens vers vous pour trouver une solution à un petit problème concernant un champ calculé dans un UserForm (bout de code que j'ai eu sur internet et modifié pour mon fichier)

En effet, je souhaite faire la soustraction de deux TextBox dans un UserForm (No Lignes Fin - No Lignes Début):

mais ça bug lors de l'application car quand je mets par exemple 300 dans No Lignes Début et 500 dans No Lignes Fin,

il me donne un résultat de -300.

Aussi si je remonte dans No Lignes Début pour modifier le montant, il ne fait rien.

Regardez ce que j'ai mis comme code;

Private Sub TextBox1_NoLignesDebut_Change()
If TextBox2_NoLignesFin.Value = "" Then Exit Sub
For i = 1 To Len(TextBox1_NoLignesDebut.Value)
TextBox3_EcartsNoLignes = TextBox2NoLignesFin - TextBox1_NoLignesDebut
Next i
End Sub

Private Sub TextBox2_NoLignesFin_Change()
If TextBox1_NoLignesDebut.Value = "" Then Exit Sub
For i = 1 To Len(TextBox2_NoLignesFin.Value)
TextBox3_EcartsNoLignes = TextBox2NoLignesFin - TextBox1_NoLignesDebut
Next i
End Sub

Pouvez-vous svp me dire ou se trouve mon problème.?

Merci d'avance.

Bonjour,

Si tu utilises l’évènement Change, la procédure est lancée à chaque changement de valeur de la TextBox.

Exemple : quand tu saisis 300, la procédure est lancée 3 fois, une fois pour 3, une fois pour 0 et une autre fois pour le deuxième 0.

Ce n’est pas problématique lorsque tu renseignes la première TextBox puisque le test de validité sur la deuxième TextBox provoque la sortie de la procédure.

Par contre, lorsque tu renseignes la deuxième TextBox, la procédure se poursuit normalement puisque la première TextBox est renseignée.

Le calcul s’effectue alors avec le premier chiffre saisi.

Exemple : tu saisis 300 dans la TextBox NoLignesDebut et tu souhaites saisir 500 dans la TextBox NoLignesFin. Dès l’instant où tu saisis le 5, le calcul est effectué et le résultat est 5 – 300 = -295.

Mais comme une misère n’arrive jamais seule, tu as également commis une erreur de frappe dans ton code. Tu as écrit TextBox2NoLignesFin à la place de TextBox2_NoLignesFin.

La variable TextBox2NoLignesFin ayant une valeur nulle, tu obtiens le résultat 0 – 300 = -300.

Une solution : utiliser un bouton pour valider la saisie.

144exemple.xlsm (15.36 Ko)

A+

Merci frangy,

C'est parfait comme solution.

Je vais pouvoir continuer dans l’élaboration de mon planning.

Merci encore.

Rechercher des sujets similaires à "champ calcule userform"