Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim m As String 'déclare la variable m (Mois)
Dim col As Byte 'déclare la variable col (COLonne)
Dim x As Byte 'déclare la variable x (incrément de colonne)
Dim t As Long 'déclare la variable t (Total)
Dim ent As Integer 'déclare la variable ent (ENTier)
Dim dec As Double 'déclare la variable dec (DECimal)
Dim y As Integer 'déclare la variable y (incrément)
Dim test As Boolean 'déclare la variable test
If Application.Intersect(Application.Union(Range("B11:C11"), Range("A6:L6")), Target) Is Nothing Then Exit Sub 'si le changement à lieu ailleurs qu'en B11 ou C11, sort de la procédure
m = CStr(Format(Range("B11"), "mmmm")) 'définit le mois de base m
col = Range("A5:L5").Find(m, , xlValues, xlWhole).Column + 1 'définit la colonne de départ
For x = col To 12 'boucle sur toutes des colonnes de la colonne de départ à décembre
test = False 'définit la variable test
t = t + Cells(6, x) 'définit le total t
If t > Range("C11").Value Then 'condition : si le total dépasse le stock à date
ent = y 'définit la variable ent
dec = Round(CDbl(Range("C11").Value - (t - Cells(6, x).Value)) / Cells(6, x), 2) 'définit la variable dec
Exit For 'sort de la boucle
Else 'sinon
test = True 'redéfinit la variable test
ent = 12 - col
End If 'fin de la condition
y = y + 1 'incrément y
Next x 'prochaine colonne de la boucle
Range("H11").Value = IIf(test = True, ">= " & ent, CDbl(ent + dec)) 'place le résultat en H11
End Sub