Un essai à tester. Te convient-il ?
Option Explicit
Dim ms, tablo1, tablo2, tabloR()
Dim i&, n&, moisEnC$, moisPrec$
Sub MettreAjour()
ms = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", _
"Août", "Septembre", "Octobre", "Novembre", "Décembre")
moisEnC = Range("B2")
For n = 0 To 11
If ms(n) = moisEnC Then
If n = 0 Then
moisPrec = ms(11)
Else
moisPrec = ms(n - 1)
End If
Exit For
End If
Next n
tablo2 = Range("D6:D" & Range("D" & Rows.Count).End(xlUp).Row)
Range("B2") = moisPrec
tablo1 = Range("D6:D" & Range("D" & Rows.Count).End(xlUp).Row)
Range("B2") = moisEnC
ReDim tabloR(1 To UBound(tablo2, 1), 1 To 1)
For i = 1 To UBound(tablo2, 1)
If tablo2(i, 1) <> "" And IsNumeric(tablo2(i, 1)) And tablo1(i, 1) <> 0 Then
tabloR(i, 1) = (tablo2(i, 1) - tablo1(i, 1)) / tablo1(i, 1)
End If
Next i
Range("L6").Resize(UBound(tablo2, 1), 1) = tabloR
End Sub
Bye !