Private Sub Worksheet_Change(ByVal Target As Range)
Dim TSpl$(), An As Integer, Mois As Integer, Numéro As Integer
If Target.Address <> "$B$1" Then Exit Sub
Select Case VarType(Target.Value)
Case vbString
TSpl = Split(Target.Value, " ")
Numéro = TSpl(UBound(TSpl))
If UBound(TSpl) >= 1 Then Mois = TSpl(UBound(TSpl) - 1)
If UBound(TSpl) >= 2 Then An = TSpl(UBound(TSpl) - 2)
Case vbDouble
Numéro = Target.Value Mod 10000
Mois = Int(Target.Value / 10000) Mod 100
An = Int(Target.Value / 1000000)
End Select
If Mois = 0 Then Mois = Month(Date)
If An = 0 Then An = Year(Date) - Int((Mois - Month(Date)) / 12 + 0.5)
Application.EnableEvents = False
Target.Value = Format(An, "0000") & " " & Format(Mois, "00") & " " & Format(Numéro, "0000")
Application.EnableEvents = True
End Sub