Sélectionner en automatique les lignes d'un résultat d'un filtre
Sélectionner en automatique les lignes d'un résultat d'un filtre - VB/VBA/VBS - Programmation
MarshPosté le 23-02-2017 à 14:03:01
BONJOUR
j'ai un fichier excel qui contient plusieurs lignes colorées. j'ai écrit une macro qui permet de filtrer sur couleur grise, une fois j'ai le résultat, elle va les sélectionner les couper puis les coller dans un feuil nommée : ligne de couleur grise.
ce code il marche très bien bien, le seule soucis, c'est que moi mes entité sont a la ligne 7, le résultat de mon filtre est de 17 à 30
j'ai mis ma plage PL comme ça! Set PL = Range("A7" ) du coup elle copie la ligne 7 (les entités) + le résultat du filtre (du 17 à 30) alors que je veux juste le résultat c'est a dire les ligne grise. les entités sont de couleur violé.
en suite la prochaine vois que je veux utiliser cette macro les ligne qu'elle va couper doit les coller en bas des anciennes lignes et pas remplacer.
quelqu'un peut m'aider SVP.
Code :
Sub Macro1()
Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PL (PLage Visible)
Selection.AutoFilter
Set PL = Range("A7" ).CurrentRegion 'à adapter à ton cas, c'est l'ensemble des cellules éditées
j'ai un fichier excel qui contient plusieurs lignes colorées. j'ai écrit une macro qui permet de filtrer sur couleur grise, une fois j'ai le résultat, elle va les sélectionner les couper puis les coller dans un feuil nommée : ligne de couleur grise.
ce code il marche très bien bien, le seule soucis, c'est que moi mes entité sont a la ligne 7, le résultat de mon filtre est de 17 à 30
j'ai mis ma plage PL comme ça! Set PL = Range("A7" ) du coup elle copie la ligne 7 (les entités) + le résultat du filtre (du 17 à 30) alors que je veux juste le résultat c'est a dire les ligne grise. les entités sont de couleur violé.
en suite la prochaine vois que je veux utiliser cette macro les ligne qu'elle va couper doit les coller en bas des anciennes lignes et pas remplacer.
quelqu'un peut m'aider SVP.
Code :
Sub Macro1()
Dim PL As Range 'déclare la variable PL (PLage)
Dim PLV As Range 'déclare la variable PL (PLage Visible)
Selection.AutoFilter
Set PL = Range("A7" ).CurrentRegion 'à adapter à ton cas, c'est l'ensemble des cellules éditées
Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit las plage PLV des cellules visibles de la plage PL
'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première ligne vide de la colonne A de l'onglet "ligne de couleur grise"
Set DEST = IIf(Sheets("ligne de couleur grise" ).Range("A1" ).Value = "", Sheets("ligne de couleur grise" ).Range("A1" ), Sheets("ligne de couleur grise" ).Cells(Application.Rows.Count, "A" ).End(xlUp).Offset(1, 0))
PLV.Copy DEST 'copie la plage PLV dans la cellule de destination DEST
PLV.EntireRow.Delete 'supprime les lignes entières de la plage PLV
Marsh Posté le 23-02-2017 à 14:03:01
BONJOUR
j'ai un fichier excel qui contient plusieurs lignes colorées. j'ai écrit une macro qui permet de filtrer sur couleur grise, une fois j'ai le résultat, elle va les sélectionner les couper puis les coller dans un feuil nommée : ligne de couleur grise.
ce code il marche très bien bien, le seule soucis, c'est que moi mes entité sont a la ligne 7, le résultat de mon filtre est de 17 à 30
j'ai mis ma plage PL comme ça! Set PL = Range("A7" ) du coup elle copie la ligne 7 (les entités) + le résultat du filtre (du 17 à 30) alors que je veux juste le résultat c'est a dire les ligne grise. les entités sont de couleur violé.
en suite la prochaine vois que je veux utiliser cette macro les ligne qu'elle va couper doit les coller en bas des anciennes lignes et pas remplacer.
quelqu'un peut m'aider SVP.
Message édité par michel1990 le 23-02-2017 à 14:09:08