Contrôle sur textbox

Messages postés
7
Date d'inscription
lundi 10 juillet 2017
Dernière intervention
11 juillet 2017
- - Dernière réponse : becool_75
Messages postés
7
Date d'inscription
lundi 10 juillet 2017
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.
Afficher la suite 

Votre réponse

9 réponses

Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
0
Merci
Bonjour

D'abord While int<10 and int>20

pas logique int ne peut pas etre inférieur à 10 et supérieur à 20
Commenter la réponse de cs_ShayW
Messages postés
7
Date d'inscription
lundi 10 juillet 2017
Dernière intervention
11 juillet 2017
0
Merci
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
Commenter la réponse de becool_75
Messages postés
3244
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
13 décembre 2018
Commenter la réponse de cs_ShayW
Messages postés
7
Date d'inscription
lundi 10 juillet 2017
Dernière intervention
11 juillet 2017
0
Merci
Je découvre vb.net.... je vais voir de ce coté.
Merci pour l'info.
Commenter la réponse de becool_75
Messages postés
12399
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
0
Merci
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


becool_75
Messages postés
7
Date d'inscription
lundi 10 juillet 2017
Dernière intervention
11 juillet 2017
-
Slt Whismeril,
Merci beaucoup pour ta réponse.
Je vais tester ce matin et je te tiens au courant.
Commenter la réponse de Whismeril
Messages postés
7
Date d'inscription
lundi 10 juillet 2017
Dernière intervention
11 juillet 2017
0
Merci
Ç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.
Commenter la réponse de becool_75
Messages postés
7
Date d'inscription
lundi 10 juillet 2017
Dernière intervention
11 juillet 2017
0
Merci
Slt cs_ShayW, j'ai regardé le lien sur numeric up down... je n'ai pas très bien compris comment ça marche :(
Commenter la réponse de becool_75
Messages postés
12399
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 décembre 2018
0
Merci
As tu posé le.controle sur ta Form, as tu essayé de le paramétrer?
Commenter la réponse de Whismeril
Messages postés
7
Date d'inscription
lundi 10 juillet 2017
Dernière intervention
11 juillet 2017
0
Merci
humm... le controle sur la Form..? Je n'ai pas bien saisis..
Commenter la réponse de becool_75

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.