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 .
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
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
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
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.
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 .