Voilà qui fait ce que tu demandes :
Sub Samira()
Dim lgn, col, k%, n%, i%, wsRE As Worksheet
lgn = Split("A B C")
col = Split("Jean;Franck", ";")
Set wsRE = Worksheets("REsultat final")
wsRE.Range("A1").CurrentRegion.Offset(1).ClearContents
k = 1: n = 1
Application.ScreenUpdating = False
With Worksheets("DOnnées source").Range("B2")
Do While .Cells(1, k + 1) <> ""
k = k + 1
For i = 0 To UBound(col)
If .Cells(1, k) = col(i) Then Exit For
Next i
If i > UBound(col) Then .Cells(1, k).EntireColumn.Hidden = True
Loop
Do While .Cells(n + 1, 1) <> ""
n = n + 1
For i = 0 To UBound(lgn)
If .Cells(n, 1) = lgn(i) Then Exit For
Next i
If i > UBound(lgn) Then .Cells(n, 1).EntireRow.Hidden = True
Loop
With .Resize(n, k)
.SpecialCells(xlCellTypeVisible).Copy wsRE.Range("B2")
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
End With
End With
wsRE.Activate
End Sub
Cordialement.