Sub Macro1()
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL1 As Range 'déclare la variable PL1 (PLage 1)
Dim PL2 As Range 'déclare la variable PL2 (PLage 2)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim R As Range 'déclare la variable R (Recherche)
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O2 = Sheets("Feuil2") 'définit l'onglet O2
'définit la plage PL1
Set PL1 = Application.Union(O1.Range("A12:A36"), O1.Range("D12:D36"), O1.Range("G12:G36"), O1.Range("J12:J36"))
DL = O2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O2
Set PL2 = O2.Range("A8:B" & DL) 'définit la plage PL2
For Each CEL In PL1 'boucle sur toutes les cellules CEL de la plage PL
If CEL.Offset(0, 2).Value = "B" Then 'condition : si la cellule décalée de deux colonnes à droite de CEL vaut "B"
Set R = PL2.Find(CEL.Value, , xlValues, xlWhole) 'définit la recherche R
'si il existe au moins une occurrence trouvée, récupère le stock
'dans la celule décalée d'un colonne à droite de la première occurrence trouvée
If Not R Is Nothing Then R.Offset(0, 1).Value = CEL.Offset(0, 1).Value
End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
End Sub