Problème dans formule

Fermé
Fab - 25 nov. 2008 à 10:40
 Fab - 25 nov. 2008 à 16:03
Bonjour,

Voilà mon petit problème, j'ai une formule qui me réalise une banale opération de multiplication de TextBox.

Private Sub TextBox7_Change()

UserForm2.TextBox7 = UserForm2.TextBox7.Value
If UserForm2.TextBox8 <> "" Then
UserForm2.TextBox9 = UserForm2.TextBox7 * UserForm2.TextBox8
End If

If Not IsNumeric(TextBox7.Text) Then
MsgBox "valeur numérique obligatoire", vbCritical, "AIDE"
End If
Exit Sub

End Sub

Private Sub TextBox8_Change()

UserForm2.TextBox8 = UserForm2.TextBox8.Value
If UserForm2.TextBox7 <> "" Then
UserForm2.TextBox9 = UserForm2.TextBox7 * UserForm2.TextBox8

End If

If Not IsNumeric(TextBox8.Text) Then
MsgBox "valeur numérique obligatoire", vbCritical, "AIDE"
End If
Exit Sub

Mon problème est que si un utilisateur maladroit veut effacer un chiffre erroné dans la textbox 8 ou 7 il survient une erreur qui me rebalance sur VBA en me soulignant la ligne en gras (suivant la textbox que l'on efface). Je souhaiterais donc savoir comment puis-je utiliser la commande suppr du moins l'autoriser????

Merci d'avance

3 réponses

Bonjour

Pourquoi fais-tu l'opération AVANT d'avoir testési la valeur était bien numérique ? Ça me semble totalement illogique !
Tu n'as qu'à faire le test d'abord, (sur les 2 champs que tu multiplies d'ailleurs), afficher ton message d'alerte et quitter la fonction avant de faire la multiplication
0
Bonjour Toto,

J'ai déplacé le test des valeurs numériques pour voir si ça changeais mon problème c'est pour ça ^^.
Mais mon problème de suppr est aussi valable pour le test qui m'affiche deux fois ma msgbox.
0
As-tu bien tenu compte de TOUT ce que je t'ai écrit - et en particulier du fait de quitter la fonction AVANT de faire la multiplication si le texte saisi n'est pas un nombre correct ?
Si tu l'avais fait, tu ne pourrais pas avoir d'erreur sur la ligne en gras, puisque tu ne passerais pas par la ligne en gras...

D'autre part, à quoi sert une ligne du genre "UserForm2.TextBox8 = UserForm2.TextBox8.Value " ????
0
bon j'ai réecris mon code et voilà ce qu'il me marque:

Erreur d'éxécution '13'
incompatibilité de type
et me souligne toujours la ligne


mon code remis à jour:

Private Sub TextBox8_Change()

If Not IsNumeric(TextBox8.Text) Then
MsgBox "valeur numérique obligatoire", vbCritical, "AIDE"
End If

If UserForm2.TextBox7 <> "" Then
UserForm2.TextBox9 = UserForm2.TextBox7 * UserForm2.TextBox8
End If
0
Bon maintenant il ne me reste qu'un seul problème à résoudre c'est celui d'autoriser la textbox à être "vide" pendant le laps de temps ou l'utilisateur corrige sa valeur.
0
Bon alors là je sais plus quoi faire, étant débutant mes capacités sont limitées, mais je sais que mon problème vient du fait de cette ligne:

If UserForm2.TextBox7 <> "" Then

mais je n'arrive pas à savoir comment dire que si un des textbox est vide la condition:

UserForm2.TextBox9 = UserForm2.TextBox7 * UserForm2.TextBox8

est annulé jusqu'a ce que la textbox soit remplie.

Merci d'avance à celui qui trouvera car c'est assez gènant comme problème.
0