Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, [A:A], UsedRange) 'colonne A, à adapter
If Target Is Nothing Then Exit Sub
Dim t$, i%
For Each Target In Target 'si entrées multiples (copier-coller)
t = UCase(CStr(Target))
For i = 1 To Len(t)
If Not Mid(t, i, 1) Like "[A-Z,0-9]" Then
Application.EnableEvents = False 'désactive les évènements
Application.Undo 'annule l'entrée
Application.EnableEvents = True 'réactive les évènements
Exit Sub
End If
Next i, Target
End Sub