Maskedtextbox ou Textbox???

radzo Messages postés 4 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 20 octobre 2014 - 11 avril 2014 à 13:39
 radzo - 16 avril 2014 à 13:29
Bonjour,

J'aimerais contrôler la saisie dans un textbox sous un certain format. J'ai utilisé maskedtextbox mais ce n'est pas suffisant. En fait le format voulu c'est du genre : 0 33 11 111 11. Avec Maskedtextbox, il n'accepte que les chiffres, mais ce qu'il faut ajouter c'est que :
- il faut que le premier chiffre soit "0"
- il faut que les 2nd et 3è chiffres soient 32 ou 33 ou 34 ou 20

Comment faut-il faire?

Merci

4 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
11 avril 2014 à 15:21
Bonjour, tu parles de MaskedTextBox et tu postes ton message en VB6.
Il me semble que ce contrôle n'existe pas en VB6, il y avait les Masked Edit Box, un peu différents.

Peu importe, dans ton cas tu devrais essayer de contrôler la saisie au moment de la frappe (KeyPress, KeyDown, KeyUp) et annuler un caractère qui ne conviendrait pas.
Pour comparer le texte regarde du coté de l'opérateur Like, ou des expressions régulières.
0
carlvb Messages postés 199 Date d'inscription mercredi 23 avril 2003 Statut Contributeur Dernière intervention 25 mai 2017 11
12 avril 2014 à 07:03
Bonjour,

En complément de cette réponse de Whismeril, tu pourrais peut-être utiliser un select case len(textbox) au moment de la frappe pour définir les caractères acceptables en fonction de la position.

Ci-après un petit exemple pour contrôler les trois premiers chiffres. Mais il qui ne gère que la frappe et ne résiste pas à un ctrl+V. Il faudrait dans ce cas là prévoir une vérification supplémentaire.

   Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim c As String
        c = e.KeyChar
        Select Case TextBox1.Text.Length
            Case 0
                If Not c = "0" Then e.KeyChar = CChar("")
            Case 1
                If Not (c = "2" Or c = "3") Then e.KeyChar = CChar("")
            Case 2
                Select Case TextBox1.Text.Substring(1, 1)
                    Case "2"
                        If Not c = "0" Then e.KeyChar = CChar("")
                    Case "3"
                        If Not (c = "2" Or c = "3" Or c = "4") Then e.KeyChar = CChar("")
                End Select
        End Select
    End Sub
0
carlvb Messages postés 199 Date d'inscription mercredi 23 avril 2003 Statut Contributeur Dernière intervention 25 mai 2017 11
11 avril 2014 à 20:19
Bonsoir,

Il se pourrait qu'une source de ucfoutu réponde à tes besoins : http://codes-sources.commentcamarche.net/source/53984-vba-uniquement-saisies-controlees-un-peu-comme-avec-maskededit.

Tu peux y jeter un coup d'oeil.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 avril 2014 à 22:40
Bonjour (et un salut à carlvb),
Il pourrait en effet s'en inspirer, mais il lui faudra alors adapter pour VB.Net (la remarque faite par Whismeril, que je salue également) étant en effet fondée).
0
carlvb Messages postés 199 Date d'inscription mercredi 23 avril 2003 Statut Contributeur Dernière intervention 25 mai 2017 11
12 avril 2014 à 06:00
Bonjour ucfoutu,

Effectivement, comme tu l'as souligné dans la présentation de la source, il faudrait l'adapter mais l'algo est déjà là.

Bonne journée.
0
Bonjour tout le monde,
Je suis désolée de ne pas pu vous répondre ni donner une signe de vie plus tôt, mais j'avais eu un empêchement. Je vous remercie tous de m'avoir répondu et donner leurs conseils sur le sujet. Je vais les voir et les essayer et reviendrai ici pour vous informer.
Merci à tous,
0
Rejoignez-nous