Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim M As Variant 'déclare la variable M (Mois)
Dim MD As Long 'déclare la variable MD (Mois Début)
Dim MF As Long 'déclare la variable MF (Mois Fin)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DR As Long 'déclare la variable DR (Date de Référence)
Dim K As Byte 'déclare la variable K (incrément)
Dim T As Double 'déclare la variable T (Total)
Set OS = Worksheets("Feuil1") 'définit l'onglet source OS (à adapter à ton cas)
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD (à adapter à ton cas)
OD.Range("A1").CurrentRegion.ClearContents 'efface d'éventuelles anciennes moyennes
For M = 1 To 12 'boucle 1 : sur les 12 mois M de l'année
MD = CLng(DateSerial(Year(Date), M, 1)) 'définit le premier jour du mois (en entier long)
MF = CLng(DateSerial(Year(Date), M + 1, 0)) 'définit le dernier jour du mois (en entier long)
For I = 2 To UBound(TV, 1) 'boucle 2 sur toutes les lignes I du tableau des valeurs (en partant de la seconde)
DR = CLng(DateSerial(Year(TV(I, 6)), Month(TV(I, 6)), Day(TV(I, 6)))) 'définit la date de référence DR de la ligne de la boucle en entier long
If DR >= MD And DR <= MF Then 'condition : si la date est comprise entre le premier et le dernier jour du mois M
K = K + 1 'incémente K
T = T + CDbl(TV(I, 12)) 'recalcule le total T
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 2
OD.Cells(M, 1).Value = "Moyenne du mois de " & Format("1/" & M & "/" & Year(Date), "mmmm") 'renvoie le texte dans la cellule ligne M colonne 1 de l'onglet OD
If K = 0 Then OD.Cells(M, 2) = 0 Else OD.Cells(M, 2) = CDbl(T / K) 'renvoie la moyenne dans la cellule ligne M colonne 2 de l'onglet OD
T = 0: K = 0 'réinitialises les variable K et T
Next M 'prochain mois de la boucle 1
End Sub