Bonjour,
Une proposition à étudier.
Cdlt.
Option Explicit
Public Sub DEMO()
Dim wb As Workbook
Dim wsData As Worksheet, wsTable As Worksheet
Dim tbl As Variant, Arr() As Variant
Dim Table As ListObject
Dim rStart As Range
Dim I As Long, J As Long, k As Long
Dim n As Long, m As Long
Application.ScreenUpdating = False
Set wb = ActiveWorkbook
Set wsData = wb.Worksheets("Données brutes")
tbl = wsData.ListObjects(1).DataBodyRange.Value
Set wsTable = wb.Worksheets("Données normalisées")
Set Table = wsTable.ListObjects(1)
With Table
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
Set rStart = .InsertRowRange.Cells(1)
End With
For I = 1 To UBound(tbl)
n = CDate(tbl(I, 5)) - CDate(tbl(I, 4)) + 1
m = 0
For J = 1 To n
ReDim Preserve Arr(4, k + 1)
Arr(0, k) = CLng(tbl(I, 4) + m)
Arr(1, k) = tbl(I, 1)
Arr(2, k) = tbl(I, 2)
Arr(3, k) = tbl(I, 3)
k = k + 1
m = m + 1
Next J
Next I
rStart.Resize(UBound(Arr, 2), 4).Value = Application.Transpose(Arr)
Erase Arr
End Sub