Copier feuille active et l'enregistrer sous

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous :)

Comment copier la feuille active et l'enregistrer sous un autre nom, voici la macro:

Code:
Option Explicit
Sub Copie_Feuille_Active()
Dim chemin$, nom$, cel As Range
Application.ScreenUpdating = False
chemin = ThisWorkbook.Path & "\"
With Feuil1
For Each cel In .Range("a2:a6")
nom = cel.value & ".xls"
.Copy
ActiveSheet.SaveAs Filename:=chemin & nom, FileFormat:=xlExcel8
ActiveWindow.Close
Next cel
End With
End Sub

ThisWorkbook.Path & "\" si les feuilles vont dans le même dossier du classeur source, sinon mettre le chemin complet. Exemple: "C:\Users\Toto\AppData\Roaming\Mes classeurs\"

Et pour l'exécuter sans avoir besoin d'un bouton

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call Copie_Feuille_Active
Cancel = True
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Loup Solitaire
J'ai du mal à comprendre le pourquoi de ta boucle sur la range("a2:a6")
Personnellement pour copier la feuille active, un truc du genre suffirait, non ?
VB:
Sub CopieFeuilleActive()
ActiveSheet.Copy: ActiveWorkbook.SaveAs InputBox("Nom de la sauvegarde?", "Copie Feuille Active", Split(Application.Name)(1) & ".xlsx"), 51
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re JM :)


La macro sert à copier la feuille sous un nom différent. Et pour répondre à ta question:

Par-ce que c'est moins répétitif que d'utiliser ImputBox et à chaque fois rentrer le nom de la feuille. Imagine que tu aie 15 feuilles ou plus à copier. Dans ce cas, la boucle ne serait utile à nulle part si on devrait traiter plusieures lignes ou feuilles avec celle-ci(ImputBox). C'est bien pour cela que les boucles existent non?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Le titre de ta discussion était
Comment copier la feuille active et l'enregistrer sous un autre nom
Donc 1 feuille et 1 nom*

D’où ma réponse qui en une ligne VBA copie la feuille active sous un autre nom ;)
(*1 feuille, 1 copie, 1 nom : par conséquent l'inputbox n'apparait qu'une seule fois)

Maintenant si tu avais écris
Comment copier la feuille active N fois et l'enregistrer sous N noms stockés dans une plage de cellules

Nous n'aurions pas cet échange ce soir ;)
 

Lone-wolf

XLDnaute Barbatruc
C'est vrai, j'aurais dû changer le titre tout de suite. Milles excuses.

Et en gardant le même titre j'aurais dû mettre celle-ci comme macro.

VB:
Option Explicit
Sub Copie_Feuille_Active()
Dim chemin$, nom$, i&
Application.ScreenUpdating = False
chemin = ThisWorkbook.Path & "\"
For i = 1 To ThisWorkbook.Sheets.Count
nom = Sheets(i).Range("a2").Value & ".xls"
Sheets(i).Copy
ActiveSheet.SaveAs Filename:=chemin & nom, FileFormat:=xlExcel8
ActiveWindow.Close
Next i
End Sub
 

Staple1600

XLDnaute Barbatruc
RE

Sauf que le nom de la macro devrait être alors, par exemple ;)
Sub CreerUnClasseurParFeuillesPresentesDansLeClasseurActif()

PS1: Et quid si A2 est vide ou contient des caractères interdits ?

PS2: Pas besoin de t'excuser, je faisais juste un trait d'humour, camarade canidé ;)
 

Lone-wolf

XLDnaute Barbatruc
Bonjour JM

PS1: Et quid si A2 est vide ou contient des caractères interdits ?

Là tu cherche la petite bête. Dis moi quel est l'interêt à exécuter une macro sur une feuille vide et quels seraient ces caractères interdits??? :rolleyes:. Entre nous, si tu écrit @+*-/$ au lieu de toto-tata-titi etc , là il y a un sérieux problème; à moins d'être un extra terrestre.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 092
Messages
2 085 218
Membres
102 826
dernier inscrit
ag amestan