Filtrer puis copier

Bonjour

J'ai un classeur dans lequel je souhaite filtrer la colonne D en ne gardant que les lignes des cellules non vides ensuite je voudrais pouvoir copier les lignes qu'il me reste dans la feuille à coté.

J'ai essayé avec l'enregistreur de macro qui me donne ceci :

    Columns("D:D").Select
    Selection.AutoFilter
    ActiveSheet.Range("$D$1:$D$28").AutoFilter Field:=1, Criteria1:="="
    Range("A3:D27").Select
    Selection.Copy
    Sheets("Feuil2").Select
    ActiveSheet.Paste
    Sheets("Feuil1").Select
    Application.CutCopyMode = False
    ActiveSheet.Range("$D$1:$D$28").AutoFilter Field:=1
    Selection.AutoFilter

Le souci c'est que je ne sais pas comment adapter le code pour que ça marche dans le cas où le résultat du filtrage me donne une plage plus grande.

Merci pour votre aide

bonjour

essaie cela

Option Explicit

Sub Macro2()
'
' Macro2 Macro
'

'
    Columns("D:D").Select
    Selection.AutoFilter
    ActiveSheet.Range("$D$1:$D$100000").AutoFilter Field:=1, Criteria1:="<>"
    Range("D2:D100000").Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("D2").Select
    ActiveSheet.Paste
    Sheets("Feuil1").Select
    ActiveSheet.Range("$D$1:$D$100000").AutoFilter Field:=1
    Range("F2").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Columns("D:D").Select
    Selection.AutoFilter
    Range("F2").Select
End Sub

a te relire

10trie.xlsm (18.47 Ko)

merci pour la réponse mais en fait ce n'est pas tout à fait ce que je cherche à obtenir

je joint mon fichier pour montrer à quoi ressemble mon classeur.

13classeur2.xlsm (13.50 Ko)

Re

essaie ce fichier

a te relire

20trie.xlsm (21.08 Ko)

Merci

Juste le tri était à faire sur la colonne D (j'ai corrigé de moi même).

Dans l’idéal j'aurais aimé que le code regarde de la première ligne jusqu'à la dernière ligne non vide mais je ne vais pas abuser.

Merci encore

bonjour

dans le champ de recherche de ta macro

change

Columns("A:A").Select
    Selection.AutoFilter
ActiveSheet.Range("$A$1:$A$100000").AutoFilter Field:=1, Criteria1:="<>" ' le 100000 en Nb de ligne que tu veut filtrer
    Range("A2:D100000").Select ' la lettre D en la lettre de la colonne voulu

a te relire

Bonjour iliyes

En fait j'ai finit par trouver (avec ton aide) le code qui marche comme je veux :

Sub Filtrer()
    NblgD = Range("A" & Rows.Count).End(xlUp).Row
    Zone_d = "D1:D" & (NblgD)

    Range(Zone_d).Select
    Selection.AutoFilter
    ActiveSheet.Range("D:D").AutoFilter Field:=1, Criteria1:="*x*"

    NblgA = Range("A" & Rows.Count).End(xlUp).Row
    Zone_copy = "A1:D" & (NblgA)

    Range(Zone_copy).Copy
    Sheets("Feuil2").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Cells.Select
    Cells.EntireColumn.AutoFit
    Sheets("Feuil1").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
End Sub
Rechercher des sujets similaires à "filtrer puis copier"