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.