6 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié par ThauTheme le 23/02/2017 à 10:52
Modifié par ThauTheme le 23/02/2017 à 10:52
Bonjour Hamid, bonjour le forum,
Je te donne une méthode que j'utilise sans être sûr que ce soit la meilleure. Il te faut juste adapter la plage PL à ton cas...
À plus,
ThauTheme
Je te donne une méthode que j'utilise sans être sûr que ce soit la meilleure. Il te faut juste adapter la plage PL à ton cas...
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("A1").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
À plus,
ThauTheme
Bonjour Thautheme,
D'abord je te remercie pour ta réponse rapide :)
Sinon le 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 il copie la ligne 7 + le résultat du filtre (du 17 à 30) alors que je juste le résultat c'est a dire les ligne grise. les entités sont de couleur violé.
D'abord je te remercie pour ta réponse rapide :)
Sinon le 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 il copie la ligne 7 + le résultat du filtre (du 17 à 30) alors que je juste le résultat c'est a dire les ligne grise. les entités sont de couleur violé.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
23 févr. 2017 à 14:35
23 févr. 2017 à 14:35
Re,
Sans fichier en pièce jointe (voir avec https://www.cjoint.com/ par exemple) difficile de coder juste. Peut-être comme ça :
Sans fichier en pièce jointe (voir avec https://www.cjoint.com/ par exemple) difficile de coder juste. Peut-être comme ça :
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 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 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
Re,
En effet, la oui ça marche très bien. c'est exactement ça.
il reste un seul soucis c'est que lorsque y'a de nouvelle lignes grise et que j'utilise la macro pour les coller dans la feuil "Ligne de couleur grise" ben ca l'a colle dans la ligne 2 en la remplaçant par cette nouvelle ligne.
du coup je cherche un moyen de coller les nouvelles lignes dans les ligne vide et ne rien remplacer. je ne sais pas si je suis claire dans cette question
Je te remercie d'avance pour ton aide. c'est très gentil
En effet, la oui ça marche très bien. c'est exactement ça.
il reste un seul soucis c'est que lorsque y'a de nouvelle lignes grise et que j'utilise la macro pour les coller dans la feuil "Ligne de couleur grise" ben ca l'a colle dans la ligne 2 en la remplaçant par cette nouvelle ligne.
du coup je cherche un moyen de coller les nouvelles lignes dans les ligne vide et ne rien remplacer. je ne sais pas si je suis claire dans cette question
Je te remercie d'avance pour ton aide. c'est très gentil
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
23 févr. 2017 à 15:12
23 févr. 2017 à 15:12
Re,
Ce code devrait convenir :
Ce code devrait convenir :
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
Re
finalement j'ai trouvé il suffit d'ajouter End(xlDown).Offset(1, 0)
a l'avant dernière ligne.
Meri encore a tous pour votre aide ;)
voici le bon code dans son intégralité.
finalement j'ai trouvé il suffit d'ajouter End(xlDown).Offset(1, 0)
a l'avant dernière ligne.
Meri encore a tous pour votre aide ;)
voici le bon code dans son intégralité.
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 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 PLV.Copy Sheets("ligne de couleur grise").Range("A2").End(xlDown).Offset(1, 0) '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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
23 févr. 2017 à 15:30
23 févr. 2017 à 15:30
Non, je ne te conseille pas ce code car si A3 est vide ça va planter. Je t'ai proposé à peu près la la même chose mais je te conseille ma manière qui part de la dernière ligne et remonte...
hamidmarseille
>
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
23 févr. 2017 à 15:39
23 févr. 2017 à 15:39
Oui tout a fait tu as raison. le mien il plante. par contre avec ton code il est parfait. Merci encore