[VBA] Erreur sur un contrôle

Bonjour à tous,

J'ai fait un contrôle basique, mais aussi basique soit-il, il plante sans que je comprenne pourquoi. Le contrôle consiste à vérifier que dans un même formulaire on ne peut valider que si le chiffre renseigné dans une textbox est inférieur à une autre. En gros, on ne peut sortir du stock plus du produit (sélectionné dans un menu déroulant) que ce qu'il en reste (information qu'il va chercher dans un TCD).

(sur ma page Sortie : USF_M)

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'L'événement Exit se déclenche lorsque le focus sort de la zone de texte
  If TextBox2.Text = "" Or TextBox2.Value >= TextBox4.Value Then
    MsgBox "ATTENTION : Veuillez saisir une quantité de produits à sortir inférieure au stock restant."
    Cancel = True
'Un message pour attirer l'attention de l'utilisateur

  End If

End Sub

Tout se passe relativement bien sauf sur certaines valeurs : si je rentre des chiffres de 1 à 3, et supérieurs à 10, le contrôle s'effectue bien, en revanche, de 4 à 9, il s'effectue, mais son résultat est faux (il considère que 5 est supérieur à 30 p.e.).

Pourtant le code est tellement court que l'erreur ne doit pas être là, quelque chose d'autre doit interférer mais je ne vois pas ni quoi, ni où.

Si d'aventure quelqu'un était plus perspicace que moi ...

Bonjour

Un TextBox, comme son nom l'indique, ne peut contenir que du texte.

S'il s'agit de chiffres, il faut les convertir en nombre pour les exploiter correctement.

Dans ton code tu peux par exemple remplacer l'instruction correspondante par :

If TextBox2 * 1 = "" Or TextBox2 * 1 >= TextBox4 * 1 Then

Fais l'essai ...

Résultat ?

Bye !

Merci pour ton aide gmb, malheureusement modification faite, l'erreur reste la même. C'est quand même étrange que ça foire seulement de 4 à 9.

Salut Cricri,

c'est un fichier à surprises dont je crains qu'il soit difficile de s'en sortir sans une refonte globale du code et du visuel!

Pour ta question, voilà la réponse mais le fait de stipuler dans tes conditions 'If Val(TextBox2.Text) = 0' devrait entraîner un autre message!

  If Val(TextBox2.Text) = 0 Or Val(TextBox2.Text) >= Val(TextBox4.Text) Then

A+

C'est gentiment dit j'ai bien conscience que tout relève du bricolage. En néophyte, je trouve les subtilités de la syntaxe impossible à acquérir sans une grosse pratique, même en ayant la logique, c'est décourageant .

Merci mille fois en tout cas, car la solution marche parfaitement !

Vraiment 1000 mercis.

Vraiment, vraiment.

Rechercher des sujets similaires à "vba erreur controle"