Forcer format de saisie textbox

Résolu
Bonjour,

Je cherche à forcer le format de saisie d'une textbox sous la forme CC-LLL-CC ou CCC-LLL-CC (C=chiffre, L= Lettre).
Impossible de trouver ma réponse sur le net..

Merci de vos retours

Configuration: Windows / Chrome 81.0.4044.138

7 réponses

  1. Contributeur
    Bonjour,

    pour format: CCC-LLL-CC à adapter pour d'autre format

    Option Explicit
    Private Sub TextBox1_Change()
    On Error Resume Next
        Dim Valeur As Byte
        TextBox1.MaxLength = 8 'nb caractères maxi autorisé dans le textbox
        Valeur = Len(TextBox1)
        If Valeur < 3 Or Valeur > 6 Then
        If Not IsNumeric(Right(TextBox1, 1)) Then
            MsgBox "Le caractere saisi n'est pas valide" 'non numérique
            TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
        End If
        ElseIf IsNumeric(TextBox1.Value) Then
        MsgBox "Le caractere saisi n'est pas valide" 'numérique
        End If
    End Sub
    


    1. Bonjour

      et un makseditbox ou maskedtextbox selon le vb que tu utilises (oui y'a pleins de vb différent)?
      1. Modérateur
        Bonjour,

        En complément des réponses des collègues (que je salue au passage), voici une proposition :

        Private Sub TextBox5_Change()
        Dim Formatage As String, LenT As Integer
        Const CH As String = "111-AAA-11"
        Const COMP As String = "###[-][a-zA-Z][a-zA-Z][a-zA-Z][-]##"
        
            LenT = Len(TextBox5.Value)
            If LenT <= Len(CH) Then
                If LenT > 0 Then
                    Formatage = TextBox5.Value & Right(CH, Len(CH) - LenT)
                    If Not Formatage Like COMP Then TextBox5.Value = Left(TextBox5.Value, LenT - 1)
                End If
            Else
                TextBox5.Value = Left(TextBox5.Value, LenT - 1)
            End If
        End Sub
        
        1. Salut Pijaku.

          Si dans ça version de VB y'a un textbox maské ça reste plus simple ;)
      2. Bonjour,

        Merci de vos retours. Effectivement, je ne l'ai pas précisé. Je suis sur du VB excel.
        1. Ha j'ai fait une recherche pour VBA (VB pour Application) et il semble qu'il n'y ait pas de masked textbox dans ce langage.

          Donc, il faut te tourner vers les 2 autres solutions
          1. Modérateur
            Salut Whis,

            Non, en effet, cela n'existe pas.
            Du coup, pour VBA Excel, ma solution fonctionne plutôt pas mal.
            Il faut toutefois l'adapter pour les 2 cas : CC-LLL-CC ou CCC-LLL-CC.
        2. Merci encore de vos retour.s
          Pour information, j'ai utilisé le code de "pijaku"