copie d'une feuille d'un classeur dans un nouveau classeur

meldja

XLDnaute Impliqué
Bonjour,
J'ai créé un fichier qui ne peut contenir que 12 feuilles (12 mois d'une année). Au delà, il faut créer un nouveau fichier.
J'ai réussi à adapter du code pour faire une copie de mon fichier actif :

Code:
Dim monfichier As String

'Si ton fichier contient 12 feuilles
If Sheets.Count = 12 Then

'Message
Select Case MsgBox("Il y a déjà 12 feuilles," & vbCr & vbCr & _
"vous ne pouvez pas en créer d'avanage !" & vbCr & vbCr & _
"Voulez-vous créer un autre fichier ?", vbYesNo, "DESOLE !!")

Case vbYes
'Si tu réponds OUI
ActiveWorkbook.Save
'ça c'est pour ne pas perdre le travail effectué sous ton fichier _
d'origine avec le nom d'origine, ça paraît idiot mais je l'avais pas mis au début.

 monfichier = "C:\Documents and Settings\passeport\Bureau\" _
 & Sheets(1).Range("K1").Value
'ça c'est pour définir le nom de ta copie, ici elle prendra le nom de ta cellule A1 feuille 1 + jour - mois - année


If Dir(monfichier & ".xls") <> "" Then
MsgBox ("Un fichier de ce nom existe déjà, veuillez le supprimer/déplacer avant nouvelle copie")
Else
monfichier = monfichier & ".xls"
ActiveWorkbook.SaveAs Filename:=monfichier, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Sheets(1).Range("L1") = ActiveWorkbook.Sheets(1).Range("L1") + 1

Workbooks.Open Filename:="C:\Documents and Settings\passeport\Bureau\Barbara.xls"
'ça c'est si tu veux réouvrir ton fichier d'origine pour faire de nouvelles copies

MsgBox ("Fichier créé dans C:\Documents and Settings\passeport\Bureau\")
End If

Case vbNo
'Si tu réponds NON
Exit Sub
'La procédure est quittée

End Select

Else

Seulement, j'aurais aimé qu'il n'y ait qu'une feuille dans le nouveau fichier et que ce soit la première feuille de mon fichier à partir duquel je lance la macro.

Ca me parait bien compliqué. Dans le cas où ça le serait effectivement trop, je peux toujours supprimer les feuilles 2 à 12 mais là encore, j'ai un problème : à chaque feuille supprimé, j'ai un message d'avertissement. Il me semble avoir vu quelque part "application.setwarning = false" mais je ne m'en souviens plus et je ne trouve pas sur le Net.
Pour résumer, l'idéal serait la première solution : ne sauvegarder que la première feuille du classeur actif.
Sinon je prendrais la deuxième solution (suppression des feuilles sans message d'alerte).
Merci d'avance et bonne journée
 

kjin

XLDnaute Barbatruc
Re : copie d'une feuille d'un classeur dans un nouveau classeur

Bonjour,
Code:
    Sheets(1).Copy 'crée une copie de la feuille 1 dans un nouveau classeur
    Activeworkbook.SaveAs [I]lechemin et le nom du fichier[/I]
    ActiveWorkbook.Close 'ferme le nouveau classeur
A+
kjin
 

meldja

XLDnaute Impliqué
Re : copie d'une feuille d'un classeur dans un nouveau classeur

Salut,
Kjin, merci et désolé de pas avoir pu te remercier avant.
Avec Sheets(1).Copy, mon problème est solutionné.
J'ai encore quelques petits soucis avec une formule de calcul pour récupérer le chemin d'accès du fichier (cellule("filename")) qui ne se met pas toujours à jour.
Je pense que je vais remplacer cette formule de calcul par du code VBA. Je pense trouver facilement la solution sur le Net.

Encore merci et bonne journée à tout le monde.
 

Discussions similaires

Statistiques des forums

Discussions
312 213
Messages
2 086 305
Membres
103 174
dernier inscrit
OBUTT