Maskedtextbox ou Textbox???

Signaler
Messages postés
4
Date d'inscription
vendredi 8 novembre 2013
Statut
Membre
Dernière intervention
20 octobre 2014
-
 radzo -
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

Messages postés
15141
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
26 novembre 2020
462
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.
Messages postés
199
Date d'inscription
mercredi 23 avril 2003
Statut
Contributeur
Dernière intervention
25 mai 2017
9
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
Messages postés
199
Date d'inscription
mercredi 23 avril 2003
Statut
Contributeur
Dernière intervention
25 mai 2017
9
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.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
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).
Messages postés
199
Date d'inscription
mercredi 23 avril 2003
Statut
Contributeur
Dernière intervention
25 mai 2017
9
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.
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,