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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
599
Réponses
3
Affichages
464
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
638
Réponses
3
Affichages
537
Retour