Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2940 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sélectionner en automatique les lignes d'un résultat d'un filtre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sélectionner en automatique les lignes d'un résultat d'un filtre

n°2296756
michel1990
Posté le 23-02-2017 à 14:03:01  profilanswer
 

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 :
  1. Sub Macro1()
  2. Dim PL As Range 'déclare la variable PL (PLage)
  3. Dim PLV As Range 'déclare la variable PL (PLage Visible)
  4. Selection.AutoFilter
  5. Set PL = Range("A7" ).CurrentRegion 'à adapter à ton cas, c'est l'ensemble des cellules éditées
  6. ActiveSheet.Range("$A$7:$AB$690" ).AutoFilter Field:=1, Criteria1:=RGB(191, _
  7. 191, 191), Operator:=xlFilterCellColor
  8. Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit las plage PLV des cellules visibles de la plage PL
  9. PLV.Copy Sheets("ligne de couleur grise" ).Range("A1" ) 'copie la plage PLV dans la cellule A1 de l'onglet "ligne de couleur grise"
  10. PLV.EntireRow.Delete 'supprime les lignes entières de la plage PLV
  11. End Sub

Message cité 1 fois
Message édité par michel1990 le 23-02-2017 à 14:09:08
mood
Publicité
Posté le 23-02-2017 à 14:03:01  profilanswer
 

n°2296759
michel1990
Posté le 23-02-2017 à 15:41:51  profilanswer
 

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 :
  1. Sub Macro1()
  2. Dim PL As Range 'déclare la variable PL (PLage)
  3. Dim PLV As Range 'déclare la variable PL (PLage Visible)
  4. Selection.AutoFilter
  5. Set PL = Range("A7" ).CurrentRegion 'à adapter à ton cas, c'est l'ensemble des cellules éditées
  6. ActiveSheet.Range("$A$7:$AB$690" ).AutoFilter Field:=1, Criteria1:=RGB(191, _
  7. 191, 191), Operator:=xlFilterCellColor
  8. Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit las plage PLV des cellules visibles de la plage PL
  9. PLV.Copy Sheets("ligne de couleur grise" ).Range("A1" ) 'copie la plage PLV dans la cellule A1 de l'onglet "ligne de couleur grise"
  10. PLV.EntireRow.Delete 'supprime les lignes entières de la plage PLV
  11. End Sub



 
finalement j'ai trouvé! voici le code exacte
 

Code :
  1. Sub Macro1()
  2. Dim PL As Range 'déclare la variable PL (PLage)
  3. Dim PLV As Range 'déclare la variable PL (PLage Visible)
  4. Dim DEST As Range 'déclare la varible DEST (cellule de DESTination)
  5. Selection.AutoFilter
  6. Set PL = Range("A7" ).CurrentRegion 'à adapter à ton cas, c'est l'ensemble des cellules éditées
  7. Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count)
  8. ActiveSheet.Range("$A$7:$AB$690" ).AutoFilter Field:=1, Criteria1:=RGB(191, _
  9. 191, 191), Operator:=xlFilterCellColor
  10. Set PLV = PL.SpecialCells(xlCellTypeVisible) 'définit las plage PLV des cellules visibles de la plage PL
  11. '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"
  12. 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))
  13. PLV.Copy DEST 'copie la plage PLV dans la cellule de destination DEST
  14. PLV.EntireRow.Delete 'supprime les lignes entières de la plage PLV
  15. End Sub



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sélectionner en automatique les lignes d'un résultat d'un filtre

 

Sujets relatifs
Formulaire créé en javascript limité à 90 "lignes"supprimer plusieurs retours à la ligne
SQLSERVER : Transformer listedans colonne en lignessupprimer les lignes commençant par un mot
Lier les lignes d'une tableComment faire des lignes brisées ?
fusions de plusieurs lignes dans différentes colonnesAfficher plusieurs lignes sur une seule
AIDE Structure organisé automatique DEBUTANTFusion de lignes sur excel
Plus de sujets relatifs à : Sélectionner en automatique les lignes d'un résultat d'un filtre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR