Sub cumul()
Dim tablib(35) As String 'Tableau contenant les libellés
Dim TabA(12, 35) As Single 'Tableau pour totaliser les prestations
Dim TabB(12, 35) As Single 'Un par unité territoriale
Dim TabC(12, 35) As Single
Dim TabD(12, 35) As Single
Dim tablo As Variant 'Tableau pour récupérer les valeurs de la requête
Dim i As Long, j As Integer
' Chargement des libellés des cellules B1 à AK1
' dans le tableau des libellés
For i = 2 To 36 'i=2 pour commencer en colonne B
tablib(i - 2) = Worksheets("Valeur").Cells(1, i).Value '(i-2) car le 1er index est 0
Next i
'Tablo va contenit toute les données renvoyées par la requête
tablo = Worksheets("RQT").Range("A2").CurrentRegion
For i = 2 To UBound(tablo) 'Pour chaque ligne de la requête à partir de 2
'on recherche le libellé dans la table lib
For j = 0 To 34
If tablo(i, 2) = tablib(j) Then Exit For 'la valeur de J représente l'index du libellé
Next j
'tablo(i, 1) contient le code unité teritoriale
'Selon sa valeur on va totaliser les résultats
'dans les tables TABA à TABD
Select Case tablo(i, 1)
Case "A"
'tablo(i, 4) contient le n° de mois et on fait -1 pour le 1er index à 0
'==> 0 =Janvier, 1=février...
'et j est la colonne du libellé
TabA(tablo(i, 4) - 1, j) = TabA(tablo(i, 4), j) + tablo(i, 5) 'on ajoute la valeur de la prestation
Case "B"
TabB(tablo(i, 4) - 1, j) = TabB(tablo(i, 4), j) + tablo(i, 5)
Case "C"
TabC(tablo(i, 4) - 1, j) = TabC(tablo(i, 4), j) + tablo(i, 5)
Case "D"
TabD(tablo(i, 4) - 1, j) = TabD(tablo(i, 4), j) + tablo(i, 5)
Case Else
End Select
Next i
'Une fois tous les tableaux remplis, il ne reste
'qu'à les coller dans la feuille "Valeur"
With Worksheets("Valeur")
.Range("B3:AJ14") = TabA 'TABA à partir de B3
.Range("B17:AJ28") = TabB 'TABB à partir de B17
.Range("B31:AJ42") = TabC 'etc...
.Range("B45:AJ56") = TabD
End With
'...Et c'est terminé.
End Sub