Macro Filtre en fonction couleur, probleme de sélection

Bonjour,

Je vous joins un fichier qui illustre mon problème survenant sur un de mes projets.

L'objectif est de pouvoir cliquer sur les boutons en ligne 1 afin de pouvoir filtre les lignes du tableau.

Aucun soucis pour filtrer mes lignes. C'est pour effacer mes filtres que j'ai un problème.

Je ne sais pas comment coder :

Sélection de la ligne 3, jusqu'à la dernière ligne non vide puis hauteur ligne en 15.

Pour illustrer mon problème voici la marche à suivre:

Cliquer sur bouton 2 (couleur jaune)

Cliquer sur bouton Effacer filtre

PROBLEME : il y avait 10 ligne coloriée au départ, après effacement des filtres il n'en reste que 8 visibles...

Merci d'avance,

Cordialement

Antoine

Remplace la hauteur de ligne par ce code dans ta procédure filtre:

    Range("A3:A1048576").Select
    Selection.EntireRow.Hidden = False

Sa sélectionne toute tes ligne et affiche celle cachée.

(Ton programme filtre ne faisait que les redimensionner )

Bonjour Sebnormand,

Merci de ta réponse, désormais le bouton "effacement filtre" fonctionne correctement.

J'ai cependant toujours un problème de sélection.

Lorsque je clique sur n'importe quel filtre, tout est ok, je n'ai que des lignes de couleurs associés au filtre, MAIS, lorsque je clique ensuite sur un autre filtre, sans recliquer sur effacer filtre, j'ai des lignes de couleurs différentes qui s'affiche.

Voici le code d'un de mes filtres :

Sub filtre_jaune()

Dim DerLig As Long

Application.ScreenUpdating = False

        Range("A3:A1048576").Select
        Selection.EntireRow.Hidden = False
        Range("A1").Select

        Range("A3:A1048576").Select
            If Selection.Interior.Color <> 65535 Then
                Selection.EntireRow.Hidden = True
            End If
        Range("A1").Select

End Sub

Merci d'avance,

Batoine

A ce moment la, dans tous tes filtres de couleur appele ton filtre effacer pour "RAZ" des filtre:

Call effacer_filtre

Rajoute cette ligne au début de ton code

Autre chose, vérifie tous tes filtres , ils n'ont pas tous le même code (Filtre jaune, manque une ligne)

A tester

Plutôt que de faire appel à la macro effacer_filtre, j'ai volontairement recopié les 3 lignes de codes de cette macro. Je préfère éviter de faire trop de liens entre les macros, afin de mieux pouvoir les dissocier en cas de problème...

Je n'arrive pas à trouver la ligne de code manquante pour mon filtre jaune... Un indice ?

Sinon mes codes de filtres sont différents. C'est aussi volontaire. Car en exécutant mon filtre jaune après avoir modifier le début du code correspondant à l'effacement des filtres (s'il y en a un), j'obtiens une erreur. Enfin plutôt un effet non désiré, l'ensemble des lignes de mon tableaux disparaissent et sont toutes blanches...

J'imagine que cela provient de ma ligne de code manquante ?

Cordialement,

Batoine

C'est par ce que ton filtre jaune n'est pas écris de la même façon que les autres

Remplace ta sélection par le même code que tes autres filtres

Bonjour sebnormand,

Décidément vous m'êtes d'une grande aide sur mes différents problèmes. Un grand merci !

J'ai modifié le filtre jaune, il est rigoureusement identique aux autres (cf fichier joins)

Mais décidément un problème subsiste. J'aimerai pouvoir, par mesure de sécurité, que le futur utilisateur puisse cliquer par ex :

Sur "bouton 1" --> puis ---> "bouton 2" et qu'il n'apparaissent que des lignes jaune.

J'en conclue que le problème viens de l'interprétation de DerLig par VBA.

Je ne sais pas si je suis assez claire, voici donc un autre exemple :

"bouton 4" --> puis ---> "bouton 1"

Merci d'avance,

Batoine

Bonjour,

Une alternative.

Cdlt.

Public Sub Vert()
    Application.ScreenUpdating = False
    Set objList = ActiveSheet.ListObjects(1)
    ActiveSheet.ListObjects(1).Range.AutoFilter _
            Field:=1, _
            Criteria1:=RGB(0, 255, 0), _
            Operator:=xlFilterCellColor
    Set objList = Nothing
End Sub
Public Sub RAZ()
    ActiveSheet.ListObjects(1).ShowAutoFilter = False
End Sub

Bonjour Jean-Eric,

Merci pour votre réponse et votre code qui fonctionne !

Cependant lorsque je l'insère dans mon projet, j'ai un soucis.

J'ai effectivement vu que vous aviez définis un nom pour le tableau : Tableau1. J'ai donc fais la même chose, cependant j'ai pris un zone plus large pour que les prochains lignes crées soient inclus dans ces différentes macro. Je lui ai donné le même nom.

Lorsque j'exécute cette macro, j'obtiens un message d'erreur n°9 : l'indice n'appartient pas à la sélection. Et m'indique cette ligne de code :

Set objList = ActiveSheet.ListObjects(1)

Pouvez-vous m'expliquer le fonctionnement de l'objetList, Je cherche sur internet mais ne trouve pas d'xplication concluante...

Merci d'avance,

Batoine

Re,

Comment as-tu crée ton tableau?

Cdlt.

Bonjour Jean-Eric,

Pour définir mon tableau, j'ai suivi le chemin suivant :

- onglet formules --> Noms définis --> Définir un nom

Et ensuite

nom : Tableau1

Zone : Classeur

Commentaire :

Fait référence à : MaFeuil'$A$3:$C$2000

J'ai fait une erreur ?

Cordialement,

Batoine

Bonjour,

Il faut utiliser un tableau (dynamique), tel que le menu Excel te le propose.

Avec Excel 2010, on trouve cette commande dans le ruban.

Tu sélectionnes une cellule de ta plage de données puis Ctrl+*.

Menu Accueil / Mettre sous forme de tableau.

* ou directement en sélectionnant une celle de ta plage et en faisant Ctrl + L.

Cdlt.

nota : Dans gestionnaire de noms, tu verras que l'adresse du tableau ne prend pas en compte la ligne des entêtes!

Re Jean-eric,

Mille merci, ça fonctionne à merveille ! Sujet résolu.

Bien cordialement,

Batoine

Re,

Un merci suffisait.

Pense à clore le sujet.

A bientôt sur le forum.

Rechercher des sujets similaires à "macro filtre fonction couleur probleme selection"