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
Commentaires récents