Copier les sélections d'une listbox

  • Initiateur de la discussion Pascal
  • Date de début
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

  • Imprimer.zip
    17.6 KB · Affichages: 18
  • Imprimer.zip
    17.6 KB · Affichages: 15
  • Imprimer.zip
    17.6 KB · Affichages: 13
Z

Zon

Guest
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+++
 
P

Pascal

Guest
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

  • Imprimer.zip
    21.8 KB · Affichages: 22
  • Imprimer.zip
    21.8 KB · Affichages: 25
  • Imprimer.zip
    21.8 KB · Affichages: 21
Z

Zon

Guest
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+++
 
P

Pascal

Guest
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
 

Discussions similaires

Statistiques des forums

Discussions
314 190
Messages
2 106 992
Membres
109 734
dernier inscrit
JoFco