Private Sub TextBox1_Change()
'1028E123
Dim nbCar As Long, caractereSaisi As String, mauvaiseSaisie As Boolean
'récupérer la longueur du texte saisi
nbCar = Len(TextBox1.Text)
'si la TextBox est vide, quitter la procédure
If nbCar = 0 Then Exit Sub
'récupérer le dernier caractère saisi dans la TextBox
caractereSaisi = Mid(TextBox1.Text, nbCar, 1)
'si il y a moins de 5 caractères et que le dernier caractère n'est pas numérique
If nbCar < 5 And Not IsNumeric(caractereSaisi) Then
mauvaiseSaisie = True
'sinon, si il y a 5 caractères
ElseIf nbCar = 5 Then
'si le dernier caractaire saisi est une lettre minuscule
If Asc(caractereSaisi) >= 97 And Asc(caractereSaisi) <= 122 Then
'le mettre en majuscule et quitter la procédure
TextBox1.Text = Left(TextBox1.Text, 4) & UCase(caractereSaisi)
Exit Sub
'sinon, si le dernier caractère n'est pas une lettre majuscule
ElseIf Asc(caractereSaisi) > 90 Or Asc(caractereSaisi) < 65 Then
mauvaiseSaisie = True
End If
'sinon, si il y a plus de 5 caractères et que le dernier n'est pas numérique
ElseIf nbCar > 5 And Not IsNumeric(caractereSaisi) Then
mauvaiseSaisie = True
End If
'si il y a eu une mauvaise saisie ou plus de 8 caractères, enlever le dernier caractère saisi
If mauvaiseSaisie Or nbCar > 8 Then TextBox1.Text = Mid(TextBox1.Text, 1, nbCar - 1)
End Sub