Format text box

Résolu
Bonjour,
j'aurais besoin de savoir si on peut enregistrer la valeur d'un textbox sous 2 formats différents
je m'explique c'est pour un textbox ou sera rentrée une immatriculation

1) les anciennes immat commencent par des chiffres ex: 0000 PLA 00 les lettres sont 2 ou 3

2)les nouvelles commencent par des lettres ex: "CV-875-LV" 2 lettres 3 chiffres 2 lettres

donc si je rentre des chiffres en premier formater en ex 1 si je rentre des lettres en 1er formater en ex 2
merci de votre aide
a bientôt

5 réponses

  1. Contributeur
    Il faut mettre ce code dans la feuille où ce situe ta cellule:

    Option Explicit
    Dim num As Boolean
    Dim caract, Rep As String
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$C$13" Then
    Rep = Range("C13").Value
    caract = Left(Rep, 1)
    If IsNumeric(caract) Then
    num = True
    Else
    num = False
    End If
    If num = True Then '1er caractère
    Dim Valeur As Byte
    'ancien
    Rep = Range("C13").Value
    Valeur = Len(Rep)
    If Valeur > 10 Then Exit Sub 'si valeur exacte
    caract = Left(Rep, 3)
    Rep = Replace(Rep, caract, caract & " ") 'ajout espace à gauche
    caract = Right(Rep, 2)
    Rep = Replace(Rep, caract, " " & caract) 'ajout espace à droite
    Range("C13").Value = Rep
    Else
    'nouveau
    Rep = Range("C13").Value
    Valeur = Len(Rep)
    If Valeur > 8 Then Exit Sub 'si valeur exacte
    caract = Left(Rep, 2)
    Rep = Replace(Rep, caract, caract & "-") 'ajout - à gauche
    caract = Right(Rep, 2)
    Rep = Replace(Rep, caract, "-" & caract) 'ajout - à droite
    Range("C13").Value = Rep
    End If
    End If
    End Sub

    Code valable pour 4 chiffres, 2 lettres et 2 chiffres (ancienne numérotation)
    2 lettres, 3 chiffres et 2 lettres (nouvelle numérotation)

    Tu entres ton immatriculation sans espace ou tiret et ensuite tu cliques sur ta cellule, cela sera corrigé.
    0
    1. Contributeur
      erreur

      Code valable pour 3 chiffres, 3 lettres et 2 chiffres (ancienne numérotation)

      à adapter
      0
    2. Bonjour
      ca marche bien ce que je voulais
      merci
      a bientot
      0
  2. bonsoir
    merci pour ton aide je vais faire avec ça vu que mon département est avec 2 chiffres en anciennes plaques ça fera l'affaire
    merci
    bon week-end
    a bientôt
    0
    1. Contributeur
      J'ai corrigé le code. Mais il restera un problème si dans les anciennes plaques tu as 3 chiffres ou 3 lettres et dans les nouvelles si tu as 2 chiffres.
      Option Explicit
      Dim num As Boolean
      Dim caract As String
      Private Sub TextBox1_Change()
      If num = True Then '1er caractère
      Dim Valeur As Byte
      'ancien
      TextBox1.MaxLength = 11 'nb caracteres maxi dans textbox
      Valeur = Len(TextBox1)
      If Valeur = 4 Or Valeur = 8 Then TextBox1 = TextBox1 & " "
      Else
      'nouveau
      TextBox1.MaxLength = 9 'nb caracteres maxi dans textbox
      Valeur = Len(TextBox1)
      If Valeur = 2 Or Valeur = 6 Then TextBox1 = TextBox1 & "-"
      End If
      End Sub

      Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
      caract = Left(TextBox1.Value, 1)
      If IsNumeric(caract) Then
      num = True
      Else
      num = False '
      End If
      End Sub

      Code valable pour 4 chiffres, 2 lettres et 2 chiffres (ancienne numérotation)
      2 lettres, 3 chiffres et 2 lettres (nouvelle numérotation)
      0
      1. bonsoir
        je relance ce post pour une question
        comment on peut affecter cette macro a la cellule C13 d'une feuille?
        merci
        0
    2. Bonjour
      c'est pas tout a fait ça
      on arrive pas a avoir 4 chiffres alignes ex 2550 MN 17
      et pour les lettres on obtient ml-1 25lm
      mon textbox est TextBox125 donc tout ce qui est TexBox1 j ai renommé en TextBox125
      a+++
      0
      1. Contributeur
        Bonjour,

        Voici une macro qui fait cela

        Cliquer dans le TextBox et mettre cette macro

        Option Explicit
        Dim num As Boolean

        Private Sub TextBox1_Change()
        If num = True Then '1er caractère
        Dim Valeur As Byte
        'ancien
        TextBox1.MaxLength = 11 'nb caracteres maxi dans textbox
        Valeur = Len(TextBox1)
        If Valeur = 4 Or Valeur = 8 Then TextBox1 = TextBox1 & " "
        Else
        'nouveau
        TextBox1.MaxLength = 9 'nb caracteres maxi dans textbox
        Valeur = Len(TextBox1)
        If Valeur = 2 Or Valeur = 6 Then TextBox1 = TextBox1 & "-"
        End If
        End Sub

        Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If Not IsNumeric(Chr(KeyAscii)) And Not Chr(KeyAscii) = ":" Then
        num = False
        Else
        num = True
        End If
        End Sub
        0