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. Pense à marquer le sujet résolu
    0
    1. Merci encore de vos retour.s
      Pour information, j'ai utilisé le code de "pijaku"
      0
      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
        0
        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.
          0
      2. Bonjour,

        Merci de vos retours. Effectivement, je ne l'ai pas précisé. Je suis sur du VB excel.
        0
        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
          
          0
          1. Salut Pijaku.

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

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


            0