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:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas