michel1990 | michel1990 a écrit :
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
- ActiveSheet.Range("$A$7:$AB$690" ).AutoFilter Field:=1, Criteria1:=RGB(191, _
- 191, 191), Operator:=xlFilterCellColor
- Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit las plage PLV des cellules visibles de la plage PL
- PLV.Copy Sheets("ligne de couleur grise" ).Range("A1" ) 'copie la plage PLV dans la cellule A1 de l'onglet "ligne de couleur grise"
- PLV.EntireRow.Delete 'supprime les lignes entières de la plage PLV
- End Sub
|
|
finalement j'ai trouvé! voici le code exacte
Code :
- Sub Macro1()
- Dim PL As Range 'déclare la variable PL (PLage)
- Dim PLV As Range 'déclare la variable PL (PLage Visible)
- Dim DEST As Range 'déclare la varible DEST (cellule de DESTination)
- Selection.AutoFilter
- Set PL = Range("A7" ).CurrentRegion 'à adapter à ton cas, c'est l'ensemble des cellules éditées
- Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count)
- ActiveSheet.Range("$A$7:$AB$690" ).AutoFilter Field:=1, Criteria1:=RGB(191, _
- 191, 191), Operator:=xlFilterCellColor
- 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
- End Sub
|
|