Togglebutton masquer les lignes d'un tableau si Interior.ColorIndex = 4

Bonjour,

je souhaite créer un toggle button qui permettrai d'afficher/masquer les lignes vertes (Interior.ColorIndex = 4) de mon Tableau15 (feuille "GLOBAL"). Ce tableau comporte 16 colonnes (de A à P) et quelques lignes y sont ajoutées tous les jours.

De nombreuses lignes au fond vert ne nous intéressent pas, et je souhaiterai avoir la possibilité de masquer ces lignes pour ne faire apparaître dans ce tableau que les éléments importants.

Auriez-vous des éléments de réponse ?

Merci !

Personnellement je me suis lancé la dedans :

Private Sub ToggleButton2_Click()
With ToggleButton2
Dim ligne As Integer
For ligne = 1 To 100
If .Value = False Then
If Cells(ligne, 1).Interior.ColorIndex = 4 Then Rows(ligne & ":" & ligne).EntireRow.Hidden = True
End If
Next
For ligne = 1 To 100
If .Value = True Then
If Cells(ligne, 1).Interior.ColorIndex = 4 Then Rows(ligne & ":" & ligne).EntireRow.Hidden = False
End If
Next
End With
End Sub

Le problème est que c'est un peu lent, et surtout que c'est limité aux 100 premières lignes.

Je pense qu'un jour mon tableau dépassera les 100 lignes.

En tout cas, ça fonctionne...

Bonsoir,

Et pourquoi ne pas utiliser un filtre automatique ??

Effectivement, pourquoi pas !

J'ai absolument besoin d'un toggle button, mais peut-être peut-on associer les deux ? Je ne sais pas.

J'ai absolument besoin d'un toggle button, mais peut-être peut-on associer les deux ? Je ne sais pas.

Avec le toogle button, tu actives ou désactives le filtre automatique.

Je t'avouerai que je n'ai jamais fait.

Je vais essayer avec l'enregistreur de macro voir ce que ca dit.

Effectivement le filtre automatique fonctionne, mais je ne suis pas parvenu à l'associer au toggle button.

J'ai utilisé l'enregistreur de macro pour récuperer le code du filtre.

J'essaye ça mais sans succes :

Private Sub ToggleButton2_Click()
With ToggleButton2
If .Value = False Then
    ActiveWorkbook.Worksheets("GLOBAL").ListObjects("Tableau15").Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("GLOBAL").ListObjects("Tableau15").Sort.SortFields. _
        Add Key:=Range("Tableau15[[#All],[PRODUIT]]"), SortOn:=xlSortOnCellColor, _
        Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("GLOBAL").ListObjects("Tableau15").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
ElseIf .Value = True Then
    ActiveSheet.ListObjects("Tableau15").Range.AutoFilter Field:=4
    ActiveWindow.SmallScroll Down:=-21
End If
End With
End Sub

Je t'avouerai que je n'ai jamais fait.

Je vais essayer avec l'enregistreur de macro voir ce que ca dit.

L'enregistreur de macro doit être utilisé à bon escient, c'est à dire donner des indications sur le code à utiliser mais ne dot pas devenir le code car encombré de tas d'instructions inutiles qui l'alourdissent et le rendent difficile à lire.

J'ai la sensation que ce qui nous interesse c'est ça :

    With ActiveWorkbook.Worksheets("GLOBAL").ListObjects("Tableau15").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

et ça

    ActiveSheet.ListObjects("Tableau15").Range.AutoFilter Field:=4 
Private Sub ToggleButton2_Click()
With ToggleButton2
If .Value = False Then
    ActiveSheet.ListObjects("Tableau15").Range.AutoFilter Field:=4, Criteria1:= _
        RGB(255, 255, 255), Operator:=xlFilterNoFill
ElseIf .Value = True Then
    ActiveSheet.ListObjects("Tableau15").Range.AutoFilter Field:=4
End If
End With
End Sub

Merci thev !

Ce code pourrait convenir

Private Sub ToggleButton2_Click()
    Dim tableau As ListObject

    Set tableau = Sheets("GLOBAL").ListObjects("Tableau15")
    With ToggleButton2
        If .Value = False Then
            With tableau
                .Range.Sort key1:=.ListColumns("PRODUIT"), Order1:=xlAscending, Header:=xlYes
                .ShowAutoFilterDropDown = False
            End With
        End If
        If .Value = True Then
            With tableau
                .ShowAutoFilterDropDown = True
            End With
        End If
    End With
End Sub

Je ne dois pas avoir la bonne version d'excel, car j'ai une "Erreur d'execution 438 : Propriété ou méthode non gérée par cet objet ".

Il semble que ce soit en rapport avec .ShowAutoFilterDropDown = True

e ne dois pas avoir la bonne version d'excel, car j'ai une "Erreur d'execution 438 : Propriété ou méthode non gérée par cet objet ".

Il semble que ce soit en rapport avec .ShowAutoFilterDropDown = True

Dans ce cas, essayer la propriété : .ShowAutoFilter = True

Rechercher des sujets similaires à "togglebutton masquer lignes tableau interior colorindex"