Sélectionner plusieurs feuilles à masquer dans une ListBox [Résolu]

Signaler
Messages postés
7
Date d'inscription
vendredi 11 octobre 2019
Statut
Membre
Dernière intervention
16 novembre 2019
-
Messages postés
7
Date d'inscription
vendredi 11 octobre 2019
Statut
Membre
Dernière intervention
16 novembre 2019
-
Bonsoir,
J'ai un UserForm dans lequel il y a une ListBox pour sectionner les feuilles à imprimer.
Je souhaiterai que certaine feuille ne soit pas visible dans la ListBox.
En sachant, que dans l'original du projet il y aura 5 à 6 Feuilles à masquer.
Ce code ci-dessous masque la feuille index.
Private Sub UserForm_Initialize()
Dim S As Worksheet
ListBox1.MultiSelect = fmMultiSelectExtended
For Each S In Worksheets
If Not S.Name = "Index" Then
ListBox1.AddItem S.Name
End If
Next
TextBox1 = 0
End Sub

Je ne trouve pas de code pour masquer plusieurs feuilles à la suite.
J’aurais besoin de votre aide.
Je vous remercie par avance.

3 réponses

Messages postés
6831
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 juillet 2020
532
Bonjour,

tu n'as pas besoin de les masquer!

Il suffit de sélectionner dans la ListBox les feuilles à imprimer comme ceci:

Option Explicit
Private Sub CommandButton1_Click()
 Dim i As Byte
 Dim nom As String
     'boucle sur les éléments de la listbox
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
      nom = ListBox1.List(i)
      MsgBox nom
      'mettre le code des feuilles à imprimer ici en se servant de la variable nom
    End If
    Next i
End Sub
Private Sub UserForm_Initialize()
Dim S As Worksheet
ListBox1.MultiSelect = fmMultiSelectExtended
For Each S In Worksheets
ListBox1.AddItem S.Name
Next
End Sub


Messages postés
7
Date d'inscription
vendredi 11 octobre 2019
Statut
Membre
Dernière intervention
16 novembre 2019

Merci Le Pivert,



Si j'ai bien compris, je dois lister les feuilles à imprimer plutôt que de masquer les feuilles que je ne veux pas lister ?
Voici ci-desous les code complet du UserForm :

Private Sub apercu_Click()

Dim i As Integer

UserForm1.Hide

With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then Sheets(.List(i)).PrintPreview
Next
End With

UserForm1.Show

End Sub

Private Sub imprimer_Click()
Dim i As Integer
UserForm1.Hide

If Application.Dialogs(xlDialogPrinterSetup).Show = False Then
Exit Sub
Else
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then Sheets(.List(i)).PrintOut Copies:=TextBox1.Value
Next
End With
UserForm1.Show
End If
End Sub


Private Sub Label1_Click()

End Sub

Private Sub Label2_Click()

End Sub

Private Sub Label3_Click()

End Sub

Private Sub Label4_Click()

End Sub

Private Sub ListBox1_Click()

For i = 0 To .ListCount - 1
If ListBox1.Selected(i) Then Sheets(.List(i)).Select
Next
End With

End Sub

Private Sub ListBox2_Click()

End Sub

Private Sub UserForm_Initialize()
Dim S As Worksheet
ListBox1.MultiSelect = fmMultiSelectExtended
For Each S In Worksheets
If Not S.Name = "Index" Then
ListBox1.AddItem S.Name
End If
Next
TextBox1 = 0
End Sub

Du coup je vois pas où mettre la variable :
Nom = array("Feuille1","Feuille2","Feuille3")
Messages postés
6831
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 juillet 2020
532
comme ceci:

Private Sub CommandButton1_Click()
 Dim i As Byte
 Dim nom As String
     'boucle sur les éléments de la listbox
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
      nom = ListBox1.List(i)
      'mettre le code des feuilles à imprimer ici en se servant de la variable nom
  ActiveWorkbook.Sheets(nom).PrintOut
  End If
    Next i
End Sub


@+ Le Pivert
Messages postés
7
Date d'inscription
vendredi 11 octobre 2019
Statut
Membre
Dernière intervention
16 novembre 2019

Bonjour Le Pivert,
Problème résolu.
Private Sub UserForm_Initialize()
Dim S As Worksheet
sh = Array("Index", "Feuil1", "Feuil2")
ListBox1.MultiSelect = fmMultiSelectExtended
For Each S In Worksheets
t = Application.Match(S.Name, sh, 0)
    If IsError(t) Then
        ListBox1.AddItem S.Name
    End If
Next
TextBox1 = 0
End Sub

Merci encore pour ton aide.