Private Sub Worksheet_Change(ByVal Target As Range)
'---Convertit un nombre de 7 ou 8 chiffres en date---
Dim d As Variant
If Not (Intersect(Range("C3:C14"), Target) Is Nothing) And Not Target.Value2 Like "*/*" And Target.Count = 1 Then
d = CStr(Target.Value2)
ActiveSheet.Unprotect "123"
If IsNumeric(d) Then
Select Case True
Case Len(CStr(d)) = 5: d = DateValue(Format(d, "0/00/00"))
Case Len(CStr(d)) = 6: d = DateValue(Format(d, "00/00/00"))
Case Len(CStr(d)) = 7: d = DateValue(Format(d, "0/00/0000"))
Case Len(CStr(d)) = 8: d = DateValue(Format(d, "00/00/0000"))
End Select
With Target
If IsDate(d) Then
Application.EnableEvents = False
.NumberFormat = "dd/mm/yyyy": .Value = d
Else
.NumberFormat = "General": .Value = d
End If
ActiveSheet.Protect "123"
End With
End If
End If
Application.EnableEvents = True
End Sub