[Excel]Macro suppr ligne si le fond est rouge
Fermé
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
-
17 nov. 2010 à 15:51
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 25 nov. 2010 à 14:30
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 25 nov. 2010 à 14:30
A voir également:
- [Excel]Macro suppr ligne si le fond est rouge
- Liste déroulante excel - Guide
- Formule excel - Guide
- Aller à la ligne excel - Guide
- Figer une ligne excel - Guide
- Freeplug rouge ✓ - Forum CPL
4 réponses
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
19 nov. 2010 à 13:53
19 nov. 2010 à 13:53
bonjour
une macro qui peut faire l'affaire
- modifier les valeurs des constantes
- si la couleur rouge peut etre dans plusieurs colonnes, il faudra boucler sur les colonnes du tableau
bonne suite
une macro qui peut faire l'affaire
- modifier les valeurs des constantes
- si la couleur rouge peut etre dans plusieurs colonnes, il faudra boucler sur les colonnes du tableau
Const PremLigne = 1
Const DerLigne = 8
Const ColTestee = 1
For nuli = PremLigne To DerLigne
If Cells(nuli, ColTestee).Interior.ColorIndex = 3 Then
Rows(nuli).Delete
End If
Next nuli
bonne suite
cousinhub29
Messages postés
643
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
24 mars 2023
325
19 nov. 2010 à 14:06
19 nov. 2010 à 14:06
Bonjour,
@ CCM81, il est d'usage, voire conseillé, lorsque l'on veut supprimer des lignes, de commencer de la dernière vers la première, en utilisant un Step -1
@ lml - Mike, tout dépend, d'une part, de ta version Excel, et ensuite, si la couleur émane d'une Mise en Forme Conditionnelle, ou d'une mise en forme "Manuelle"...
@ te relire
@ CCM81, il est d'usage, voire conseillé, lorsque l'on veut supprimer des lignes, de commencer de la dernière vers la première, en utilisant un Step -1
@ lml - Mike, tout dépend, d'une part, de ta version Excel, et ensuite, si la couleur émane d'une Mise en Forme Conditionnelle, ou d'une mise en forme "Manuelle"...
@ te relire
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
19 nov. 2010 à 14:26
19 nov. 2010 à 14:26
donc
1. modifier la boucle
2. si la couleur vient d'une MFC il faudra remplacer le test (if ...) par celui qui conditionne la couleur rouge
3. il sera prudent de vérifier le code couleur du rouge de la version
merci cosinhub de me rappeler les (bons) usages
1. modifier la boucle
For nuli = DerLigne to PremLigne step -1
2. si la couleur vient d'une MFC il faudra remplacer le test (if ...) par celui qui conditionne la couleur rouge
3. il sera prudent de vérifier le code couleur du rouge de la version
merci cosinhub de me rappeler les (bons) usages
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
119
23 nov. 2010 à 11:32
23 nov. 2010 à 11:32
Bonjour et merci pour votre attention et votre aide :-)
En fait je pensais plus à faire :
ligne = Range("b1").Row
col = Range("b1").Column
While Cells(ligne, col).Value < "B5000"
If Cells(ligne, col).Interior.ColorIndex = 3 Then
Rows(ligne).Delete
End If
Wend
Je vais tester ça :-)
Merci pour la fonction interior.colorindex :-)
En fait je pensais plus à faire :
ligne = Range("b1").Row
col = Range("b1").Column
While Cells(ligne, col).Value < "B5000"
If Cells(ligne, col).Interior.ColorIndex = 3 Then
Rows(ligne).Delete
End If
Wend
Je vais tester ça :-)
Merci pour la fonction interior.colorindex :-)
ccm81
Messages postés
10559
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 mars 2023
2 337
24 nov. 2010 à 08:45
24 nov. 2010 à 08:45
re
je ne comprends pas bien
1- Range("b1").row
est ce que b1 correspond a la cellule B1 auquel cas ligne = 1 suffit (idem pour la colonne)
2- la boucle while Cells(ligne,colonne).Value < "B5000" ... wend
elle est controlée par les valeurs de ligne et colonne, variables qui ne vont pas evoluer si la ligne n'est pas supprimée
"B5000" : est ce une valeur contenue dans une cellule ou la référence à une cellule?
bonne suite
je ne comprends pas bien
1- Range("b1").row
est ce que b1 correspond a la cellule B1 auquel cas ligne = 1 suffit (idem pour la colonne)
2- la boucle while Cells(ligne,colonne).Value < "B5000" ... wend
elle est controlée par les valeurs de ligne et colonne, variables qui ne vont pas evoluer si la ligne n'est pas supprimée
"B5000" : est ce une valeur contenue dans une cellule ou la référence à une cellule?
bonne suite
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
24 nov. 2010 à 11:43
24 nov. 2010 à 11:43
Bonjour tout le monde
ci dessous macro peut être plus rapide compte tenu du grand nombre de lignes (4000)
je fais des mesures de durée et reviens... :-)
ci dessous macro peut être plus rapide compte tenu du grand nombre de lignes (4000)
Option Explicit
Option Base 1
Sub effacer_rouge()
Dim Plage As Range
Dim tablo_in, tablo_out
Dim derlig As Integer, cols As Byte
Dim cptr_in As Integer, cptr_out As Integer, cptr_col As Byte
Set Plage = Range("B1").CurrentRegion
tablo_in = Plage
derlig = Plage.Rows.Count
cols = Plage.Columns.Count
ReDim tablo_out(derlig, cols)
cptr_out = 1
For cptr_in = 1 To derlig
If Cells(cptr_in, 2).Interior.ColorIndex <> 3 Then
For cptr_col = 1 To cols
tablo_out(cptr_out, cptr_col) = tablo_in(cptr_in, cptr_col)
Next
cptr_out = cptr_out + 1
End If
Next
Application.ScreenUpdating = False
Plage.Clear
Range(Cells(1, 2), Cells(derlig, cols + 1)) = tablo_out
End Sub
je fais des mesures de durée et reviens... :-)
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
24 nov. 2010 à 11:58
24 nov. 2010 à 11:58
Re
durée pour 6000 lignes: environ 0,6 secondes
(plus il y a de "rouges" plus c'est rapide)
démo durée:
http://www.cijoint.fr/cjlink.php?file=cj201011/cij4zmNYHm.xls
durée pour 6000 lignes: environ 0,6 secondes
(plus il y a de "rouges" plus c'est rapide)
démo durée:
http://www.cijoint.fr/cjlink.php?file=cj201011/cij4zmNYHm.xls
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
119
25 nov. 2010 à 12:05
25 nov. 2010 à 12:05
Bonjour, et merci pour ces programmes !
J'aurais dû préciser qu'il y avait des espaces dans mon tableau, parce que je tombe avec le programme de michel en remplaçant B1 par D10 sur ça :
Avant :
http://www.noelshack.com/
Après :
http://www.noelshack.com/
ça marche pas trop :D
En fait il me faudrait :
En partant de B1 (ou b10 peu importe)
A chaque ligne passée, si dans D"la ligne" la couleur est rouge,
Je supprime la ligne entière sinon
Je passe à la ligne suivante.
C'est tout :D
Merci encore pour votre attention !
J'aurais dû préciser qu'il y avait des espaces dans mon tableau, parce que je tombe avec le programme de michel en remplaçant B1 par D10 sur ça :
Avant :
http://www.noelshack.com/
Après :
http://www.noelshack.com/
ça marche pas trop :D
En fait il me faudrait :
En partant de B1 (ou b10 peu importe)
A chaque ligne passée, si dans D"la ligne" la couleur est rouge,
Je supprime la ligne entière sinon
Je passe à la ligne suivante.
C'est tout :D
Merci encore pour votre attention !
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
25 nov. 2010 à 12:24
25 nov. 2010 à 12:24
Bonjour
..."J'aurais dû préciser qu'il y avait... "
Il faut bien te rendre compte que ce que tu demandes n'est pas forcément facile et que personne ne veut ou ne peut passer parfois plusieurs heures à essayer de résoudre un problème bénévolement pour se voir dire après coup "En fait il me faudrait..."
Désolé
..."J'aurais dû préciser qu'il y avait... "
Il faut bien te rendre compte que ce que tu demandes n'est pas forcément facile et que personne ne veut ou ne peut passer parfois plusieurs heures à essayer de résoudre un problème bénévolement pour se voir dire après coup "En fait il me faudrait..."
Désolé
lml-mike
Messages postés
453
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
119
25 nov. 2010 à 13:30
25 nov. 2010 à 13:30
Désolé de t'avoir blessé, je voulais pas que tu croies que je demandais des gens à ma disposition pour mon problèmes. Ma phrase était maladroite :/
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
25 nov. 2010 à 14:30
25 nov. 2010 à 14:30
Je ne suis pas blessé, mais déçu et lassé d'essayer de donner des coups de mains bénévoles; il est certain que si tu avais donné ce problème contre rémunérations à un entrepreneur, tu aurais fait beaucoup plus fais attention à fournir des renseignements précis et complets car les flous dans le "cahier des charges" coutent très chers.
Ce n'est pas ta phrase qui est maladroite, c'est ta démarche globale.
Sans rancune
Ce n'est pas ta phrase qui est maladroite, c'est ta démarche globale.
Sans rancune