XL 2016 Affichage onglets d'un classeur dans la listbox d'un userform

jeff2318

XLDnaute Nouveau
Bonsoir le forum,
J'ai un classeur contenant une trentaine d'onglets. Une listbox affichée dans un userform, me permet de sélectionner la feuille que je souhaite afficher (j'ai trouvé l'USF sur le net, mais je ne sais plus sur quel site !!). Dans le classeur, certaines feuilles sont masquées.

Le code de l'USF est le suivant :

Private Sub UserForm_Initialize()
' For i = 1 To Sheets.Count
' Me.ListBox1.AddItem Sheets(i).Name
' Next i
Dim temp()
For i = 1 To Sheets.Count
ReDim Preserve temp(1 To i)
temp(i) = Sheets(i).Name
Next i
n = UBound(temp)
Call Tri(temp, 1, n)
Me.ListBox1.List = temp
End Sub
----------------------------------
Private Sub ListBox1_Click()
m = Me.ListBox1
Sheets(m).Select
End Sub

Mon problème est le suivant. La listbox affiche tous les feuilles présentes dans le classeur, y compris celles qui sont masquées. La sélection dans la listbox d'une feuille masquée provoque par conséquent un plantage de la macro, ce qui est logique.

Ma question, est-il possible d'adapter le code ci-dessus afin que la listbox n'affiche que les feuilles non masquées du classeur ?

Merci par avance de votre aide et cordiales salutations.
 

Gégé-45550

XLDnaute Accro
Bonsoir le forum,
J'ai un classeur contenant une trentaine d'onglets. Une listbox affichée dans un userform, me permet de sélectionner la feuille que je souhaite afficher (j'ai trouvé l'USF sur le net, mais je ne sais plus sur quel site !!). Dans le classeur, certaines feuilles sont masquées.

Le code de l'USF est le suivant :

Private Sub UserForm_Initialize()
' For i = 1 To Sheets.Count
' Me.ListBox1.AddItem Sheets(i).Name
' Next i
Dim temp()
For i = 1 To Sheets.Count
ReDim Preserve temp(1 To i)
temp(i) = Sheets(i).Name
Next i
n = UBound(temp)
Call Tri(temp, 1, n)
Me.ListBox1.List = temp
End Sub
----------------------------------
Private Sub ListBox1_Click()
m = Me.ListBox1
Sheets(m).Select
End Sub

Mon problème est le suivant. La listbox affiche tous les feuilles présentes dans le classeur, y compris celles qui sont masquées. La sélection dans la listbox d'une feuille masquée provoque par conséquent un plantage de la macro, ce qui est logique.

Ma question, est-il possible d'adapter le code ci-dessus afin que la listbox n'affiche que les feuilles non masquées du classeur ?

Merci par avance de votre aide et cordiales salutations.
Bonsoir,
Modifier le code comme ceci :
VB:
Private Sub UserForm_Initialize()
  Dim temp()
  For i = 1 To Sheets.Count
    ReDim Preserve temp(1 To i)
    If Sheets(i).Visible = xlSheetVisible Then temp(i) = Sheets(i).Name
  Next i
  n = UBound(temp)
  Call Tri(temp, 1, n)
    Me.ListBox1.List = temp
End Sub
Cordialement,
 

Discussions similaires

Réponses
7
Affichages
591
Réponses
4
Affichages
417

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505