A tester :
Sub GénérerTablo()
Dim Tbl(), d As Object, dD As Object, dc As Object, k, kc, n%, i%
Set d = CreateObject("Scripting.Dictionary")
Set dD = CreateObject("Scripting.Dictionary")
Set dc = CreateObject("Scripting.Dictionary")
With Worksheets("Feuil1")
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To n
k = .Cells(i, 4).Value2: kc = .Cells(i, 3)
dD(k) = "": dc(kc) = "": k = k & "|" & kc
If d.exists(k) Then
d(k) = d(k) & Chr(10) & .Cells(i, 1)
Else
d(k) = .Cells(i, 1)
End If
Next i
End With
ReDim Tbl(dD.Count, dc.Count)
Tbl(0, 0) = "DATE": n = 0: i = 0
For Each k In dD.keys
n = n + 1: Tbl(n, 0) = k
Next k
For Each kc In dc.keys
i = i + 1: Tbl(0, i) = kc
Next kc
For n = 1 To UBound(Tbl, 1)
For i = 1 To UBound(Tbl, 2)
k = Tbl(n, 0) & "|" & Tbl(0, i)
If d.exists(k) Then Tbl(n, i) = d(k)
Next i
Next n
n = UBound(Tbl, 1) + 1: i = UBound(Tbl, 2) + 1
kc = RGB(221, 235, 247)
Application.ScreenUpdating = False
With Worksheets.Add(after:=Worksheets("Feuil1"))
.Rows(1).RowHeight = 42
.Rows(3).Resize(n - 1).RowHeight = 115
.Columns(2).Resize(, i - 1).ColumnWidth = 29
With .Range("A2").Resize(n, i)
.Value = Tbl
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Borders.Weight = xlThin
.Font.Size = 8
.Rows(1).Interior.Color = kc
With .Columns(1)
.Interior.Color = kc
.NumberFormat = "dd/mm/yyyy"
End With
End With
End With
End Sub
Cordialement.