J'ai un petit peu avancé donc je souhaite faire un point.
Après quelques recherches, quelques tests et deux / trois ajustements, j'arrive sur ce code :
Sub Copy()
Dim fromWb As Workbook
Set fromWb = Workbooks("Book1.xlsx") 'Nom du fichier Excel où l'on récupère les données
Dim fromWs As Worksheet
Set fromWs = fromWb.Worksheets("Sheet1") 'Nom de la feuille Excel où l'on récupère les donnée
Dim toWb As Workbook
Set toWb = ThisWorkbook 'Ce fichier Excel est celui où l'on copie les données
Dim toWs As Worksheet
Set toWs = toWb.Worksheets("Sheet1") 'Nom de la feuille Excel où l'on copie les données
Dim Recup As Variant
Dim Find As Range
Dim i As Long
Recup = Array("Ville", "joueur") 'Il s'agit du nom des différentes colonnes que l'on récupère
toWs.Cells.Clear 'On efface tout ce qu'il y a sur la feuille où l'on va copier les données (valeurs, mise en forme, etc...)
With fromWs 'On utilise le fichier Excel de départ
For i = LBound(Recup) To UBound(Recup) 'Pour chaque colonne du tableau, en partant de la première que l'on souhaite récupérer à la dernière
Set Find = .Range("1:1").Find(Recup(i), , , xlWhole, , , False, , False) 'On regarde si la colonne selectionnée correspond à une que l'on souhaite récupérer
If Not Find Is Nothing Then 'Si c'est le cas
Intersect(.UsedRange, Find.EntireColumn).Copy toWs.Cells(2, Columns.Count).End(xlToLeft).Offset(, 1) 'On écrit à partir de la deuxièmene ligne
End If
Next i
End With
End Sub
Il copie bien tout ce que je souhaite (dont les en-têtes) mais il ne copie pas sous forme de tableau.
Je vais voir si l'on peut transformer toutes les cases avec une écriture en tableau. (car je connais la première case du tableau, la dernière colonne et que je peux essayer de trouver la dernière ligne)
C'est pour le moment la seule chose que je visualise pour le faire. Je ne sais pas si quelqu'un voit une meilleure idée pour le faire.