Indique une valeur une erreur dans l'entrée de données dans une zone de texte

Signaler
-
 Ma3801 -
Bonjour,
alors je m'y connais très peu en programmation et encore moins en vba

contexte:
J'ai une TextBox et je voudrais mettre en condition les valeurs entrées par l'utilisateur

Par exemple je veux que la valeur entrée dans la zone de texte soit comprise entre 0 et 6 (sinon un message d'erreur apparait et l'utilisateur doit retaper la valeur).

Comment pourrais-je faire svp?

Je suis partis sur ça mais ça ne marche pas (je suis sans doute à coté de la plaque):
_______
Private Sub TextBox1_Change()
If TextBox1.Value < 0 Then MsgBox "Hors plage"
ElseIf TextBox1.Value > 6 Then MsgBox "Hors plage"
Else
End If
End Sub

______

Merci pour votre aide

1 réponse

Messages postés
16563
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
577
Bonjour

Ce qui est écrit dans une textbox c’est du texte, pas un nombre.
Tu ne peux donc pas tester si c’est supérieur ou inférieur directement, il faut commencer par convertir en nombre, entier dans ton cas.

VBA c’est pas mon fort, je dirais un truc comme ça

Dim nbreSaisi as Integer

nbreSaisi = CInt(Text1.Value)

If nbreSaisi < 0 Then
…..



Pour tes prochains posts, merci d’utiliser la coloration syntaxique. Voir ce tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Hello,

du coup en fait c'est pour un pote et j'avais pas le code, mais il m'a envoyé ça (je vais essayer de bien utiliser le code source):

Private Sub txtt°sortie_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep 'Empeche d'écrire des lettres

  '  If txtt°sortie.Value < 0 Then KeyAscii = 0: Beep 'empeche d'écrire un chiffre inf à 0
   '     If txtt°sortie.Value > 6 Then KeyAscii = 0: Beep 'empeche d'écrire un chiffre sup à 6

End Sub


Et donc à la suite de ta réponse j'ai essayer de rajouter :
If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep 'Empeche d'écrire des lettres
Dim temp as Integer
temp = CInt(txtt°sortie.Value)
If temp < 0 Then KeyAscii = 0: Beep 'empeche d'écrire un chiffre inf à 0
If temp > 6 Then KeyAscii = 0: Beep 'empeche d'écrire un chiffre sup à 6
End Sub


Mais ça me met erreur "13"...