Format text box

Résolu/Fermé
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 - 14 mars 2014 à 02:03
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 - 25 mars 2014 à 13:37
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
14 mars 2014 à 12:32
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 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
14 mars 2014 à 14:50
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
14 mars 2014 à 17:56
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 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
24 mars 2014 à 23:12
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 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
14 mars 2014 à 19:46
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
25 mars 2014 à 11:48
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
25 mars 2014 à 12:00
erreur

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

à adapter
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
25 mars 2014 à 13:37
Bonjour
ca marche bien ce que je voulais
merci
a bientot
0