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

Messages postés
3
Date d'inscription
vendredi 11 octobre 2019
Statut
Membre
Dernière intervention
12 octobre 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.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
6271
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2019
398
1
Merci
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


Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 62878 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Le Pivert
Messages postés
3
Date d'inscription
vendredi 11 octobre 2019
Statut
Membre
Dernière intervention
12 octobre 2019
0
Merci
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")
cs_Le Pivert
Messages postés
6271
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2019
398 -
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
Commenter la réponse de hokousai
Messages postés
3
Date d'inscription
vendredi 11 octobre 2019
Statut
Membre
Dernière intervention
12 octobre 2019
0
Merci
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.
Commenter la réponse de hokousai