Tester format texte d'une textbox

Airone784

XLDnaute Occasionnel
Bonsoir,

Après avoir cherché sur le forum, je n'ai pas trouvé la solution à mon problème, du coup je me tourne vers vous.

Dans ma userform1, j'ai une textbox qui doit contenir une chaine de caractère au format "LLL19748585" (exemple : DRF19856352) en fait dans la textbox à la fin de la saisie je dois avoir 3 lettres en premier suivi de 8 chiffres.

Je voudrais empecher les utilisateurs de taper 1 chiffre sur l'un des 3 premiers caractères de ma textbox! Voir empêcher de taper une lettre sur les 8 caractères suivants!

Merci d'avance pour votre coup de pouce très précieux.

Airone
 

Habitude

XLDnaute Accro
Re : Tester format texte d'une textbox

Bonjour


Si ta textbox ne s'appel pas textbox1
juste a changé le Me.Textbox1 par Me.NomDeTaTextBox

Code:
Option Explicit

Dim a$

Private Sub TextBox1_Change()
Dim t$, tb As Object, i%, c$
Set tb = Me.TextBox1: t = tb: tb = UCase(t)
If Len(t) >= 12 Then
    tb = a: Exit Sub
ElseIf Len(t) < 4 Then
    For i = 1 To IIf(Len(t) > 3, 3, Len(t))
        c = Asc(Mid(t, i, 1))
        If c < 65 Or (c > 90 And c < 97) Or c > 122 Then tb = a: Exit Sub
    Next i
Else
    For i = 4 To Len(t)
        c = Asc(Mid(t, i, 1))
        If c < 48 Or c > 57 Then tb = a: Exit Sub
    Next i
End If
a = t
End Sub

Il y a sans doute moyen de faire plus simple...
 

kiki29

XLDnaute Barbatruc
Re : Tester format texte d'une textbox

Habitude : Salut, pour les TextBoxes il y une propriété MaxLength qui limite le nombre de caractères pouvant être inséré
Juste une autre remarque sur IFF c'est juste un raccourci à priori séduisant mais plus lent que le If Then Else et surtout les 2 conditions sont systématiquement vérifiées et peuvent poser probleme dans certains cas
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Tester format texte d'une textbox

bonjour Airone784,kiki29,Habitude
un autre exemple en utilisant KeyDown


ps on pourrait mettre aussi
Code:
TextBox1 = UCase(TextBox1)
dans KeyDown a la place de change mais bon!!!
 

Pièces jointes

  • es.zip
    12.9 KB · Affichages: 50
  • es.zip
    12.9 KB · Affichages: 51
  • es.zip
    12.9 KB · Affichages: 55
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Tester format texte d'une textbox

Bonjour le fil :),
Une version "améliorée" de Laetitia (bises) :rolleyes:
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox1) < 3 Then
Select Case KeyAscii: Case 65 To 90: Case 97 To 122: KeyAscii = KeyAscii - 32: Case Else: KeyAscii = 0: End Select
Else
Select Case KeyAscii: Case 48 To 57: Case Else: KeyAscii = 0: End Select
End If
End Sub
Sans événement Change et un peu plus facile à gérer avec les ASCII au lieu des KeyCode :p...
Bonne journée :cool:
 

laetitia90

XLDnaute Barbatruc
Re : Tester format texte d'une textbox

re,
bonjour l'ami JNP :):):):):):) pourquoi j'ai pas pris KeyAscii a la place KeyCode moi ???? mystére horaire trop tôt au trop tard cela depend a quelle heure on se couche:p:p:p:p
en tous les cas bravo:):):):):):):):):) le petit coup du... KeyAscii = KeyAscii - 32....je connaissais pas merci:):):):):):)
bisous a+ leti
 

Habitude

XLDnaute Accro
Re : Tester format texte d'une textbox

Re

@JNP et laetita
En effet plus simple, par contre le code ne valide pas l'insertion de caractère au milieu du texte.

@kiki29
Ou ca 2 conditions ?
Tu veux probablement parler des 2 valeurs à retourner.
Car IIF est une fonction qui retourne une valeur, donc très différent du if else.
 

JNP

XLDnaute Barbatruc
Re : Tester format texte d'une textbox

Re :),
@JNP et laetita
En effet plus simple, par contre le code ne valide pas l'insertion de caractère au milieu du texte.
Oui. Comme rien n'empêche de coller n'importe quoi, ni de quitter le textbox avant la fin de la saisie :p...
Par contre, en rajoutant
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not TextBox1 Like "[A-Z][A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]" Then Cancel = True
End Sub
On empêche toute sortie du textbox s'il est non conforme :rolleyes:...
Peut-être un jour aurons-nous des nouvelles de AirOne784 qui a du s'envoler vers d'autre cieux :rolleyes:...
Bonne soirée :cool:
 

kiki29

XLDnaute Barbatruc
Re : Tester format texte d'une textbox

Salut, Habitude : extrait de l'aide en ligne sur IIF
La fonction IIf évalue toujours truepart et falsepart, même si elle ne renvoie qu'un seul de ces arguments. Vous devez donc être particulièrement attentif à certains effets secondaires indésirables de cette fonction. Par exemple, si l'évaluation de falsepart engendre une division par zéro, une erreur se produit même si la valeur de expr est True.
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T