Macro filtre couleur

Bonjour,

Après pas mal de recherche je ne trouve pas....

Je recherche à faire un bouton tous simple qui filtre ma liste par couleur.

Donc juste quand je clic en A1 sur une cellule verte avec marqué 'bio' dedans, tous les articles de cette page avec la même couleur verte à partir de A13 vont s'afficher.

Merci pour votre aide.

Bonjour,

Vous ne précisez pas si les couleurs sont issues de mises en formes conditionnelles ou pas.

Les cellules vertes contiennent-elles uniquement le mot "BIO"

sinon les filtres par couleurs existent, mais si celles-ci ne sont pas issues de MFC.

yanmdr

Cdlt

Je voudrais faire un filtre sur des couleurs différentes mais que lorsque j'appuie sur un bouton et non en filtre automatique.

Voici mon fichier

la j'ai réussi à mettre des filtres sur des noms mais c'est deux action différente dans la même macro et donc si on passe de l'une à l autre sans passer par le bouton tous les articles ca passe pas....

en gros si on clic sur Rhums ca marche et ainsi de suite dans les catégories mais si je ne clic pas sur le bouton toute la liste je ne sais pas passer sur le bouton bio.

En gros les deux action ne s'additionne pas je pense...

J'ai deux action dans "Worksheet_BeforeDoubleClick" et je ne sais pas comment faire pour que les deux s'additionne.

Ou alors créé un filtre de couleurs pour la colonne ou il y a bio , hors stock, etc...

Bonjour,

Je ne peux pas ouvrir votre fichier, problème de version excel(je suis sur 2007) lié probablement à des MFC non compatibles.

Pouvez-vous envoyer une copie de votre fichier sans les MFC et dire à part ce que vous voulez dans les MFC ?

Cdlt

Le problème est que c'est mieux que vous ayez le fichier opérationnel pour comprendre, mais voici mon code deja :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Not Application.Intersect(Target, Range("B2:B11")) Is Nothing Then
    Worksheets("BDD").ListObjects("BDD").DataBodyRange.AutoFilter Field:=12, Criteria1:=Target(1)
    Range("A12").Offset(1, 0).Activate
Else

If Not Application.Intersect(Target, Range("B12")) Is Nothing Then
    Worksheets("BDD").ListObjects("BDD").AutoFilter.ShowAllData

Else

If Not Application.Intersect(Target, Range("D2:D6")) Is Nothing Then
    Worksheets("BDD").ListObjects("BDD").DataBodyRange.AutoFilter Field:=15, Criteria1:=Target(1)
    Range("D7").Offset(1, 0).Activate
Else

If Not Application.Intersect(Target, Range("D7")) Is Nothing Then
    Worksheets("BDD").ListObjects("BDD").AutoFilter.ShowAllData
    End If
    End If
    End If
    End If
End Sub
capture01

Le filtre avec les colonnes B une fois qu'on clic dessus on ne peu pas aller sur le filtre avec les colonnes D sans passer par le Showalldata.

Mais comme c'est 2 actions dans la même macro c'est peut-être pour ça ?

Merci.

Vous ne pouvez pas mettre un fichier simplifié (sans données confidentielles) sans MFC, mais de même structure et uniquement avec les valeurs, ça m'aiderait grandement, sinon il faut espérer que quelqu'un ouvre votre fichier.

Edit: je viens de voir l'image postée après coup, je vais me baser la dessus.

ReEdit:

Je vois que vous voulez appliquer le même critère "Target(1)" à 2 colonnes différentes, normalement on devarit avoir quelque chose dans ce genre

    ActiveSheet.ListObjects("BDD").Range.AutoFilter Field:=2, Criteria1:=Variable_1
    ActiveSheet.ListObjects("BDD").Range.AutoFilter Field:=4, Criteria1:=Variable_2

Ca ne marche pas

En fait le filtre des categorie en B filtre sur la colonne L (12) Par nom

Et le filtre des Statut colonne D filtre sur la colonne O(15) Par nom aussi.

Mais les deux action en même temps ne vont pas c'est à dire que quand je clic sur Gin par exemple après si je clic sur BIO il m'affiche en dessous tous vide

Je dois cliquer sur un des deux Toute le liste et là ça re fonctionne.

Mais pas passer des catégorie au statut.

C'est normal que ça ne marche pas, Target vous sert pour les 2 critères , mais à chaque double-clic vous perdez le premier critère, il faut mémoriser chaque critère à part. Vous disposez des cellules A1 et A2 libres, profitez-en pour y mémoriser les sélections que vous venez de faire. Je vous joins un fichier en exemple, faites une première sélection dans B2:B11, la valeur sélectionnée est copiée en A1, puis une deuxième sélection en D2:D6 (je n'ai pas rempli toutes les cellules), la sélection est recopiée en A2 et le filtre est appliqué dans la foulée.

le code

Dim Crit1 As String, Crit2 As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("B2:B11")) Is Nothing Then
        Range("A1").Value = Target
        Crit1 = Range("A1").Value
    ElseIf Not Application.Intersect(Target, Range("D2:D6")) Is Nothing Then
        Range("A2").Value = Target
        Crit2 = Range("A2").Value
    End If
    Filtre
End Sub

Sub Filtre()
    ActiveSheet.ListObjects("BDD").Range.AutoFilter Field:=12, Criteria1:=Crit1
    ActiveSheet.ListObjects("BDD").Range.AutoFilter Field:=15, Criteria1:=Crit2
End Sub

le fichier

Cdlt

Quand je l'intègre à mon code ca fonctionne pas et ca affiche vide quand je clic sur n'importe quel bouton

Bonjour YANMDR, Arturo83,

Si le double-clic ne sert que pour les colonnes B et D.

Autant mettre le ShowAllData au début du code.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Worksheets("BDD").ListObjects("BDD").AutoFilter.ShowAllData

If Not Application.Intersect(Target, Range("B2:B11")) Is Nothing Then
etc...

Voire pour plus de sécurité vérifier par une condition si on cible les colonnes B ou D et lignes (non-vides) < 13

Merci à vous deux en effet mettre le ShowAllData au début du code est la bonne solution

Mais par contre si je clic en B ... sur une ligne vide ou en D.... ligne vide cela agit comme un showall aussi ( bouton TOUTE LA LISTE )

Bonjour YANMDR,

Je rappelle la fin de mon dernier message.

Voire pour plus de sécurité vérifier par une condition si on cible les colonnes B ou D et lignes (non-vides) < 13

Apparemment tu n'as pas lu le message en entier.

Je pense que tu sais réaliser une condition IF vu celle présente dans ton programme.

Yesss Super merci !!! ;-)

Rechercher des sujets similaires à "macro filtre couleur"