Option Explicit
Sub test()
Dim x, a, b(), i As Long, n As Long, pos
With Sheets("F1").Cells(1).CurrentRegion
a = .Value
x = Filter(.Parent.Evaluate("transpose(if(countif(offset(" & .Columns(16).Address & _
",,,row(1:" & .Rows.Count & "))," & .Columns(16).Address & ")=1, " & _
.Columns(16).Address & ",char(2)))"), Chr(2), 0)
ReDim b(1 To .Rows.Count, 1 To UBound(x) + 1)
b(1, 1) = "Heures/Ville"
For i = 1 To UBound(x)
b(1, i + 1) = x(i)
Next
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For i = 2 To UBound(a, 1)
If Not .exists(a(i, 19)) Then
.Item(a(i, 19)) = .Count + 2
b(.Item(a(i, 19)), 1) = a(i, 19)
End If
If a(i, 5) = Sheets(1).Range("V2").Value Then
pos = Application.Match(a(i, 16), x, 0)
b(.Item(a(i, 19)), pos) = b(.Item(a(i, 19)), pos) + a(i, 11)
End If
Next
n = .Count + 1
End With
End With
Application.ScreenUpdating = False
'Restitution
With Sheets("Résultats").Cells(1)
.Parent.Cells.Clear
.Resize(n, UBound(b, 2)).Value = b
With .CurrentRegion
.Font.Name = "calibri"
.Font.Size = 10
.VerticalAlignment = xlCenter
.BorderAround Weight:=xlThin
.Borders(xlInsideVertical).Weight = xlThin
.Columns(1).NumberFormat = "hh:mm"
With .Rows(1)
.Interior.ColorIndex = 44
.BorderAround Weight:=xlThin
.HorizontalAlignment = xlCenter
End With
.Columns(1).ColumnWidth = 13
For i = 2 To .Columns.Count
.Columns(i).ColumnWidth = 10
Next
'.Columns("a:e").ColumnWidth = Array(13, 11, 11, 11, 11)
End With
.Parent.Activate
End With
Application.ScreenUpdating = True
End Sub