VBA - copier/coller données filtrées à la suite

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
Towelie
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 17 novembre 2017
Version d'Excel : 2007/2016

Message par Towelie » 30 novembre 2017, 12:04

Bonjour,

J'ai un problème sur Excel. Le code présenté ci-dessous est dégueulasse car j'ai utilisé l'enregistreur de macro et trouvé des morceaux de code sur internet.

Voila l'idée, je souhaite récupérer des données filtrées (à laide du filtre avancé) en "F1" copiées sur les colonnes "L:R", les copier et les coller après la dernière ligne non vide (à la suite) dans la colonne "B" de "F2".

J'ai donc défini deux variables :
- une pour obtenir la dernière ligne non vide la plage filtrées (sur F1)
- une pour obtenir la première ligne vide afin de réaliser le copier/coller (sur F2)
    

Dim dlg_1 As Long
Dim dlg_2 As Long


dlg_1 = Worksheets("F1").Range("L" & Cells.Rows.Count).End(xlUp).Row
dlg_2 = Worksheets("F2").Range("B" & Cells.Rows.Count).End(xlUp).Row + 1

'définition du critère lié au filtre avancé (cette étape est nécessaire, car j'ai plusieurs critères & plusieurs plages à copier/coller dans plusieurs feuilles
Sheets("F1").Range("J2").Value = "'=X" 

    Columns("A:H").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "F1!J1:J2"), CopyToRange:=Range( _
        "F1!L1:R1"), Unique:=False

    If dlg_1 = 1 Then Exit Sub

    Worksheets("F1").Range("L2:R" & dlg_1).Copy Destination:=Worksheets("F2").Range("B" & dlg_2)
Le code ne me renvoie pas le bon nombre de ligne à recopier.
Ex: j'ai 136 lignes, caractérisé par le critère "X", mais la macro ne me colle que 6 lignes sur F2

J'espère avoir été assez clair et n'hésitez pas, si nécessaire, à me demander un fichier exemple.

Je vous remercie par avance et je reste à disposition.
Cdlt,
Towelie.
Avatar du membre
thev
Membre impliqué
Membre impliqué
Messages : 2'534
Appréciations reçues : 213
Inscrit le : 13 juin 2016
Version d'Excel : 2019 FR 64 bits

Message par thev » 30 novembre 2017, 19:04

Bonsoir,

Essayer ceci
Sheets("F1").Range("L2").CurrentRegion.Copy Destination:=Sheets("F2").Range("B" & dlg_2)
T
Towelie
Nouveau venu
Nouveau venu
Messages : 9
Inscrit le : 17 novembre 2017
Version d'Excel : 2007/2016

Message par Towelie » 1 décembre 2017, 10:38

Bonjour,

Merci pour ta réponse, la solution fonctionne. Je ne connaissais pas le "CurrentRegion" !!
Il y néanmoins un petit problème, la sélection s'applique également au titre, que je ne souhaite pas recopier.

Je pense pouvoir me débrouiller sur ce point, merci encore.

Cdlt,
Towelie.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message