Private test As Boolean 'déclare la variable test
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim nb As Byte 'déclare la variable nb (NomBre)
Dim nos As String 'déclare la variable nos (Nom des OngletS)
Dim cel As Range 'déclare la variable cel (CELlule)
If Target.Address <> "$A$2" Then Exit Sub 'si la changement a lieu ailleurs qu'en A2, sort de la procédure
If test = True Then Exit Sub 'si test est vrai, sort de la procédure (évite de boucler sur cette procédure)
Application.ScreenUpdating = False 'masque les changements à l'écran
test = True 'définit la variable test
nb = CByte(Left(Target, 1)) 'définit de nombre de mois à cumuler
nos = "Janvier:" & Sheets(nb).Name & "!" 'définit le nom des onglets
For Each cel In Range("D2:D34,F2:F34,H2:H34,J2:K34") 'boucle sur toutes les cellules où le cumul doit être fait
cel.FormulaR1C1 = "=SUM(" & nos & "RC)" 'ecrit la formule dans la cellule
Next cel 'prochaine cellule de la boucle
test = False 'réinitialise la variable test
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub