Copie collé colonne d'un tableau

Bonjour,

Mon problème est le suivant. Mon fichier Excel est composé de deux onglets. Le premier onglet est un TABLEAU avec plusieurs colonnes. Je souhaite créer une macro qui me permet de copier n'importe quel colonne de mon tableau pour la collé dans l'onglet 2 dans la cellule prévu à cette effet ( prenons la colonne secteur pour l'exemple). Mon problème est que mon tableau de donnée ne se trouve pas toujours à la même position dans le fichier Excel ( ici de B2:F9). De ce fait, je pense que la solution est de une macro qui recherche la colonne commençant par secteur et une fois qu'il la trouvé il la copie puis la colle dans l'onglet numéro 2. Le problème est que je n'ai pas les capacités en VBA pour faire cela.

Merci de votre aide,

17test10.xlsx (11.34 Ko)

Je me permet de vous relancer,

Merci à vous

7

Bonjour,

Un exemple à adapter.

Cdlt.

Public Sub CopyData()
Dim tbl As ListObject, lCol, rw As Long
    Set tbl = Range("Tableau1").ListObject
    On Error Resume Next
    lCol = Application.Match("SECTEUR", tbl.HeaderRowRange, 0)
    If IsError(lCol) Then
        MsgBox "La colonne SECTEUR n'existe pas !", 64, "Information"
    Else
        rw = tbl.ListRows.Count
        Worksheets("Resultat").Cells(4, 4).Resize(rw).Value = tbl.ListColumns(lCol).DataBodyRange.Value
    End If
End Sub

Bonjour,

Merci pour votre réponse,

Votre code est fonctionnel et c'est parfait. Comment l'utiliser sous forme de fonction avec comme paramètre le nom de la colonne a copié dans la feuille données et la feuille d'arrivé avec l'adresse de la cellule ou les données seront collé.

Merci à vous

Bonjour,

Une mise à jour à adapter ?

Cdlt.

20test10.xlsm (18.76 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tbl As ListObject, lCol, rw As Long
    If Target.Address = "$D$3" Then
        If IsEmpty(Target) Then
            Me.Cells(3, 4).CurrentRegion.Offset(1).ClearContents
        Else
            Set tbl = Worksheets("Données").Range("Input").ListObject
            'On Error Resume Next
            lCol = Application.Match(Target.Value, tbl.HeaderRowRange, 0)
            'If IsError(lCol) Then
                'MsgBox "La colonne " & Target.Value & " n'existe pas !", 64, "Information"
            'Else
                rw = tbl.ListRows.Count
                Worksheets("Resultat").Cells(4, 4).Resize(rw).Value = tbl.ListColumns(lCol).DataBodyRange.Value
            'End If
        End If
    End If
End Sub

Bonjour,

Merci pour votre réponse mais ce n'est pas ce que je cherche à faire.. Je veux créer une fonction à partir de la première réponse que vous m'avez donné qui prend en paramètre:

- La feuille et le tableau ou il faut copié les infos ( à la limite pas necessaire car c'est toujours la même )

- Le nom de la colone à copier

- La feuille de destination

En résume j'aimerais pouvoir faire CopyData("tableau1",SECTEUR,Résultat) et avoir le même résultat.

Cordialement

Je me permet de vous relancer,

Cdlt

Bonjour,

A adapter !?

Cdlt.

Option Explicit

Public Sub Test()
    CopyData "Input", "SECTEUR", "Resultat"
End Sub

Public Sub CopyData(TableName As String, ColumnName As String, SheetName As String)
Dim lo As ListObject, rngTable As Range, rw As Long
    Set lo = Range(TableName).ListObject
    rw = lo.ListRows.Count
    Set rngTable = lo.ListColumns(ColumnName).DataBodyRange
    Worksheets(SheetName).Cells(4, 4).Resize(rw).Value = rngTable.Value
End Sub

Bonjour,

Merci beaucoup c'est parfait!!! Est-il possible de rajouter un argument dans la fonction de façon à choisir dans l'appel de la fonction la cellule ou l'ont va coller dans la feuille d'arriver?

Cdlt

De façon plus claire, je souhaite juste pourvoir faire CopyData "Input", "SECTEUR", "Resultat","C4" ou par exemple CopyData "Input", "SECTEUR", "Resultat","F10"

Merci encore pour votre aide,

Cdlt

Re,

Il va falloir penser s'investir un peu !

Tu avais les éléments pour arriver au résultat.

Cdlt.

Option Explicit

Public Sub Test()
    CopyData "Input", "SECTEUR", "Resultat", "F10"
End Sub

Public Sub CopyData(TableName As String, ColumnName As String, SheetName As String, CellAddress As String)
Dim lo As ListObject, rngTable As Range, rw As Long
    Set lo = Range(TableName).ListObject
    rw = lo.ListRows.Count
    Set rngTable = lo.ListColumns(ColumnName).DataBodyRange
    Worksheets(SheetName).Range(CellAddress).Resize(rw).Value = rngTable.Value
End Sub
Rechercher des sujets similaires à "copie colle colonne tableau"