Sub essai2()
Dim a, b, dico
Dim n As Integer, y As Range, col As Integer
Sheets.Add.Name = "temp"
Sheets("Feuil1").Cells.Copy Destination:=Sheets("temp").Range("A1")
Set dico = CreateObject("Scripting.dictionary")
For n = 1 To Sheets("Feuil2").Cells(1, Columns.Count).End(xlToLeft).Column
If Sheets("Feuil2").Cells(1, n) <> "" Then
dico(Sheets("Feuil2").Cells(1, n)) = n
End If
Next
a = dico.keys
b = dico.items
Sheets("Feuil1").Cells.ClearContents
For n = LBound(a) To UBound(a)
Set y = Sheets("temp").Rows(1).Find(a(n), LookIn:=xlValues, lookat:=xlWhole)
col = y.Column
Sheets("temp").Columns(col).Copy Destination:=Sheets("Feuil1").Columns(b(n))
Next
Application.DisplayAlerts = False
Sheets("temp").Delete
Application.DisplayAlerts = True
End Sub