Salut Maureen-deb,
Salut Ausecour,
Toute la difficulté de ce genre d'exercice repose sur la connaissance approximative des exceptions rencontrées au hasard des données.
Au mieux, ici, en fonction de ce qui est montré dans les exemples.
Un double-clic sur la feuille démarre la macro.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tData, tSplit, tExtract(), iIdx
'
Cancel = True
'
tData = Range("A4:A" & Range("A" & Rows.Count).End(xlUp).Row)
For x = 1 To UBound(tData, 1)
iIdx = iIdx + 1
ReDim Preserve tExtract(6, iIdx)
tSplit = Split(tData(x, 1), " ")
tExtract(0, iIdx - 1) = tSplit(0)
tExtract(1, iIdx - 1) = IIf(Asc(Right(tSplit(1), 1)) < 95, tSplit(1), tSplit(2))
tExtract(2, iIdx - 1) = IIf(Asc(Right(tSplit(2), 1)) > 95, tSplit(2), tSplit(1))
For y = UBound(tSplit) To 3 Step -1
If IsNumeric(Left(tSplit(y), 4)) And Len(tSplit(y)) >= 4 Then
For Z = 3 To y - 1
tExtract(3, iIdx - 1) = tExtract(3, iIdx - 1) & IIf(tExtract(3, iIdx - 1) = "", tSplit(Z), " " & tSplit(Z))
Next
tExtract(4, iIdx - 1) = Left(tSplit(y), 4)
If Len(tSplit(y)) > 4 Then
tExtract(5, iIdx - 1) = Right(tSplit(y), Len(tSplit(y)) - 5)
Else
For Z = y + 1 To UBound(tSplit)
tExtract(5, iIdx - 1) = tExtract(5, iIdx - 1) & IIf(tExtract(5, iIdx - 1) = "", tSplit(Z), " " & tSplit(Z))
Next
End If
Exit For
End If
Next
Next
Range("B4").Resize(iIdx, 6).Value = WorksheetFunction.Transpose(tExtract)
'
End Sub
A+