Copier les sélections d'une listbox

  • Initiateur de la discussion Initiateur de la discussion Pascal
  • Date de début Date de début

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 !

P

Pascal

Guest
Bonjour à tous sur le forum
Débutant en Vba, dés que je cherche à sortir de l'ordinaire (mon ordinaire, tout est relatif...), je me heurte à mon incompétence.
Dans mes projet, pour imprimer un choix de feuilles, j'utilise l'excellent travail d'un pro que j'avais téléchargé sur ce forum il y a dèjà quelques mois.
Ce que j'aimerai faire cette fois, c'est de pouvoir copier les feuilles selectionnées dans un nouveau dossier... et là , retour à mon incompétence dont j'ai parlé plus haut.
Si quelqu'un pouvait m'aider, je joins le fichier dont je me sert habituellement (désolé, je ne me rappelle plus le nom de la personne qui l'a créé, mais je tiens également à le remercier si par hasard il était à l'écoute).
Voilà, merci d'avance et bonne journée à tous.
Pascal
 

Pièces jointes

Salut,

Je pense qu'en travaillant avec SaveAs ça devrait t'aller.

Private Sub CmdCopieSelection_Click()
Application.ScreenUpdating = False
For I = 0 To LbFeuilles.ListCount - 1
If LbFeuilles.Selected(I) = True Then
Sheets(LbFeuilles.List(I)).Copy
Activeworkbook.saveas "C:\tonrepertoire\Nomdefichier.xls"
Activeworkbook.close 0
End If
Next I
Unload Me
...

SI tu veux un dossier sélectionner par l'utilisateur tu peux utiliser application.getsaveasfilename:
Rep=application.getsaveasfilename
If rep <> false then
activeworkbook.saveas toto
Activeworkbook.close 0
end if

A+++
 
Bonjour Zon
Bonjour le forum

Merci de ton aide Zon.
J'ai essayé ton code et il fonctionne lorsque je sélectionne une feuille uniquement à copier.
Par contre si je sélectionne 2 feuilles ou plus, il copie chaque feuille dans un nouveau classeur (1 classeur >>> 1 feuille) et comme je lui attribue un nom unique, il me demande si je veux écraser le fichier existant.
A la fin, je me retrouve donc avec une copie de la dernière feuille sélectionnée sur la listbox.
Est-il possible d'avoir une copie de toutes les feuilles sélectionneés (cochées) dans un seul classeur ?
En espérant ne pas trop abuser

Cordialement
Pascal
 

Pièces jointes

Salut,

Colles ceci dans le module de ton userform:

Dim T() 'à déclarer au niveau module
Private Sub CmdCopieSelection_Click()
Application.ScreenUpdating = False
If ListeMulti(LbFeuilles) Then CopieF ("D:\Rapports\Essai.xls")
Unload Me
End Sub
Private Function ListeMulti(Ctrl As MSForms.ListBox) As Boolean
Dim J&
ReDim T(J)
With Ctrl
For I = LBound(.List) To UBound(.List)
If .Selected(I) Then
ReDim Preserve T(J)
T(J) = .List(I)
J = J + 1
ListeMulti = True
End If
Next I
End With
End Function
Private Sub CopieF(Chemin$)
Dim Classeur As Workbook
Set Classeur = Workbooks.Add(xlWBATWorksheet) '1 seule feuille dans le nouveau classeur
For I = LBound(T) To UBound(T)
ThisWorkbook.Worksheets(T(I)).Copy , Classeur.Worksheets(I + 1) 'On copie aprés la 1 ere feuille et ainsi de suite
Next I
Application.DisplayAlerts = False
With Classeur
.Worksheets(1).Delete
.SaveAs Chemin
.Close
End With
End Sub

A+++
 
Bonjour Zon,

Ecoute! Je ne sais pas quoi dire...
Merci et re-merci, ça fonctionne du tonnerre.
J'espère que ce n'est pas à cause de moi et de mon problème que tu es resté si tard (tôt!!) éveillé cette nuit.
Encore Merci Mille fois et @+

Pascal
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour