Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
Dim tablo, i As Long, s, j As Variant
tablo = Range("A1:A2", Range("A" & Rows.Count).End(xlUp)) 'au moins 2 éléments
For i = 1 To UBound(tablo)
s = Split(tablo(i, 1), "commandé")
If UBound(s) >= 0 Then
j = Application.Match(s(0) & "*", [B:B], 0)
If IsNumeric(j) Then tablo(i, 1) = Range("B" & j)
End If
Next
tablo(1, 1) = "Sauvegarde" 'si ligne de titres
[B1].Resize(UBound(tablo)) = tablo
Range("B" & i & ":B" & Rows.Count).ClearContents
End Sub