Option Explicit
Sub BoucleColonnes()
Dim lc As Long, mc As Variant, x As Variant
Dim ws As Worksheet
Dim tA As ListObject, tB As ListObject
Set ws = Worksheets("sheet1")
Set tA = ws.ListObjects("table1")
Set tB = ws.ListObjects("table2")
With tB
'vider table2
On Error Resume Next
.DataBodyRange.Delete
.Resize .Range.Resize(tA.ListRows.Count + 1, .ListColumns.Count)
On Error GoTo 0
'boucle sur nom des colonnes sauf derniere d'où le (-1)
For lc = 1 To tA.ListColumns.Count - 1
mc = Application.Match(.HeaderRowRange(lc), tA.HeaderRowRange, 0)
If Not IsError(mc) Then
x = tA.ListColumns(mc).DataBodyRange.Value
.ListColumns(lc).DataBodyRange = x
End If
Next lc
End With
End Sub