Format text box

Résolu
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   -  
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

5 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   4
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   4
 
bonsoir
je relance ce post pour une question
comment on peut affecter cette macro a la cellule C13 d'une feuille?
merci
0
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   4
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
erreur

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

à adapter
0
surplus Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   4
 
Bonjour
ca marche bien ce que je voulais
merci
a bientot
0