Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
Option Explicit
Dim fo As Worksheet
Dim ln&, x!, s&
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.CountLarge > 1 Then Exit Sub
If Target.Row > 2 And Target.Column = 7 Then
Application.EnableEvents = False
Set fo = Sheets("OldStock2021-2022")
If Range("B" & Target.Row) <> "" And Range("F" & Target.Row) <> "" Then
ln = WorksheetFunction.Match(Target.Offset(0, -5), fo.Range("C:C"), 0)
x = fo.Cells(ln, 5) 'Stok initial sur la feuille OldStock2021-2022
Cells(Target.Row, 3) = fo.Range("D" & ln) 'Description
Cells(Target.Row, 4) = fo.Range("G" & ln) 'Prix
Cells(Target.Row, 5) = x 'Stock initial
s = IIf(Target.Offset(0, -1) = "sale", -1, 1) 'sens du mouvement = 1 pour retour,-1 pour vente
Cells(Target.Row, 9) = Target.Value * s + x 'Stock final
fo.Range("E" & ln) = Target.Value * s + x 'Nouveau stock mis à jour
Range("A" & Target.Row) = Date 'ou = Now si on veut l'horodate
Else
MsgBox "Saisies incomplètes.", 16
Exit Sub
End If
End If
Application.EnableEvents = True
End Sub
Bye !