Salut ialvarezde,
ma contribution à ton travail!
Ici, sans connaître ton fichier de données, j'imagine et je tiens compte d'une éventuelle absence des particularités recherchées, D ou ct, voire d'une position inversée par rapport aux maigres lignes que tu nous montres.
- ct ? Parfois avant, parfois après D ?
- le nombre avec décimales : de 0 à... 10, 100... ? Pas la même chose à programmer...
- le nombre qui précède D : toujours < 100 ?
Un double-clic démarre la macro qui devra être adaptée si tu as une ligne de titres.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tData
Cancel = True
'
Columns("B:C").ClearContents
tData = Range("A1:C" & Range("A" & Rows.Count).End(xlUp).Row).Value
'
For x = 1 To UBound(tData, 1)
sData = tData(x, 1)
For y = InStrRev(sData, "ct") - 1 To 1 Step -1
If Not IsNumeric(Mid(sData, y, 1)) And Mid(sData, y, 1) <> "." Then Exit For
tData(x, 3) = Mid(sData, y, 1) & tData(x, 3)
Next
For y = 1 To Len(sData)
If (Asc(Mid(sData, y, 1)) > 47 And Asc(Mid(sData, y, 1)) < 58) And Mid(sData, y + 1, 1) = "D" And InStrRev(Left(sData, y), Chr(32)) + 1 > 1 Then _
tData(x, 2) = Mid(sData, InStrRev(Left(sData, y), Chr(32)) + 1, y - (InStrRev(Left(sData, y), Chr(32)))) & tData(x, 2): Exit For
Next
Next
Range("A1").Resize(UBound(tData, 1), 3) = tData
Columns("A:C").AutoFit
'
End Sub
A+