Une autre façon de faire, un peu plus lente, certainement...
Private Sub cmdSPLIT_Click()
'
Dim tData, tTab, iRow%, iCol%
'
Application.ScreenUpdating = False
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
iCol = Cells(1, Columns.Count).End(xlToLeft).Column
tTab = Range("A1:B" & iRow).Value
On Error Resume Next
For x = 2 To UBound(tTab, 1)
If tTab(x, 1) <> "" And tTab(x, 2) <> "" Then
iTCol = Rows(1).Find(what:=CDate(tTab(x, 1)), lookat:=xlWhole, LookIn:=xlFormulas, searchdirection:=xlNext).Column - 4
If Not iTCol Is Nothing Then
tData = Range("D" & x).Resize(1, iTCol).Value
For y = 1 To UBound(tData, 2)
If Trim(tData(1, y)) <> "" Then tData(1, y) = CDbl(CLng(tData(1, y)) / CInt(tTab(x, 2)))
Next
Range("D" & x).Resize(1, iTCol).Value = tData
End If
End If
Next
On Error GoTo 0
'
Application.ScreenUpdating = True
'
End Sub
A+