Copier colonne utilisant l'objet tableau

Bonjour à toutes et tous,

Je souhaite copier certaines colonnes d'un tableau sur un autre fichier Excel.

Cependant, pour plus de flexibilité, je souhaite utiliser dans mon code directement l'objet tableau et me rapporter à ses propres colonnes / en-tête.

Par exemple je veux appeller la colonne "Ville" de la table "Club" et non la colonne C du la feuille Excel.

Pourriez-vous m'indiquer comment faire ?

Merci par avance !

bonjour,

D'une manière générale une syntaxe pourrait être :

Range("Club[Ville]").Select 'ou Copy...

Cette syntaxe est valable uniquement pour les tableaux structurés créés par Insertion > Tableau

A+

Je te remercie @galopin01 pour ta réponse :)

Cependant, je souhaite également copier l'en-tête, mais également de copier le résultat sous forme de tableau.

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.

12book1.xlsx (10.39 Ko)
Range("Club[[#All],[Ville]]").Copy Worksheets("Feuil2").Range("A1")

Remplacer "Feuil2" par LaBonneFeuille !

A+

Merci @galopin01 !

J'ai finalement trouvé une autre manière (voir mon message au-dessus) mais cela me servira pour une autre fois !

Cela fait quelques temps que je n'ai pas touché à VBA et j'ai perdu ces nuances...

Pour plusieurs colonnes le plus simple est sans doutes de copier tout le tableau :

Range("Club[#All]").Copy Worksheets("Feuil2").Range("A1")

puis de supprimer celles qui ne t'intéresse pas...

Il y a aussi des possibilités avec PQ (Power Query) dont l'avantage est de s'actualiser au fur et à mesure de l'évolution de la source.

Rechercher des sujets similaires à "copier colonne utilisant objet tableau"