Option Explicit
Sub test()
Dim a, w(), col As Byte, txt As String, i As Long, dico As Object, ws As Worksheet
Set dico = CreateObject("Scripting.Dictionary")
dico.CompareMode = 1
col = 5
Application.ScreenUpdating = False
For Each ws In Worksheets
If ws.Name Like "Résultats*" Then
a = ws.Range("a1").CurrentRegion.Value
col = col + 2
For i = 4 To UBound(a, 1)
txt = Join$(Array(a(i, 3), a(i, 4), a(i, 5)), Chr(2))
If Not dico.exists(txt) Then
dico.Item(txt) = _
VBA.Array(Empty, "N° xx", a(i, 3), a(i, 4), a(i, 5), _
Empty, Empty, Empty, Empty, Empty, Empty, _
Empty, Empty, Empty, Empty, Empty, Empty, _
Empty, Empty, Empty, Empty, Empty, Empty)
End If
w = dico.Item(txt)
w(5) = w(5) + 1
If IsNumeric(a(i, 7)) Then w(6) = w(6) + a(i, 7)
w(col) = a(i, 6): w(col + 1) = a(i, 7)
dico.Item(txt) = w
Next
End If
Next ws
With Sheets("Recap").Range("a1").CurrentRegion
With .Offset(2)
.ClearContents
If dico.Count > 0 Then
.Resize(dico.Count) = Application.Transpose(Application.Transpose(dico.items()))
End If
End With
End With
Set dico = Nothing
Application.ScreenUpdating = True
End Sub