Copier colonne spécifique dans une nouvelle feuille

Bonjour,

A nouveau besoin de votre aide

J'aimerais copier les cellules visible d'une colonne spécifique (Avec le nom d'une colonne) dans une autre feuille mais ce bout de code ne fonctionne pas :

Sheets("Nom_Feuille1").Select

Sheets("Nom_Feuille1").Range("Nom_Tableau[Nom_Colonne]").Column.SpecialCells(xlCellTypeVisible).Copy

Windows(Nom_Nouveau_Classeur).Activate

Sheets("Nom_Feuille").Select

Range("A1").Select

ActiveSheet.Paste

C'est cette ligne qui me dérange :

Sheets("Nom_Feuille1").Range("Nom_Tableau[Nom_Colonne]").Column.SpecialCells(xlCellTypeVisible).Copy

Avez-vous une idée ?

Merci par avance pour votre aide

Bonjour,

Par "dérange", tu entends qu'elle ne fonctionne pas dans ton cas ? Mais l'as-tu testé en remplaçant "Nom_Tableau[Nom_Colonne]" par le nom exact de ton tableau et de ta colonne ?

Par ailleurs, si on résume, le code peut s'écrire :

Sheets("Nom_Feuille1").Range("Nom_Tableau[Nom_Colonne]").Column.SpecialCells(xlCellTypeVisible).Copy Workbooks(Nom_Nouveau_Classeur).Sheets("Nom_Feuille").Range("A1")

Bonjour,

J'ai fait un test via l'enregistreur de macro pour voir le code qu'il me donne si je copie une zone filtrée, j'obtiens ceci :

Range("A2:A16").Select

Selection.Copy

En enlevant les select ça donne :

Range("A2:A16").Copy

et ça copie bien seulement les cellules qui sont visibles

Donc premier soucis dans ton code :

Sheets("Nom_Feuille1").Range("Nom_Tableau[Nom_Colonne]").Column.SpecialCells(xlCellTypeVisible).Copy

ça ce n'est pas nécessaire, je ne sais même pas à quoi ça sert...

Ensuite tu utilises déjà "Nom_Tableau[Nom_Colonne]", pourquoi repréciser derrière que tu veux toute la colonne alors que tu as plus précis?

Fais juste ceci :

Sheets("Nom_Feuille1").Range("Nom_Tableau[Nom_Colonne]").Copy

Et ça devrait marcher comme sur des roulettes je pense.

Si ce n'est pas le cas merci de me le dire voir de joindre un fichier

Merci à tous les deux pour vos réponses.

En effet Ausecour, ta réponse fonctionne :

Sheets("Nom_Feuille1").Range("Nom_Tableau[Nom_Colonne]").Copy

En faite j'avais mis "SpecialCells(xlCellTypeVisible)" car je pensais qu'il allait tout prendre et enlever le filtre, et en faite cela fonctionne parfaitement quand tu passes par un tableau

Sais-tu comment je pourrais faire garder l’entête de ma colonne source (Nom_Colonne) que je copie ?

Merci pour votre aide

Rebonjour,

Pour prendre y compris l'en-tête, il ne faut pas seulement mettre le nom du champ, sur excel quand tu prends toute la colonne d'un tableau, ça met :

Tableau1[[#Tout];[test]]

Pour prendre toutes les données du champ test qui se trouve dans le tableau1

Dans ton cas ça donnera sûrement :

Sheets("Nom_Feuille1").Range("Nom_Tableau[[#Tout];[Nom_Colonne]]").Copy

Rebonjour Ausecour,

J'ai testé ta proposition : Sheets("Nom_Feuille1").Range("Nom_Tableau[[#Tout];[Nom_Colonne]]").Copy

Mais cela ne copie rien du tout dans mon fichier. Colonne vide

Sub test()

'

'

Sheets("Nom_Feuille1").Select

Rows("16:16").Select

On Error Resume Next

ActiveSheet.ShowAllData

ActiveSheet.ListObjects("Nom_Feuille1").Range.AutoFilter Field:=Range("Nom_Tableau[Nom_Colonne]").Column, Criteria1:="TBD"

Sheets("Nom_Feuille1").Select

Sheets("Nom_Feuille1").Range("Nom_Tableau[[#Tout];[Nom_Colonne]]").Copy

Sheets("Nom_Feuille2").Select

Range("A1").Select

ActiveSheet.Paste

End Sub

As-tu une idée ?

Merci pour ton aide

Bonjour,

C'est ma faute, j'ai oublié qu'en VBA, tout était en anglais, y compris #Tout qui doit devenir #All en anglais, reessayes avec le code suivant:

Sheets("Nom_Feuille1").Range("Nom_Tableau[[#All];[Nom_Colonne]]").Copy

Cette fois ça marchera je pense

Cela ne fonctionne pas :/

Je ne comprends pas pourquoi. Il me copie ce code dans la deuxième feuille :

Sheets("Nom_Feuille1").Select

Sheets("Nom_Feuille1").Range("Nom_Tableau[[#Tout];[Nom_Colonne]]").Copy

Sheets("Nom_Feuille2").Select

Range("A1").Select

ActiveSheet.Paste

C'est bizarre :/

Voici le code utilisé

Application.CutCopyMode = False

Sheets("Nom_Feuille1").Select

Rows("16:16").Select

On Error Resume Next

ActiveSheet.ShowAllData

ActiveSheet.ListObjects("Nom_Feuille1").Range.AutoFilter Field:=Range("Nom_Tableau[Nom_Colonne]").Column, Criteria1:="TBD"

Sheets("Nom_Feuille1").Select

Sheets("Nom_Feuille1").Range("Nom_Tableau[[#All];[Nom_Colonne]]").Copy

Sheets("Nom_Feuille2").Select

Range("A1").Select

ActiveSheet.Paste

End Sub

Désolé je ne vois pas trop comment avancer plus que ça sans fichier

Dsl ma réponse tardive, je n'avais pas le fichier sous la main.

Le fichier est en pièce jointe, merci pour ton aide

15macro-test.xlsm (16.62 Ko)

Rebonjour,

J'ai finalement pu experimenter sur ton fichier et j'en suis venu au programme suivant:

Sub test()
'
'
Application.CutCopyMode = True

Sheets("Feuil1").Select

On Error Resume Next
ActiveSheet.ShowAllData
Sheets("Feuil2").Range("a1").EntireColumn.Clear
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Range("Tableau1[Status]").Column, _
Criteria1:="Connecté"
Range("Tableau1[[#All],[Status]]").SpecialCells(xlCellTypeVisible).Copy
Sheets("Feuil2").Select
Range("A1").Select
ActiveSheet.Paste

End Sub

Tu avais appelé le champ Connecté du tableau1, mais c'est le champ Status qui contient les informations, j'ai repris le specialcells car sans ça ça copiait bien toutes les cellules, mea culpa...

Je te passe le fichier avec le code :

Bonjour, Salut à tous !

Sub test()
    Dim CelD As Range
    Set CelD = Worksheets("Feuil2").Range("A1")
    With ActiveSheet
        If .FilterMode Then .ShowAllData
        With .ListObjects(1).Range
            .AutoFilter 3, "Connecté"
            .Columns(3).SpecialCells(xlCellTypeVisible).Copy CelD
        End With
    End With
End Sub

Mais ce que je ne comprends pas, c'est que tu copies le champ de filtrage ! Qui va simplement te produire la valeur filtrée avec le nom de colonne ! La seule colonne qui ne présente aucun intérêt !

Cordialement.

Ahhh tu gères Tout fonctionne !!!

Merci pour ton aide en tout cas

Rechercher des sujets similaires à "copier colonne specifique nouvelle feuille"