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
| Sub SousTotal()
Dim a()
Dim b()
' on prend les trois colonnes
a = Range("A2:C" & [a65000].End(xlUp).Row)
' on crée un tableau de même taille
ReDim b(1 To UBound(a), 1 To 3)
' pour descendre dans les lignes du tableau a
i = 1
' pour monter dans les lignes du tableau b
j = 0
' tant qu'on a pas dépassé les lignes de a
Do While i <= UBound(a)
' on descend d'une ligne dans b
j = j + 1
' la colonne 1 de b reçoit la valeur de a
b(j, 1) = a(i, 1)
' si 2015 alors colonne 2
If a(i, 2) = 2015 Then
Do While a(i, 1) = b(j, 1)
' la colonne 2 de b reçoit la valeur de a
b(j, 2) = b(j, 2) + a(i, 3)
i = i + 1
If i > UBound(a) Then Exit Do
Loop
'si 2016
Else
Do While a(i, 1) = b(j, 1)
'la colonne 3 de b reçoit la valeur de a
b(j, 3) = b(j, 3) + a(i, 3)
i = i + 1
If i > UBound(a) Then Exit Do
Loop
End If
Loop
' écriture de b en colonne F,G,H
[F2].Resize(UBound(b), UBound(b, 2)) = b
End Sub |
Partager