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 -
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
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
-
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 -
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+++ -
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)
-
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Il faut mettre ce code dans la feuille où ce situe ta cellule:
Option Explicit
Code valable pour 4 chiffres, 2 lettres et 2 chiffres (ancienne numérotation)
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
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é.