Const NomFichier$ = "logiciel.xls"
Const NomFeuille$ = "A"
Sub HorsTaxe()
Dim T, Temp
With Workbooks(NomFichier).Sheets(NomFeuille)
T = Range(.[A2 ], .[D65536].End(xlUp))
End With
'On récupères les doublons de des comptes
'puis des fonds de caisses
Temp = Recap(T, Entetes(RecupDoublons(T, 1), RecupDoublons(T, 4)))
[C7].Resize(UBound(Temp), UBound(Temp, 2)) = Temp
End Sub
Function RecupDoublons(T, ByVal ColT As Byte) 'Zon
Dim I&, J&, Tablo As New Collection, Temp()
For I = LBound(T, 1) To UBound(T, 1)
On Error Resume Next
Tablo.Add T(I, ColT), CStr(T(I, ColT))
If Err = 0 Then
ReDim Preserve Temp(J)
Temp(J) = T(I, ColT)
J = J + 1
End If
Next I
RecupDoublons = Temp
End Function
Function Entetes(T1, T2)
Dim Temp()
ReDim Temp(1 To UBound(T1) + 2, 1 To UBound(T2) + 2)
For I = 0 To IIf(UBound(T1) > UBound(T2), UBound(T1) + 1, UBound(T2) + 1)
On Error Resume Next
Temp(I + 2, 1) = T1(I)
Temp(1, I + 2) = T2(I)
Next I
On Error GoTo 0
Entetes = Temp
End Function
Function Recap(T, Temp)
Dim I&, J&, K&
For I = LBound(T) To UBound(T)
For J = LBound(Temp) To UBound(Temp)
If T(I, 1) = Temp(J, 1) Then
For K = LBound(Temp, 2) To UBound(Temp, 2)
If T(I, 4) = Temp(1, K) Then
Temp(J, K) = Temp(J, K) + T(I, 2)
End If
Next K
End If
Next J
Next I
Recap = Temp
End Function