Pour contourner le problème des numéros qui commencent par 0, j'ai changé de stratégie, je recopie les colonnes directement sans passer par un tableau d valeurs
Option Explicit
Option Base 1
Sub import()
' importation ancien colonnes complémentaires
Dim Nom_Fichier As Variant, wb As Workbook, tbl1 As Variant, tbl2 As Variant, tbl3 As Variant, col() As Variant, i%, j%, k%, ws As Worksheet
' numéro des colonnes à importer, si 0 on passe
col = Array(0, 22, 3, 4, 5, 6, 7, 8, 9, 10, 11)
Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx")
If Nom_Fichier = False Then Exit Sub
tbl2 = Sheets(Sheets.Count).UsedRange.Value
Sheets.Add after:=Sheets(Sheets.Count)
Set ws = ActiveSheet
' recopie des colonnes du fichier source
Set wb = Workbooks.Open(Nom_Fichier)
For j = 1 To UBound(col)
If col(j) <> 0 Then wb.ActiveSheet.Columns(col(j)).Copy Destination:=ws.Cells(1, j)
Next
wb.Close
Sheets(Sheets.Count - 1).Rows(1).Copy Destination:=ActiveSheet.Range("A1")
tbl1 = ws.UsedRange.Value
' mise en exergue des différences et mise en place des 4 dernières colonnes
ReDim tbl3(1 To UBound(tbl1), 1 To 4)
For i = 1 To UBound(tbl1)
For k = 1 To UBound(tbl2)
' identifiant de la ligne composé des colonnes 4, 6 et 7
If tbl1(i, 4) = tbl2(k, 4) And tbl1(i, 6) = tbl2(k, 6) And tbl1(i, 7) = tbl2(k, 7) Then
' mise en exergue des différences
For j = 1 To UBound(col)
If tbl1(i, j) <> tbl2(k, j) Then Cells(i, j).Interior.Color = 65535
Next
' recopie des infos complémentaires
For j = UBound(col) + 1 To UBound(col) + 4
tbl3(i, j - UBound(col)) = tbl2(k, j)
Next
End If
Next
Next
' copie des résultats
Range("A1").Offset(0, UBound(col)).Resize(UBound(tbl3), UBound(tbl3, 2)) = tbl3
Cells.EntireColumn.AutoFit
End Sub