1 pièce(s) jointe(s)
Récupération Range suite Autofilter
Bonjour à tous,
J'ai une feuille avec une mise en forme globale (titres diverse, dates, logo de la société...)
Sur la plage B12:N12 j'ai un filtre (pas de tableau Excel, juste un filtre).
Les données présentes sous la ligne de filtre ne sont pas contigus, les utilisateurs aiment laisser des lignes vides avant de ressaisir quelque chose :
Pièce jointe 206611
Le but de la manœuvre est de traité plusieurs classeurs différents ayant la même structure, en récupérant les données pour les regrouper.
J'active donc le filtre en colonne 3 (D) sur non vide :
Code:
1 2 3
| With ActiveSheet
.Range("$B$12:$N$21").AutoFilter field:=3, Criteria1:="<>"
End With |
Et je cherche ensuite à faire un Copy =>PasteSpecial xlPasteValues (car je ne souhaites prendre que les valeurs).
Car les plages étant discontinues cela génère plusieurs Area donc plus simple (je trouve de cette manière).
Mon souci, c'est que je n'arrive pas correctement à récupérer uniquement la plage des lignes visibles après filtre.
Avec ceci, j'obtiens bien le nombre de lignes restantes :
Code:
.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
Ce qui me permet de savoir si je doit traiter ou non.
Déjà ce qui m'échappe c'est pourquoi ceci :
Code:
.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count - 1
Ne renvois pas le même résultat !
Ensuite je fais ceci :
Code:
1 2
| Dim srcR As Range
Set srcR = .AutoFilter.Range.SpecialCells(xlCellTypeVisible) |
Mais du coup plus possible de retirer la ligne de filtre en faisant :
Code:
Set srcR = srcR.Resize(srcR.Rows.Count - 1).Offset(1)
Puisqu'on se retrouve déjà avec un découpage de plage non contiguë.
Je n'arrive pas à trouver la meilleure méthode pour ne récupérer que les lignes visibles sans la ligne de filtre, le top serais un plage directement non contiguë pour se passer du Copy/Paste et pouvoir directement utiliser le .value de la source et de la destination.
Merci à vous :)