selection d'onglets avec listbox pour copier dans un autre classeur

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 !

papapaul

XLDnaute Impliqué
Si ca peux vous aider, regarder ci-dessous

Voila j'ai cree mon userform avec mes noms de feuilles dans la listbox1

Private Sub UserForm_Initialize()
For Each c In ActiveWorkbook.Sheets
Listbox1.AddItem c.Name
Next
End Sub

Jusque la tout va bien

J'ai mis ma la listbox en multiselect et ecris ca pour un bouton(3) qui demande l'impression des feuilles selectionnées

Private Sub CommandButton3_Click()
Dim i As Integer
Dim bnoneselected As Boolean
bnoneselected = True
For i = 0 To Listbox1.ListCount - 1
If Listbox1.Selected(i) Then
bnoneselected = False
ActiveWorkbook.Sheets(i + 1).PrintOut
End If
Next
End Sub

Ca va toujours bien, mais quand je demande (avec un bouton4) .select ou select(index)au lieu de printout, (pour par exemple ajouter une colonne dans ces feuilles)

Private Sub CommandButton4_Click()
Dim i As Integer
For i = 0 To Listbox1.ListCount - 1
If Listbox1.Selected(i) Then
Sheets(Array(i + 1)).Select (Index)
End If
Next
End Sub

il selectionne bien ma demande mais garde la feuille de depart ou bien n'en selectionne qu'une.
Pareil qu'en je veux faire copy (pour copier ma selection dans un autre classeur) au lieu de printout, il en copie que une et pas toute ma selection, Help§§!!
🙁 😕 😱
 
Re : selection d'onglets avec listbox pour copier dans un autre classeur

papapaul à dit:
Si ca peux vous aider, regarder ci-dessous

Voila j'ai cree mon userform avec mes noms de feuilles dans la listbox1

Private Sub UserForm_Initialize()
For Each c In ActiveWorkbook.Sheets
Listbox1.AddItem c.Name
Next
End Sub

Jusque la tout va bien

J'ai mis ma la listbox en multiselect et ecris ca pour un bouton(3) qui demande l'impression des feuilles selectionnées

Private Sub CommandButton3_Click()
Dim i As Integer
Dim bnoneselected As Boolean
bnoneselected = True
For i = 0 To Listbox1.ListCount - 1
If Listbox1.Selected(i) Then
bnoneselected = False
ActiveWorkbook.Sheets(i + 1).PrintOut
End If
Next
End Sub

Ca va toujours bien, mais quand je demande (avec un bouton4) .select ou select(index)au lieu de printout, (pour par exemple ajouter une colonne dans ces feuilles)

Private Sub CommandButton4_Click()
Dim i As Integer
For i = 0 To Listbox1.ListCount - 1
If Listbox1.Selected(i) Then
Sheets(Array(i + 1)).Select (Index)
End If
Next
End Sub

il selectionne bien ma demande mais garde la feuille de depart ou bien n'en selectionne qu'une.
Pareil qu'en je veux faire copy (pour copier ma selection dans un autre classeur) au lieu de printout, il en copie que une et pas toute ma selection, Help§§!!
🙁 😕 😱
Salut
Tu ne peux pas utiliser Array comme ça (à ma connaissance)
il y a déjà eu un sujet dans ce style, et on avait été bobligé de passer par une sélection d'un tableau et avec un select case, suivant le nombre de feuilles à sortir en valeur dans le style

Select case ubound(Tab_V,1) 'noms des onglets
_____ case 1
_____ _____ sheets(tab_V(1)).select
_____ case 2
_____ _____ sheets(array(tab_V(1),tab_V(2))).select
_____ case 3
_____ _____ sheets(array(tab_V(1),tab_V(2),tab_V(3))).select

etc.
Mais je suis preneur d'une autre méthodologie
A+
 
Dernière édition:
Re : selection d'onglets avec listbox pour copier dans un autre classeur

😛 Presque résolu!😎

J'ai ecouté Gorfael (merci à lui) sauf que j'ai "marié" une array
avec une sorte de Ubound

J'ai salement ramé mais j'ai trouvé ca pour la copie
de ma selection de feuille avec un bouton(1).

C'est surement pas le plus simple mais chez moi, ca marche 🙂

Private Sub userform_initialize()
For Each c In ActiveWorkbook.Sheets
ListBox1.AddItem c.Name
Next
End Sub

Petite précision, je mets ma listbox1 est en proprieté multiselect.

Private Sub CommandButton1_Click()
Dim i As Integer
Dim tmp As Integer
Dim myarray() As Variant
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
ReDim Preserve myarray(tmp)
myarray(tmp) = ListBox1.List(i)
tmp = tmp + 1
End If
Next
End With
For i = 0 To UBound(myarray)
Worksheets(myarray).Copy

***peut etre pas besoin de ca en-dessous mais c'est plus sur***

Next
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then .Selected(i) = False
Next i
End With
End Sub

Ca me crée un nouveau classeur "classeur x" ou se mettent mes feuilles.

Me reste plus qu'a faire en sorte que avant la copie dans ce nouveau classeur, excel me demande de lui donner un nom.

Faut que j'"invente" une boite de dialogue?

Ca ferait plus perfectionniste, hi

Salut à tous 😉
 
- 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
10
Affichages
294
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
365
Réponses
10
Affichages
800
Réponses
4
Affichages
205
Retour