1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Private Sub Worksheet_Change(ByVal Target As Range)
Dim msg_err, Buffer
If Target.Count > 1 Or Target = "" Or Not (Not Target.Column <> 4 Or _
Not Target.Column <> 52) Then Exit Sub
Application.EnableEvents = False
Select Case Target.Column
Case 4
'Traitement colonne 4
Buffer = UCase(Target) 'éviter le test Minuscule
Select Case Len(Buffer)
Case 2
If Not (Buffer Like "##") Then msg_err = "Please enter 2 Digits or 2 Digits and 1 Char "
Case 4
If Not (Buffer Like "####") Then msg_err = "Please enter 2 Digits or 2 Digits and 1 Char "
Case 3
If Not Left(Buffer, 2) Like "##" Or _
Buffer Like "##[I]" Or Buffer Like "##[O]" Then msg_err = "2 Digits and 1 Char "
Case 5
If Not Left(Buffer, 4) Like "####" Or _
Buffer Like "####[I]" Or Buffer Like "####[O]" Then msg_err = "4 Digits and 1 Char "
Case Else
msg_err = "Please enter 2 Digits or 2 Digits and 1 Char " & chr(13) & "Or 4 digits or 4 digits and 1 car"
End Select
If msg_err <> "" Then
MsgBox msg_err, vbCritical + vbOKOnly, "Data : Error"
Target.ClearContents
Target.Select
Else
Target = Buffer
End If
Case 52
'Traitement colonne 52
Target = UCase(Target)
End Select
Application.EnableEvents = True
End Sub |