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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| Private Sub CommandButton10_Click()
Dim LastLig As Long, i As Long, j As Long, n As Long
Dim Dico As Object
Dim Tmp As String
Dim Res(), Tbl, T
With Me.LstMot
If .ListIndex > -1 Then
n = UBound(Tb, 1)
Set Dico = CreateObject("Scripting.Dictionary")
For i = 0 To .ListCount - 1
If .Selected(i) Then
Tmp = .List(i)
For j = 1 To n
If Tb(j, 3) = Tmp Then
If Not Dico.exists(Tb(j, 4)) Then
Dico.Add Tb(j, 4), Tb(j, 4) & "|" & Tb(j, 5) & "|" & Tb(j, 6) & "|" & Tb(j, 7)
Else
Dico(Tb(j, 4)) = Som(Dico(Tb(j, 4)), Tb(j, 7))
End If
End If
Next j
End If
Next i
n = Dico.Count
If n > 0 Then
Tbl = Dico.items
ReDim Res(1 To n, 1 To 4)
For i = 1 To n
T = Split(Tbl(i - 1), "|")
Res(i, 1) = T(0)
Res(i, 2) = T(1)
Res(i, 3) = T(2)
Res(i, 4) = Val(T(3))
Next i
With Feuil1
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
If LastLig > 6 Then .Range("A7:D" & LastLig).ClearContents
.Range("A7").Resize(n, 4) = Res
End With
End If
Set Dico = Nothing
Unload Me
End If
End With
End Sub
Private Function Som(ByVal Str As String, ByVal Q As Double) As String
Dim Tbl
Tbl = Split(Str, "|")
Som = Tbl(0) & "|" & Tbl(1) & "|" & Tbl(2) & "|" & CStr(Val(Tbl(3)) + Q)
End Function |