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. Bonjour

    et un makseditbox ou maskedtextbox selon le vb que tu utilises (oui y'a pleins de vb différent)?
    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. 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"