Private Sub Worksheet_Activate()
Dim j&, entete$, n&
Application.ScreenUpdating = False
With Sheets("résultat")
For j = 1 To Columns.Count
entete = .Cells(1, j)
If Trim(entete) = "" Then Exit For
.Cells(2, j).Resize(Rows.Count - 1).Clear
n = Application.IfError(Application.Match(entete, Sheets("data").Rows(1), 0), 0)
If n Then Sheets("data").Columns(n).Copy .Columns(j)
Next j
End With
End Sub