Bonjour,
Petit exemple qui masque les feuilles sélectionnées dans une liste (Contrôle ActiveX ListBox)
Dans l'illustration ci-dessous, nous pouvons voir à gauche une liste des feuilles que l'on souhaite masquer ou afficher et au milieu (hauteur des colonnes C:E le contrôle ActiveX ListBox
La liste des feuilles (A1:A5) est un tableau structuré
Il y a lieu de créer une plage nommée lstSheet qui fait référence aux données (sans le titre) du tableau structuré soit A2:A5 dans l'exemple ci-dessous
Le contrôle ActiveX se nomme ListBox1
Propriétés du ListBox à modifier
ListFillRange = lstSheet
MultiSelect = 1 (constante fmMultiSelectMulti)
Non obligatoire LifeStyle = 1 (constante fmListStyleOption)

Procédures
Module de la feuille
Dans le module de la feuille nommée Accueil
1 2 3 4
| Private Sub ListBox1_Change()
' Invoque la procédure qui va afficher ou masquer les feuilles sélectionnées
ListSheetSelectedToVisible Me.ListBox1
End Sub |
Module standard
Les deux procédures ci-dessous à placer dans un module standard du classeur où se trouve la feuille Accueil
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Function ListSheetSelectedToVisible(oList As MSForms.ListBox, Optional oWkb As Workbook) As Variant
' Procédure qui affiche ou masque les feuilles sélectionnées ou pas dans un ListBox
' Arguments
' oList Object Control UserForm ou ActiveX
' [oWkb] Classeur où se trouve les feuilles dont les noms ont été sélectionnés dans la liste
Dim Elem As Integer
If oWkb Is Nothing Then Set oWkb = ActiveWorkbook
'
With oList
For Elem = 0 To .ListCount - 1
oWkb.Worksheets(.List(Elem)).Visible = Not .Selected(Elem)
Next
End With
End Function |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Function GetListBoxSelected(oList As MSForms.ListBox, Optional oWkb As Workbook) As Variant
' Procédure qui renvoie la liste des éléments sélectionnés dans le contrôle ListBox
' Arguments
' oList ' ListBox
' [oWkb] ' Workbook (ActiveWorkbook si absent)
' Déclaration
Dim lst()
Dim Elem As Integer
Dim Count As Integer
'
With oList
For Elem = 0 To .ListCount - 1
If .Selected(Elem) Then
ReDim Preserve lst(Count)
lst(Count) = .List(Elem)
Count = Count + 1
End If
Next
End With
GetListBoxSelected = lst
End Function |
Partager