Essaie cette nouvelle...
Sub TabHeures()
Dim H(), n%, i%, j%, hh%
With ActiveSheet
n = .Range("B" & .Rows.Count).End(xlUp).Row
hh = (.Cells(n, 2) - .Cells(2, 2)) / (1 / 24)
ReDim H(hh, 1)
For i = 0 To hh
H(i, 1) = .Cells(2, 2) + i / 24
Next i
j = -2
For i = 2 To n
If Format(.Cells(i, 2), "dd/mm/yyyy hh:mm") = Format(H(i + j, 1), _
"dd/mm/yyyy hh:mm") Then
H(i + j, 0) = .Cells(i, 1)
Else
j = j + 1
End If
Next i
.Range("F2:G2").Resize(hh + 1).Value = H
.Range("G2").Resize(hh + 1).NumberFormat = "dd/mm/yyyy hh:mm"
.Range("A1:B1").Copy .Range("F1")
End With
End Sub
J'ai dû tout de même basculer les comparaisons, ici sur des valeurs String (au lieu des arrondis sur les versions précédentes) mais c'est équivalent, je ne sais toujours pas ce qui coinçait ! Mais celle-ci va au bout (et plus rapidement, efficacité des Array !!!! un salut à Galopin sur cette méthode...)
Cordialement.