Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long
Dim LgFin As Long
Dim J As Long
Dim Cel As Range
If Target.Column <> 13 Then Exit Sub
With Sheets("Produit")
DerLig = .Range("D" & Rows.Count).End(xlUp).Row ' La dernière ligne dans la page Produit
.Range("E2:E" & DerLig).Copy .Range("F2") ' On copie le stock initial dans le stock final
LgFin = Range("M" & Rows.Count).End(xlUp).Row ' La dernière ligne dans la page Janvier
For J = 12 To LgFin ' Pour chaque produit
If Range("M" & J) <> "" Then ' Si la cellule M.. n'est pas vide
' On cherche dans la page "Produit" la cellule correspondante
Set Cel = .Range("D2:D" & DerLig).Find(what:=Range("M" & J), LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then ' Si trouvée
' Le stock final est égal au stock initial - x fois le produit vendu
Cel.Offset(0, 2) = Cel.Offset(0, 1) - Application.CountIf(Range("M12:M" & LgFin), Range("M" & J))
Else
MsgBox "Produit inexistant : " & Range("M" & J)
End If
End If
Next J
End With
End Sub