Sub recopie()
Dim a()
Dim i&, l&
Dim sh1 As Worksheet, sh2 As Worksheet
Dim d As Object
'Enregistrement des feuilles dans des objets.
Set sh1 = ThisWorkbook.Sheets("PLANNING BE")
Set sh2 = ThisWorkbook.Sheets("TEMPORAIRE")
'Enregistrement du tableau temporaire dans un tableau virtuel.
'Sur une grande quantité d'informations le traitement sera plus rapide.
a = sh2.[C5].CurrentRegion.Value
'Création d'un dictionnaire.
Set d = CreateObject("scripting.dictionary")
'Boucle du tableau virtuel pour alimenter le dictionnaire.
For i = LBound(a) To UBound(a)
'La clef du dictionnaire est le N°OE & N° Opération.
'L'item sera le numéro de ligne correspondant dans le tableau virtuel.
d(a(i, 1) & a(i, 2)) = i
Next i
'Placement dans le listobject de l'onglet PlANNING BE
With sh1.ListObjects("OE").DataBodyRange
'Boucle de toutes les lignes du corps.
For i = 1 To .Rows.Count
'Si Le N°OE & N° Opération du tableau sont trouvés dans le dictionnaire.
If d.exists(.Item(i, 3).Value & .Item(i, 5).Value) Then
'Alors sort le numéro de la ligne correspondante dans le tableau virtuel.
l = d(.Item(i, 3).Value & .Item(i, 5).Value)
'Et recopie les données des colonnes 18/19/20 et 22 selon les colonnes 3 à 6 du tableau virtuel.
.Item(i, 18).Value = a(l, 3)
.Item(i, 19).Value = a(l, 4)
.Item(i, 20).Value = a(l, 5)
.Item(i, 22).Value = a(l, 6)
End If
Next i
End With
End Sub