Obliger la saisie d'une chaîne de caractères personnalisée dans TextBox

Bonjour,

J'ai deux TextBox dans un UserForm pour lesquelles je souhaiterai obliger une saisie de caractères, comme indiquée ci-dessous :

- La TextBox1 doit recevoir une chaîne de caractères qui commence par la lettre "A" suivie de deux chiffres, puis le tiret du 6, puis pour le reste de la chaîne des chiffres :

(exemple : A12-12558).

- La TextBox2 doit quant à elle commencer par les 4chiffres d'une année, puis le tiret du 6, puis le reste des caractères en alphanumérique ;

(exemple : 2021-AHA0302)

L'objectif est que si un collarateur ne respecte pas ce format, il est averti avec un msgbox.

Merci par avance pour votre aide.

Bonne journée

Bonjour,

sous USF vous avez la propriété "Change" du textBox, vous pouvez y associer un code de vérification en fonction du nombre de caractères entré.
If Len(TextBox) = 4 And Mid(Textbox,4,1)<>"-" Then MsgBox("Erreur sur le caractère").

Un peu lourd peut-être ?

Sinon vous pouvez mettre le "-" automatiquement :
If len(Textbox)=3 then textbox = textbox & "-"

Tout comme pour le "A", dès que l'on entre une donnée dans le textbox alors le A est ajouté, comme cela vous verrouillez le remplissage aux "chiffres" de 0 à 9, le A est ajouté et le "-" également.

Dans votre exemple on tape 1, le code affiche A1, puis on tape 2, le code affiche A12-, puis on tape des chiffres et le code limite la saisie à 9 caractères.

Ce ne sont là que des idées, il y a aussi la vérification après saisie avec un système de format prédéfinie (je ne connait plus le terme...)

@ bientôt

LouReeD

Bonjour,

un exemple de code pour le premier TextBox :

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(TextBox1) = 9 Then KeyAscii = 0: Beep: Exit Sub
    If InStr("1234567890", Chr(KeyAscii)) = 0 Then
        KeyAscii = 0: Beep
    Else
        If Len(TextBox1) = 0 Then TextBox1 = "A"
        If Len(TextBox1) = 3 Then TextBox1 = TextBox1 & "-"
    End If
End Sub

@ bientôt

LouiReeD

Bonjour LouReed,

Pour le TextBox1, merci beaucoup cela fonctionne très bien, me reste à résoudre le cas de la TextBox2.

Mickaël

Bonjour,

Voici une proposition pour la textbox2 :

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(TextBox2) = 12 Then KeyAscii = 0: Beep: Exit Sub
    If Len(TextBox2) <= 4 Then
        If InStr("1234567890", Chr(KeyAscii)) = 0 Then
            KeyAscii = 0: Beep
        Else
            If Len(TextBox2) = 4 Then TextBox2 = TextBox2 & "-"
        End If
    Else
        If InStr("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
    End If
End Sub

ne contrôle pas la véracité de l'année, ne permet que les chiffres dans un premier temps, ensuite permet les chiffres et les majuscules alphanumériques.

@ bientôt

LouReeD

Bonsoir,

Je viens de tester votre code pour la TextBox2. Pour les 4 premiers chiffres de l'année, cela fonctionne bien, mais après le tiret, je n'ai pas la possibilité de saisir des lettres comme dans mon exemple (2021-AHA302).

MICKAEL

Je vérifie que ce sont des majuscules... Il faut verrouiller le clavier.

@ bientôt

LouReeD

Rechercher des sujets similaires à "obliger saisie chaine caracteres personnalisee textbox"