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 :
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 :
Et je cherche ensuite à faire un Copy =>PasteSpecial xlPasteValues (car je ne souhaites prendre que les valeurs).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 With ActiveSheet .Range("$B$12:$N$21").AutoFilter field:=3, Criteria1:="<>" End With
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 :
Ce qui me permet de savoir si je doit traiter ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
Déjà ce qui m'échappe c'est pourquoi ceci :
Ne renvois pas le même résultat !
Code : Sélectionner tout - Visualiser dans une fenêtre à part .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Count - 1
Ensuite je fais ceci :
Mais du coup plus possible de retirer la ligne de filtre en faisant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim srcR As Range Set srcR = .AutoFilter.Range.SpecialCells(xlCellTypeVisible)
Puisqu'on se retrouve déjà avec un découpage de plage non contiguë.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set srcR = srcR.Resize(srcR.Rows.Count - 1).Offset(1)
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![]()
Partager