TextBox - Format 1 Caractere et 7 chiffres

Bonjour à tous,

Je suis bloqué sur un petit problème de format pour une de mes TextBox

J'ai une textbox qui me permet de renseigner des numéro de dossier.

Chaque dossier a un numéro unique et doit obligatoirement être au format suivant

  • 8 Caractères Max
  • le premier Caractères doit être obligatoirement une lettre en majuscule (donc de A à Z)
  • les 7 Caractères suivant des Chiffres

J'arrive parfaitement à limiter le nombre de caractère à 8 avec la fonction "MaxLenght = 8

J'arrive à faire en sorte de saisir uniquement des chiffres avec le code suivant

[...]

If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0

End If

[...]

J'arrive aussi a mettre le premier caractère en Majuscule, avec le code suivant :

[...]

Dim Saisie As String

Saisie = TextBox01.Text

TextBox01.Text = UCase(Mid(Saisie, 1, 1)) & Mid$(st, 2, Len(Saisie))

TextBox01.SelStart = Len(Saisie)

[...]

mais je bloque sur la combinaison de tout ça...

pourriez vous me venir en aide s'il vous plait ou me donner des pistes ? ?

d'avance merci à vous

Bonsoir,

voici un (des) code que vous pouvez mettre sur votre TextBox :

Public En_cours As Boolean
Private Sub TextBox1_Change()
    If En_cours = False Then
        En_cours = True
        ' vérification du premier caractère
        If Len(TextBox1) = 1 Then
            If (Asc(TextBox1) >= 97 And Asc(TextBox1) <= 122) Or (Asc(TextBox1) >= 65 And Asc(TextBox1) <= 90) Then
                TextBox1.Value = UCase(TextBox1)
                Exit Sub
            Else
                TextBox1 = ""
                Exit Sub
            End If
        ' vérification de la longueur
        ElseIf Len(TextBox1) > 8 Then
            TextBox1 = Left(TextBox1, 8)
            Exit Sub
        ' vérification que ce sont des chiffres
        ElseIf Asc(Right(TextBox1, 1)) >= 48 And Asc(Right(TextBox1, 1)) <= 56 Then
            En_cours = False
            Exit Sub
        ' sinon on enlève la dernière "entrée"
        Else
            TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
            Exit Sub
        End If
    Else
        En_cours = False
    End If
End Sub

Principe :

on teste si le premier caractère est une lettre, si c'est le cas on la passe en majuscule, sinon on efface, ensuite on teste la longueur total, si elle dépasse 8 alors on la réduit à 8, ensuite on vérifie que les caractères après le premier sont bien des chiffres, si ce n'est pas le cas on efface la dernière entrée, sinon on efface la dernière entrée.

Le fait de changer la valeur du TextBox fait le la SUB TextBox_Change est relancée, afin que les tests ne soient pas une nouvelle fois effectués, une "porte" En_cours est gérée afin d'autoriser l'accès aux tests ou pas.

@ bientôt

LouReeD

Ho la classe !! merci LouReed !!!!

Je vais décortiquer le code (avec tes explication en dessous ca va aider) et le tester de ce pas !!

Je viens de tester le code, il marche à la perfection !!

Encore une fois mille merci à toi !!!!

De plus grâce à tes commentaires dans le code et ton explication sur le post, j'ai compris ce que tu as fait sans aucunes difficultés

Simple information complémentaire

Tu as de ton côté, au niveau de ton code, tu contrôles que la longueur maximum ne dépasse pas 8 caractères.

Dans mon code au niveau de mon "UserForm_Initialize()", j'ai positionné la longueur max de mon TextBox "Reférence Dossier" à 8 avec le code REF_DOSSIER.MaxLength = 8

Du coup, il y a un "double contrôle" et/ou restriction.

D'un point de vue "efficacité",qu'elle pratique est la mieux ?

Le fait d'avoir ce double contrôle n'est il pas "gênant"?

merci à vous pour votre futur réponse

Bonsoir,

Merci pour votre merci ! et en plus j'ai droit à la "classe" alors que dire ?

En fait du coup vous pouvez supprimer le test de longueur, c'est plus propre.

@ bientôt

LouReeD

Rechercher des sujets similaires à "textbox format caractere chiffres"