Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim interdit$, L%, i%, x$
interdit = "<>:""/\|?*"
L = Len(interdit)
Set Target = Intersect(Target, Sh.UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target.Areas 'si entrées multiples (copier-coller)
For i = 1 To L
x = Mid(interdit, i, 1)
If i > L - 2 Then x = "~" & x 'tilde devant les caractères génériques ? et *
If Application.CountIf(Target, "*" & x & "*") Then
Target.Select
Target.Find(x, , xlValues, xlPart).Activate
MsgBox "Caractère interdit !", 48
Application.EnableEvents = False 'désactive les évènements
Application.Undo 'annule l'entrée
Application.EnableEvents = True 'réactive les évènements
Exit For
End If
Next i, Target
End Sub