• Initiateur de la discussion Initiateur de la discussion G'Claire
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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.
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
118
  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
313
Retour