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 28 29
| Sub SommeDoublons()
Dim cLig As New Collection, c As Byte, L&, R&, VA, VR, X
With Feuil1
VA = .Cells.CurrentRegion.Value
ReDim VR(1 To UBound(VA) - 1, 1 To 4)
ReDim X(1 To UBound(VA) - 1)
For R& = 2 To UBound(VA)
X(R - 1) = VA(R, 1)
On Error Resume Next
L = cLig(X(R - 1))
On Error GoTo 0
If L Then
VR(L, 2) = VR(L, 2) + VA(R, 2)
VR(L, 3) = VR(L, 3) + VA(R, 3)
VR(L, 4) = VR(L, 4) + VA(R, 4) '
Else
L = cLig.Count + 1
cLig.Add L, X(R - 1)
For c = 1 To 4: VR(L, c) = VA(R, c): Next
End If
L = 0
Next
If cLig.Count < UBound(VR) Then
.Range("A2:D2").Resize(cLig.Count).Value = VR
.Rows(cLig.Count + 2 & ":" & UBound(VA)).Delete
End If
End With
Set cLig = Nothing
End Sub |
Partager