[Excel VBA] Filtre sur couleur de cellules...
Résolu/Fermé
PBGunner
-
17 oct. 2007 à 15:05
PBGunner Messages postés 64 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 29 juillet 2008 - 1 nov. 2007 à 23:54
PBGunner Messages postés 64 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 29 juillet 2008 - 1 nov. 2007 à 23:54
A voir également:
- Excel filtre couleur
- Excel cellule couleur si condition texte - Guide
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Liste déroulante excel - Guide
- Somme si couleur excel - Guide
- Si et excel - Guide
9 réponses
PBGunner
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
64
1 nov. 2007 à 23:54
1 nov. 2007 à 23:54
Voici le code finale, pas dans l'état le plus avancé, je n'ai pas eu le temps de le fignoler.
Ce code fait un filtre sur les couleurs, sur n'importe quelle colonne, en laisant la première ligne apparante et en prenant comme couleur de référence, la couleur de la premiere cellule de la colonne selectionnée...
J'espère que ca servira!
A+
Ce code fait un filtre sur les couleurs, sur n'importe quelle colonne, en laisant la première ligne apparante et en prenant comme couleur de référence, la couleur de la premiere cellule de la colonne selectionnée...
Sub Filtre_by_color() 'On gèle l'écran Application.ScreenUpdating = False 'Déclaration des variables Dim i, ColAct As Integer ColAct = ActiveCell.Column 'Detecte le numéro de la colonne active sur lequel sera effectué le filtre 'Code i = 2 'En partant de la 2ème ligne, on peut conserver une ligne d'entête While Not IsEmpty(Cells(i, 1)) If Not Cells(i, ColAct).Interior.ColorIndex = Cells(1, ColAct).Interior.ColorIndex Then Rows(i).EntireRow.Hidden = True End If i = i + 1 Wend End Sub
J'espère que ca servira!
A+
Argile92
Messages postés
10
Date d'inscription
vendredi 10 août 2007
Statut
Membre
Dernière intervention
26 novembre 2007
17 oct. 2007 à 15:11
17 oct. 2007 à 15:11
Sub Filtre() 'On gèle l'écran Application.ScreenUpdating = False 'Déclaration des variables Dim i As Integer 'Code i = 1 While Not IsEmpty(Cells(i, 1)) If Cells(i, 1).Interior.ColorIndex = 6 Then Cells(i, 2) = Cells(i, 1) End If i = i + 1 Wend End Sub
Tu peux également faire une boucle FOR si la taille de ta liste est toujours la même
Tu peux également changer la valeur de "ColorIndex" si tu souhaites filter d'autre couleur (ici, c'est pour le jaune)
Cordialement
PBGunner
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
64
17 oct. 2007 à 21:31
17 oct. 2007 à 21:31
Ce code recopie les valeurs qui sont en jaune dans une autre colonne. ensuite je pense qu'il faut ajouter un filtre auto sur ce champ supplémentaire avec un critère non vide...
J'avais déja fait ce type de macro avec l'utilisation d'une colonne supplémentaire, en écrivant simplement le code couleur, du coup on peut filtrer sur le type de couleur.
Avec ce type de manip on peut s'en sortir mais j'aimerai savoir si on peut se passer de créer une colonne supplémentaire?
Je pensais par exemple utiliser la fonction "autofilter" avec comme critière une propriété de la cellule... Un truc du genre:
Selection.AutoFilter Field:=2, Criteria1:= cell.Interior.ColorIndex = 6
Mais ca ne marche pas... Peut etre que la syntaxe est fausse... ou que le type d'argument attendu n'est pas valide...
D'autres idées?
J'avais déja fait ce type de macro avec l'utilisation d'une colonne supplémentaire, en écrivant simplement le code couleur, du coup on peut filtrer sur le type de couleur.
Avec ce type de manip on peut s'en sortir mais j'aimerai savoir si on peut se passer de créer une colonne supplémentaire?
Je pensais par exemple utiliser la fonction "autofilter" avec comme critière une propriété de la cellule... Un truc du genre:
Selection.AutoFilter Field:=2, Criteria1:= cell.Interior.ColorIndex = 6
Mais ca ne marche pas... Peut etre que la syntaxe est fausse... ou que le type d'argument attendu n'est pas valide...
D'autres idées?
PBGunner
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
64
20 oct. 2007 à 14:19
20 oct. 2007 à 14:19
Alors personne n'a d'autres idées pour faire un filtre avec un critère de couleur?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 254
20 oct. 2007 à 21:13
20 oct. 2007 à 21:13
Bonsoir,
A ma connaissance autofilter ne te permet pas ça.
Puisque dans ton code tu as le n° de ligne remplace
Cells(i, 2) = Cells(i, 1) par Rows(i).EntireRow.Hidden = True pour masquer la ligne, l'effet sera le même
eric
A ma connaissance autofilter ne te permet pas ça.
Puisque dans ton code tu as le n° de ligne remplace
Cells(i, 2) = Cells(i, 1) par Rows(i).EntireRow.Hidden = True pour masquer la ligne, l'effet sera le même
eric
PBGunner
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
64
23 oct. 2007 à 13:32
23 oct. 2007 à 13:32
Salut Eriiiic
Merci pour l'astuce, c'est mieux que de créer une colonne!
Ca répondra a mon besoin pour le moment.
Je vais quand même approfondir en essayant de trouver si on peut filtrer sur une variable...
a+
Merci pour l'astuce, c'est mieux que de créer une colonne!
Ca répondra a mon besoin pour le moment.
Je vais quand même approfondir en essayant de trouver si on peut filtrer sur une variable...
a+
PBGunner
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
64
29 oct. 2007 à 18:35
29 oct. 2007 à 18:35
Juste un petit ajustement: Ce code filtre sur la couleur mais exclue les enregistrement... en fait partout ou j'ai du jaune, les lignes sont cachées...
Pour filtrer sur la couleur il faut utiliser le code suivant:
Sub Filtre_by_color()
'On gèle l'écran
Application.ScreenUpdating = False
'Déclaration des variables
Dim i As Integer
'Code
i = 2 'En partant de la 2ème ligne, on peut conserver une ligne d'entête
While Not IsEmpty(Cells(i, 1))
If Not Cells(i, 1).Interior.ColorIndex = 6 Then
Rows(i).EntireRow.Hidden = True
End If
i = i + 1
Wend
End Sub
J'ai mis en gras les corrections que j'ai apporté.
Merci encore!
Pour filtrer sur la couleur il faut utiliser le code suivant:
Sub Filtre_by_color()
'On gèle l'écran
Application.ScreenUpdating = False
'Déclaration des variables
Dim i As Integer
'Code
i = 2 'En partant de la 2ème ligne, on peut conserver une ligne d'entête
While Not IsEmpty(Cells(i, 1))
If Not Cells(i, 1).Interior.ColorIndex = 6 Then
Rows(i).EntireRow.Hidden = True
End If
i = i + 1
Wend
End Sub
J'ai mis en gras les corrections que j'ai apporté.
Merci encore!
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 254
29 oct. 2007 à 19:00
29 oct. 2007 à 19:00
Bonjour,
Merci de la part de ceux qui liront plus tard pour le complément.
Bonne continuation
eric
Merci de la part de ceux qui liront plus tard pour le complément.
Bonne continuation
eric
PBGunner
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
64
29 oct. 2007 à 20:53
29 oct. 2007 à 20:53
Je travaille sur l'ajout des fonctionnalités: le code de mon précédent message ne fonctionnant que pour la première colonne, et plutot que de rentrer dans la macro le ColorIndex, on peut définir dans la première cellule de n'importe quelle colonne la couleur du filtre pour la colonne. Dès que j'ai fini le code, je le met en ligne!
a+
a+