Il n'est pas si compliqué, alors je t'explique.
Sub Macro1()
1 Dim nL As Integer, tablo() As String
2 Dim ws1 As Worksheet, ws2 As Worksheet
3 Dim i As Integer, j As Integer, refExists As Boolean
4
5 Set ws1 = Sheets("Liste de capacités")
6 Set ws2 = Sheets("Extraction TAT")
7
8 nL = ws1.Cells(Rows.Count, 4).End(xlUp).Row
9 ReDim tablo(nL - 7)
10
11 For i = 8 To nL
12 tablo(i - 7) = ws1.Cells(i, 4)
13 Next i
14
15 ' Scan
16 nL = ws2.Cells(Rows.Count, 4).End(xlUp).Row
17
18 For i = nL To 2 Step -1
19 refExists = False
20 For j = 1 To UBound(tablo)
21 If tablo(j) = ws2.Cells(i, 4) Then
22 refExists = True
23 Exit For
24 End If
25 Next j
26 If Not refExists Then
27 Rows(i & ":" & i).Select
28 Selection.Delete Shift:=xlUp
29 End If
30 Next i
End Sub
Option Explicit : on force la déclaration de toutes les variables ; c'est une habitude à prendre (paramétrage de l'éditeur) dès le début.
1 à 3 Déclaration des variables : nL permet de connaître la dernière cellule utilisée d'une colonne. tablo() est un tableau qui contiendra les Part Numbers de la feuille "Liste de capacités". ws1 et ws2 permettent de condenser le code : ws1 = 3 caractères alors que Sheets("Liste de capacités") en contient 28.
Enfin refExists est une variabble booléenne qui peut prendre la valeur "True" (toute valeur autre que 0) ou "False" (= 0).
5 à 6 affectation des noms de feuille aux variables ws1 et ws2 qui sont du type Worksheet.
8 - On affecte à la variable nL le n° de la dernière ligne de la colonne 4 de la feuille "Liste de capacités" ayant un contenu. C'est dans cette colonne que se trouvent les Part Numbers, mais on aurait pu aussi bien prendre la colonne 1, 2 ou 3.
9 - On dimensionne le tableau en fonction du nombre de Part Numbers, soit nL - 7 puisque les valeurs commencent à la ligne 8.
11 à 13 - on remplit le tableau avec les différents Part Numbers
16 - On affecte à la variable nL le n° de la dernière ligne de la colonne 4 de la feuille "Extraction TAT" ayant un contenu. C'est dans cette colonne que se trouvent les Part Numbers, mais on aurait pu aussi bien prendre la colonne 1, 2, 3 ou 5.
18 - Boucle d'élimination des lignes comportant un Part Number ne figurant pas dans le tableau tablo(). On scanne la feuille "Extraction TAT" de la dernière ligne occupée (nL) à la 2 en remontant ligne à ligne (d'où le step -1).
20 à 25 - On prend la 1ère valeur ("RA2M330" en ligne 700) et on la recherche dans le tableau. Si on la trouve, on met le flag refExists à "True" et on quitte la 2e boucle.
26 à 28 - Si on arrive à la fin de la 2e boucle sans avoir trouvé cette valeur dans le tableau, le flag refExists est toujours à "False" (Part Number inconnu), donc on supprime la ligne.
30 - et on remonte ainsi les lignes une à une jusqu'à la 2e.