Contexte
Par moment nous souhaitons que les utilisateurs ne filtrent que certains champs spécifiques d’une liste
Ce billet va vous montrer comment à l’aide d’une procédure VBA masquer une ou plusieurs des flèches de la ligne d’en-tête de la liste des données
IMPORTANT : On ne désactive pas le filtre automatique mais on modifie simplement la valeur booléenne de la propriété VisibleDropDown pour certains champs.
La procédure
Le code ci-dessous permet de masquer les flèches des colonnes 1, 2, 3, 6 et 7 du filtre automatique placé sur un tableau structuré présent dans la feuille nommée [db] et dont la propriété CodeName est shtData. C’est cette propriété qui est utilisée dans le programme
Procédure nommée HideArrowsSomeColumns
Sub HideArrowsSomeColumns()
  ' Masquer les flèches de certaines colonnes d'un filtre simple
  ' http://philippe.tulliez.be
  Dim Cell As Range, Column As Integer, lst As ListObject
  Application.ScreenUpdating = False
  With lst
    If Not .ShowAutoFilter Then .HeaderRowRange.AutoFilter
    For Each Cell In .HeaderRowRange
      Column = Column + 1
      Select Case Column
        Case 1 To 3, 6 To 7
          Cell.AutoFilter Field:=Column, Visibledropdown:=False
        Case Else
          Cell.AutoFilter Field:=Column, Visibledropdown:=True
      End Select
    Next
  End With
  Application.ScreenUpdating = True
End Sub
Liens
Pour savoir ce qu’est la propriété CodeName d’une feuille (objet Sheet, WorkSheet), à lire : VBA – CodeName d’une feuille Excel
					
L’objet lst n’est pas initialisé, que doit-il contenir ?