Macro pour enregistrer dans une nouvelle feuille ,la feuille de travail

Bonjour ,
je souhaite créer une macro qui permet d’enregistrer une feuille active en créant un nouvelle feuille dans le même classeur et qui se nommerait automatiquement a partir d’un élément d’une cellule de la feuille active ?
Je prend l’exemple du numéro de semaine qui permettrais de créer chaque semaine une copie dans une nouvelle feuille portant le numéro de la semaine copiée a partir de la feuille active .

Bonne soirée,
Franck
fichier blabla.xlsm (22,9 Ko)

Bonsoir ,
j’ai un peu creusé mais j’ai un petit problème avec les feuilles déjà existante ,je n’arrive pas a faire dire que la feuille existe déjà :
Sub copie()

'Désactive la mise à jour de l’écran
Application.ScreenUpdating = False

Dim SheetName As String, NewName As String

SheetName = « fichier travail »
NewName = "SEMAINE " & Range(« B1 »).Value & Range(« C1 »).Value

If Not SheetExist Then
Worksheets(SheetName).Copy After:=Worksheets(SheetName)
ActiveSheet.Name = NewName
Else
MsgBox « Impossible de copier la feuille " & « Newname » & " existe déjà »
End If
End Sub

J’obtiens une erreur 400 .
Franck.

Bonjour
Mets comme ceci
SheetName = « fichier travail »
NewName = « SEMAINE " & Range(« B1 »).Value & Range(« C1 »).Value
existe = »"
For I =1 to Sheets.Count
If Sheets (i).Name =NewName Then
existe = « OK »
Exit For
End If
Next
If existe =« OK » Then
MsgBox (« Impossible de copier la feuille " & Newname & " existe déjà »)
Else
Sheets (SheetName).Copy Sheets(1)
ActiveSheet.Name =NewName
Sheets(Newname).Move After:=Sheets(SheetName)
End If

Testes et dis moi

Merci FFO, encore un fois j’obtiens ce que je souhaitais.
Encore une fois je vais te demander d’aller plus loin :si je souhaite que ma copie se positionne à la suite de ma feuille d’origine et non avant et que dans copie, les formules soit inactives.
Merci pour tout,
Franck.

Pour positionner avant ou après
Sheets(Newname).Move After:=Sheets(SheetName)
Sheets(Newname).Move Before:=Sheets(SheetName)

Pour enlever les formules d’une feuille(ici Newname) et les remplacer par leur valeur :

ligne = Sheets(Newname).Cells.SpecialCells(xlCellTypeLastCell).Row
colonne = Sheets(Newname).Cells.SpecialCells(xlCellTypeLastCell).Column
Sheets(Newname).Range(« A1 », Cells(ligne, colonne).Address).Value = Sheets(Newname).Range(« A1 », Cells(ligne, colonne).Address).Value

A rajouter à la fin du traitement ou dans une nouvelle macro

J’espère que cela le fera comme tu le souhaites

Donnes moi des nouvelles

Bonsoir j’ai écrit ce que tu m’a donné :
Sub copie()
'copie le planning

SheetName = « PLANNING VIERGE »
Newname = " SEMAINE " & Range(" C1 « ).Value & Range( » E1 « ).Value
existe = «  »
For i = 1 To Sheets.Count
If Sheets(i).Name = Newname Then
existe = " OK "
Exit For
End If
Next
If existe = " OK " Then
MsgBox ( » Impossible de copier la feuille " & Newname & " existe déjà « )
Else
Sheets(SheetName).Copy Sheets.Add
ActiveSheet.Name = Newname
Sheets(Newname).Move After:=Sheets(SheetName)
ligne = Sheets(Newname).Cells.SpecialCells(xlCellTypeLastCell).Row
colonne = Sheets(Newname).Cells.SpecialCells(xlCellTypeLastCell).Column
Sheets(Newname).Range( » A1", Cells(ligne, colonne).Address).Value = Sheets(Newname).Range(« A1 », Cells(ligne, colonne).Address).Value

End If
End Sub

Parfait pour les copies des feuille ,a suivre et sans formules.
Néanmoins j’ai systématiquement une feuille vierge numérotée qui se créer lorsque j’active la Macro et que je copie la feuille « source ».
Franck .

Mets cette ligne de code :

Sheets(SheetName).Copy Sheets.Add

Comme ceci :

Sheets(SheetName).Copy Sheets(1)

Cela devrait le faire sans ajout de feuille vierges

Essaies et dis moi

Merci ,tout est ok .
peux tu m’expliquer la différence entre la ligne :Sheets(SheetName).Copy Sheets.Add et Sheets(SheetName).Copy Sheets(1)
Franck

Sheets(SheetName).Copy Sheets.Add
Copie la feuille sur un nouvel onglet et ajoute un onglet

Sheets(SheetName).Copy Sheets(1)

Copie la feuille sur un nouvel onglet uniquement

Merci pour ton retour
Peut être à bientôt

Merci ,
a bientôt certainement !!
Franck