Contrôle sur textbox

becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017 - 10 juil. 2017 à 12:49
becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017 - 11 juil. 2017 à 11:52
Bonjour,
Je me permets de vous poser une question peut être bête, mais je ne trouve pas la réponse…

J’ai plusieurs textbox.
Je dois comparer la valeur de mes textbox avec un intervalle.

1er textbox :
je saisi une valeur dans ma textbox
je vérifie si cette valeur est comprise entre 10 et 20
si c’est le cas alors je passe au textbox suivant
sinon je reste dans ma textbox (tant que je n’ai pas saisi la bonne valeur)

Private Sub textbox1_TextChanged(sender As Object, e As EventArgs) Handles textbox1.TextChanged

        Dim int As Integer
        CM1.MaxLength = 
        Int32.TryParse(CM1.Text, int)

	 While int<10 and int>20
         
            Textbox1.Focus()
 	      Msgbox(“veuillez saisir un chiffre entre 10 et 20”)	
        End while

    End Sub


Pouvez-vous me dire ce qui ne va s pas SVP.

En vous remerciant d’avance.

9 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 juil. 2017 à 15:56
Bonjour

D'abord While int<10 and int>20

pas logique int ne peut pas etre inférieur à 10 et supérieur à 20
0
becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017
10 juil. 2017 à 16:16
Effectivment, mais ceci dit, j'ai essayé autrement, et toujours rien :
si la valeur saisi est entre 10 et 20 alors tout est ok :

  Private Sub textbox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

        Dim int As Integer
        TextBox1.MaxLength = 2
        Int32.TryParse(TextBox1.Text, int)

        If (int > 10 Or int < 20) Then
            MsgBox("tout est ok")
        Else
            TextBox1.Focus()
            MsgBox(“veuillez saisir un chiffre entre 10 et 20”)
        End If

    End Sub
End Clas
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
10 juil. 2017 à 16:26
0
becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017
10 juil. 2017 à 16:38
Je découvre vb.net.... je vais voir de ce coté.
Merci pour l'info.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
10 juil. 2017 à 18:52
Bonsoir, la proposition de Shayw: le numeric up down est une bonne idée, tu configures le min, le max et on n'en parle plus.
Cependant, ton code entier est incorrect, et si on ne te l'explique pas, tu recommenceras sans comprendre pourquoi ça ne marche pas bien

D'abord, tu mélanges du VB6 et du VB.Net, la plupart du temps ça marche, mais quand ça plante, un débutant est incapable de trouver pourquoi.
Lis ceci et applique les conseils listés.

        Dim int As Integer
        TextBox1.MaxLength = 2'ça n'a rien à faire là, tu peux le mettre dans la fenêtre propriété en mode design, ou encore dans l'évènement Load. Ici ça sera répété à chaque saisie alors qu'un fois pour toute suffit.
        
        Int32.TryParse(TextBox1.Text, int)'ça c'est bien, tu testes si l'opérateur à tapé un nombre, mais s'il a écrit une lettre tu continues ton code, pas logique. int vaudra 0 donc sera rejeté, mais la logique voudrais que tu regardes le résultat du TryParse. 

        If (int > 10 Or int < 20) Then' et si je suis en train de tapper 12 qui est compris dans l'intervalle, mais que à l'instant ou on parle, j'ai juste tapé le 1, ça va me mettre un message d'erreur, sans même me laisser ma chance de bien faire. Moi utilisateur, ça va m'énerver.
            MsgBox("tout est ok")
        Else
            TextBox1.Focus()
            MsgBox(“veuillez saisir un chiffre entre 10 et 20”)
        End If


Voilà ce que je te propose (en restant dans l'évènement TextChanged qui n'est pas l'idéal pour traiter ce genre de chose, si tu le souhaites je te montrerai autre chose)

        Dim int As Integer
        Dim resultat As Boolean = Int32.TryParse(MTotalOut.Text, int)

        If TextBox1.Text = "1" OrElse TextBox1.Text = "2" Then
            'on ne fait rien on lui laisse sa chance à l'utilisateur
        ElseIf resultat = True AndAlso int > 10 AndAlso int < 20 Then 'sinon on regarde s'il a bien tappé un nombre et <souligne>si et seulement si (andalso)</souligne> oui on teste l'intervalle
            MessageBox.Show("OK")
        Else 'et sinon c'est pas bien
            MessageBox.Show("Non")

        End If


0
becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017
11 juil. 2017 à 09:37
Slt Whismeril,
Merci beaucoup pour ta réponse.
Je vais tester ce matin et je te tiens au courant.
0
becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017
11 juil. 2017 à 10:48
Ça marche :) Merci Whismeril
Une question, l'intervalle étant petit (de 10 à 20) ça ne pose pas de problème. Mais si j'agrandis l'intervalle de X à Y ( de 0 à 400 par exemple...)
Si tu as autre chose à me montrer, je suis partant.

Encore une fois, merci beaucoup, cela faisait 2 jours que j’étais bloqué sur ce point.
0
becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017
11 juil. 2017 à 10:50
Slt cs_ShayW, j'ai regardé le lien sur numeric up down... je n'ai pas très bien compris comment ça marche :(
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
11 juil. 2017 à 11:43
As tu posé le.controle sur ta Form, as tu essayé de le paramétrer?
0
becool_75 Messages postés 7 Date d'inscription lundi 10 juillet 2017 Statut Membre Dernière intervention 11 juillet 2017
11 juil. 2017 à 11:52
humm... le controle sur la Form..? Je n'ai pas bien saisis..
0
Rejoignez-nous