Bonjour Slygan, bonjour le forum,
Peut-être comme ça :
Sub ThauTheme()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TS As ListObject 'déclare la variable TS (Tableau Source)
Dim TD As ListObject 'déclare la variable TD (Tableau Destination)
Dim I As Integer 'déclare la variable I (Incrément)
Dim R As Range 'déclare la variable R (Recherche)
Dim LI As Integer 'déclare la variable LI (LIgne)
Set O = Worksheets("Feuil1") 'définit l'onglet O
Set TS = O.ListObjects("Tableau1") 'définit le tableau source TS
Set TD = O.ListObjects("tableau3") 'définit le tableau destination TD
TD.DataBodyRange.Delete 'efface les données de TD
For I = 1 To TS.ListRows.Count 'boucle sur toutes les lignes I du tableau source
If InStr(1, TS.DataBodyRange(I, 2), "K3", vbTextCompare) = 0 Then 'si "K3" n'est pas contenu dans la donnée ligne I colonne 2 de TS
Set R = TD.ListColumns(1).Range.Find("") 'définit la recherche R (recherche du vide dans la colonne 1 de TD)
If R Is Nothing Or TD.ListRows.Count = 0 Then 'si aucune occurrence n'a été trouvée ou si TD ne comporte pas encore de ligne
TD.ListRows.Add 'ajoute une ligne à TD
LI = TD.ListRows.Count 'définit la ligne LI (dernière ligne de TD)
Else 'sinon (au moin s une occurrence a été trouvée)
LI = R.Row - TD.HeaderRowRange.Row 'définit la ligne LI (ligne de la première occurrence trouvée moins la ligne des en-têtes de TD)
End If 'fin de la condition
TD.DataBodyRange(LI, 1).Value = TS.DataBodyRange(I, 2) 'récupère l'outil dans la colonne 2 de TD
TD.DataBodyRange(LI, 2).Value = TS.DataBodyRange(I, 1) 'récupère le plot dans la colonne 1 de TD
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub