Salut,
Essayes ça et dis moi si cela convient.
Private Sub TextBox1_Change()
Dim montexte As String
montexte = UserForm1.TextBox1.Value
Select Case Len(montexte)
Case 1, 2
If Asc(UCase(Mid(montexte, Len(montexte), 1))) <= 64 Or Asc(UCase(Mid(montexte, Len(montexte), 1))) >= 91 Then montexte = Mid(montexte, 1, Len(montexte) - 1)
Case 3
If Mid(montexte, Len(montexte), 1) <> "-" Then montexte = Mid(montexte, 1, Len(montexte) - 1) & "-"
Case 4, 5, 6
If IsNumeric(Mid(montexte, Len(montexte), 1)) = False Then montexte = Mid(montexte, 1, Len(montexte) - 1)
Case 7
If Mid(montexte, Len(montexte), 1) <> "-" Then montexte = Mid(montexte, 1, Len(montexte) - 1) & "-"
Case 8, 9
If Asc(UCase(Mid(montexte, Len(montexte), 1))) <= 64 Or Asc(UCase(Mid(montexte, Len(montexte), 1))) >= 91 Then montexte = Mid(montexte, 1, Len(montexte) - 1)
End Select
UserForm1.TextBox1.Value = montexte
End Sub
++
Bigdams