Bonjour,
J'ai réussis a placer mes 8 feuilles dans une variable grâce à l'exemple de Boisgontierjacques.
Voila ce que cela donne:
Sub CalcSynthese()
Dim Tbl(1 To 8) As Variant 'Tables Comptes
Dim TblRub() As Variant 'Table rubriques
Dim TblResult() As Variant 'Table résultat
Dim nlT% 'nombre de ligne de la base Tbl
Dim nlR% 'nombre de ligne de la base TblRub
Dim lT% 'ligne en cours de Tbl
Dim lR% ' ligne en cours dans TblRub
Dim Debit As Double
Dim S As Double
Dim i%, c%
Dim nl% ' Nbre ligne total
Dim An% ' année demandée
Feuil2.Select
nlR = [B5].End(xlDown).Row - 4
TblRub = Range("B5:B" & nlR + 4)
Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(nlR, 0)).ClearContents
ReDim TblResult(UBound(TblRub, 1), 1)
'Boucle sur les années
Do While ActiveCell < Year(Date) + 1
An = ActiveCell
'Boucle sur les rubriques
For lR = 1 To nlR
'Boucle sur les 8 comptes
For c = 1 To 8
nlT = Range("Compte" & c).Rows.Count
Tbl(c) = Range("Compte" & c)
'Boucle sur les enregistrements de Tbl
For lT = 1 To nlT
If TblRub(lR, 1) = Tbl(c)(lT, 5) And Year(Tbl(c)(lT, 1)) = An Then
Debit = Tbl(c)(lT, 7)
S = S + Debit
End If
Next lT
TblResult(lR, 1) = S
Next c
S = 0
Next lR
For i = 1 To UBound(TblRub, 1)
ActiveCell.Offset(i, 0) = TblResult(i, 1)
Next
ActiveCell.Offset(0, 1).Select
Loop
End Sub
Cette macro n'est pas parfaite, elle plus lente qu'une autre que j'ai faite mais qui ne cumul pas les résultats.
Bonne soirée.
Jean-Michel