1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Sub DemoC()
Dim cLig As New Collection, C As Byte, L&, R&, VA, VR
With Feuil1
VA = .Cells(1).CurrentRegion.Value
If UBound(VA, 2) < 5 Then Beep: Exit Sub
ReDim VR(1 To UBound(VA) - 1, 1 To 5)
For R = 2 To UBound(VA)
On Error Resume Next
L = cLig(VA(R, 2))
On Error GoTo 0
If L Then
VR(L, 4) = VR(L, 4) + VA(R, 4)
VR(L, 5) = VR(L, 5) + VA(R, 5)
Else
L = cLig.Count + 1
cLig.Add L, VA(R, 2)
For C = 1 To 5: VR(L, C) = VA(R, C): Next
End If
L = 0
Next
If cLig.Count < UBound(VR) Then
.[A2:E2].Resize(cLig.Count).Value = VR
.Rows(cLig.Count + 2 & ":" & UBound(VA)).Delete
End If
End With
Set cLig = Nothing
End Sub |
Partager