Format textbox

G

G'Claire

Guest
Bonsoir le forum,

Et non, ce n'est pas encore une naissance, mais une petite question.

Dans un TextBox, j'aimerais pouvoir lors de la saisie dans celui-ci un format du type : Une partie lettres un espace et une partie chiffres, je sais c'est pas claire donc je préfère vous mettre un exemple:

Exemple

si je saisie "a1" , que cela ecrive dans le textbox "A 1"
si je saisie "b12" , que cela ecrive dans le textbox "B 12"
si je saisie "ab1" , que cela ecrive dans le textbox "AB 1"
si je saisie "ab12" , que cela ecrive dans le textbox "AB 12"

J'espère que cela est plus claire.

Je vous en remercie d'avance
 
L

LaurentTBT

Guest
Salut Jacques.

Je n'ai pas réussi à créer ce format par un format de cellule personnalisé. Il aurait suffit alors de recopier ce format (sous la forme d'une chaîne de caractère) ainsi:

Private Sub TextBox1_Change()
TextBox1=Format(TextBox1,"Le format qui va bien")
End Sub

Si les pro du format passent par là...

En attendant, voici une solution brute de fonderie qui modifie le contenu de TextBox1 à l'aide des fonctions de chaînes de caractère et qui donne le résultat attendu:

Private Sub TextBox1_Change()

If Len(TextBox1) = 0 Then Exit Sub
'Mettre les lettres en majuscules
If Len(TextBox1) = 1 And Not (IsNumeric(TextBox1)) Then
TextBox1 = UCase(TextBox1)
Else
If Not IsNumeric(Right(TextBox1, 1)) Then _
TextBox1 = Left(TextBox1, Len(TextBox1) - 1) & UCase(Right(TextBox1, 1))
End If

' Ajout éventuel d'un espace avant les chiffres
If Len(TextBox1) <= 1 Or InStr(TextBox1, " ") > 0 Then Exit Sub
If Not IsNumeric(Mid(TextBox1, Len(TextBox1) - 1, 1)) And IsNumeric(Right(TextBox1, 1)) Then
TextBox1 = Left(TextBox1, Len(TextBox1) - 1) & " " & Right(TextBox1, 1)
End If
End Sub

Voilà, c'est un peu lourd, mais cela devrait t'aller, du moins j'espère.

@+ Laurent.
 
L

LaurentTBT

Guest
Oups, je me suis apperçu juste en envoyant ma réponse ci-dessus que j'avais fait simple là où l'on peut faire compliqué. Ceci suffit amplement :

Private Sub TextBox1_Change()

If Len(TextBox1) = 0 Then Exit Sub
'Mettre les lettres en majuscules
TextBox1 = UCase(TextBox1)

' Ajout éventuel d'un espace avant les chiffres
If Len(TextBox1) <= 1 Or InStr(TextBox1, " ") > 0 Then Exit Sub
If Not IsNumeric(Mid(TextBox1, Len(TextBox1) - 1, 1)) And IsNumeric(Right(TextBox1, 1)) Then
TextBox1 = Left(TextBox1, Len(TextBox1) - 1) & " " & Right(TextBox1, 1)
End If
End Sub

(Ucase laisse les chiffres tels qu'ils sont, il n'est donc pas nécessaire de faire tous les testrs que j'avais sur le dernier caractère saisi!)

Voilà ce que c'est de foncer sans réfléchir!

Bonne journée. Laurent.
 

Discussions similaires

Réponses
15
Affichages
608
Réponses
17
Affichages
837
Réponses
93
Affichages
2 K

Statistiques des forums

Discussions
312 674
Messages
2 090 786
Membres
104 664
dernier inscrit
jth