Créer un bouton qui active un filtre sur la colonne où il est placé

Bonjour le Forum,

J'aimerais faire un truc qui excède de beaucoup mes capacités en VBA :

J'ai un tableau (dont je joins une version simplifiée et anonymisée) pour gérer le travail de collaborateurs avec un projet par ligne, et une colonne par collaborateur.

Pour vérifier sur quel projet travaille tel collaborateur, j'active ou je désactive le filtrage sur la colonne correspondant au collaborateur.

Comme je le fais à de très nombreuses reprises et que l'ergonomie de la commande filtre n'est pas optimale pour faire ça, je rêve de créer un bouton par colonne, qui active/désactive le filtrage.

Je saurais le faire en créant autant de macros qu'il y a de colonnes, mais il doit y avoir une méthode générique pour le faire.

Quelqu'un saurait-il comment faire ?

Merci !!!

13xplanning.zip (11.47 Ko)

Bonjour,

Je te laisse cliquer sur la ligne 3...

Enjoy!

24xplanning.xlsm (25.86 Ko)

Magique !!!!

Je n'imaginais pas que c'était possible d'aboutir à qqch d'aussi simple.

Merci bcp bcp.

Une question : je ne comprends pas à quoi sert la ligne :

  If Target.Row = 3 Then
    Filtre Target.Column - 10

Salut Gloub,

Salut Oxydum,

j'ai peut-être mal interprété mais je voyais plutôt le filtrage par ligne...

Un clic en colonne [C:C] filtre selon le responsable projet, un autre en colonne [D:D] ré-affiche le tout.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
If Not Intersect(Target, Range("C:C")) Is Nothing Then If Target <> "" Then Call Lignes(1, Target.Value)
If Not Intersect(Target, Range("D:D")) Is Nothing Then Call Lignes(2, Target.Value)
'
End Sub

Public Sub Lignes(ByVal iIdx%, sItem$)
'
Rows.Hidden = False
If iIdx = 1 Then
    For x = 5 To Range("C" & Rows.Count).End(xlUp).Row
        If Range("C" & x).Value <> sItem Then Rows(x).Hidden = True
    Next
End If
'
End Sub

A+

9xplanning.xlsm (22.33 Ko)

Bonjour,

Merci pour ta contribution.

Le filtrage est bien par colonne : une fois le filtre activé, on n'affiche que les lignes qui comportent une croix dans la colonne où on a cliqué.

J'ai testé ton code, mais quand je clique sur la colonne C, j'obtiens une "erreur d'exécution 13" (incompatibilité de type).

Cela dit, la solution d'oxydum me va bien. Donc on peut s'arrêter là, sauf si tu veux continuer pour la beauté du geste.

En tous cas : merci.

Une question : je ne comprends pas à quoi sert la ligne :

  If Target.Row = 3 Then
    Filtre Target.Column - 10

Tes filtres commencent en colonne "K" (c'est la 11ème lettre de l'alphabet) donc le premier filtre vaut 11 - 10 = 1 tout simplement.

Oups : je m'aperçois que j'ai oublié de te répondre, et donc de te remercier.

Tout marche et j'ai bien compris – c'est super.

Merci pour tout !

Rechercher des sujets similaires à "creer bouton qui active filtre colonne place"