[COLOR="DarkSlateGray"][B]Sub tata()
Dim i&, j&, k&
Dim sDat(), oDat, nDat&, oColl As New Collection
With Feuil1
oDat = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 2).Value
End With
nDat = UBound(oDat, 1)
For i = 1 To nDat
oDat(i, 1) = semaine(CDate(oDat(i, 1)))
On Error GoTo E
oColl.Add oDat(i, 1), CStr(oDat(i, 1))
j = j + 1
ReDim Preserve sDat(1 To 3, 1 To j)
sDat(1, j) = oDat(i, 1)
sDat(2, j) = oDat(i, 2)
sDat(3, j) = 1
R: On Error GoTo 0
Next i
For i = 1 To j
sDat(2, i) = sDat(2, i) / sDat(3, i)
Next i
Feuil2.Cells(2, 1).Resize(j, 2) = WorksheetFunction.Transpose(sDat)
Exit Sub
E:
For k = j To 1 Step -1
If oDat(i, 1) = sDat(1, k) Then
sDat(2, k) = sDat(2, k) + oDat(i, 2)
sDat(3, k) = sDat(3, k) + 1
Exit For
End If
Next
Resume R
End Sub
Function semaine(d As Date) As String
Dim ns&
d = Int(d)
ns = DateSerial(Year(d + (8 - Weekday(d, vbSunday)) Mod 7 - 3), 1, 1)
ns = ((d - ns - 3 + (Weekday(ns, vbSunday) + 1) Mod 7)) \ 7 + 1
semaine = Year(d) - (ns > 50) * (Month(d) = 1) + (ns < 5) * (Month(d) = 12) & "-W" & Right$("0" & ns, 2)
End Function[/B][/COLOR]