Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TS As ListObject 'déclare la variable TS (Tableau Structuré)
Dim PTS As Range 'déclare la variable PTS (Plage du Tableau Structuré)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim R As Range 'déclare la variable R (Recherche)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim LR As Integer 'déclare la variable LR (LIgne de Référence)
Set OS = Worksheets("TAB") 'définit l'onglet source OS
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set OD = Worksheets("INVALIDE") 'définit l'onglet destination OD
Set TS = OD.ListObjects("Invalide") 'définit le tableau structuré TS
Set PTS = TS.DataBodyRange 'définit la plage PTS
LR = IIf(PTS(1, 1).Value = "", 1, TS.HeaderRowRange(1, 1).End(xlDown).Row) 'définit la ligne LR
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 56) = "INV" Then 'condition 1 : si la donnée ligne I colonne 56 (=> colonne BD)
Set R = PTS.Columns(1).Find(TV(I, 1), , xlValues, xlWhole) 'définir la recherche R (recherche dans la colonne 1 de la plage PTS la valeur exacte de la donnée ligne I colonne 1 de TV)
If R Is Nothing Then 'condition 2 : s'il n'existe aucubne occurrence trouvée
K = K + 1 'incrémente K
ReDim Preserve TL(1 To 5, 1 To K) 'redimensionne le tableau des lignes TL (5 lignes K colonnes)
TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV => Transposition)
TL(2, K) = TV(I, 10) 'récupère dans la ligne 2 de TL la donnée en colonne 10 de TV => Transposition)
TL(3, K) = TV(I, 16) 'récupère dans la ligne 3 de TL la donnée en colonne 16 de TV => Transposition)
TL(4, K) = TV(I, 17) 'récupère dans la ligne 4 de TL la donnée en colonne 1 de T7 => Transposition)
TL(5, K) = TV(I, 56) 'récupère dans la ligne 5 de TL la donnée en colonne 56 de TV => Transposition)
TS.ListRows.Add 'ajoute une ligne au tableau structuré TS
End If 'fin de la condition 2
End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle
PTS(LR, 1).Resize(K, 5).Value = Application.Transpose(TL) 'renvoie le tableau TL transposé dans la cellule ligne LR colonne 1 redimensionnée de la plage PTS
End Sub