Copier une feuille

Le
STERNENBERG Jean Yves
Bonjour, j'ai un classeur avec une feuille, je voudrais qu'a l'ouverture du
classeur cette feuillle soit copier a la suite de l'autre et que l'onglet
prenne la date du jour.
Ex: la feuille 1 et nommée 15-08-09 je veux a l'ouverture du classeur que la
feuille 2 se nomme 16-08-09 et ainsi de suite , part contre si je dois
fermer le classeur dans la journée il ne faut pas qu'a la réouverture le
classeur crée une autre feuille puisque ce sera le même jour.je vous
remercie de votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FS
Le #19938821
Bonsoir,

Une solution possible (dans le module ThisWorkbook du classeur concerné):

'===================== Private Sub Workbook_Open()
Dim Prec As Variant
Prec = CDate(Sheets(Sheets.Count).Name)
If Prec <> Date Then Sheets.Add.Name = Format(Prec + 1, "dd-mm-yy")
ActiveSheet.Move after:=Sheets(Sheets.Count)
End Sub
'======================
S'il y a un risque que le nom du dernier onglet du classeur ne soit pas
une date, il faudrait inclure une petite gestion de cette erreur possible.

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

STERNENBERG Jean Yves a écrit :
Bonjour, j'ai un classeur avec une feuille, je voudrais qu'a l'ouverture du
classeur cette feuillle soit copier a la suite de l'autre et que l'onglet
prenne la date du jour.
Ex: la feuille 1 et nommée 15-08-09 je veux a l'ouverture du classeur que la
feuille 2 se nomme 16-08-09 et ainsi de suite , part contre si je dois
fermer le classeur dans la journée il ne faut pas qu'a la réouverture le
classeur crée une autre feuille puisque ce sera le même jour.je vous
remercie de votre aide.




MichDenis
Le #19938811
Bonjour Jean Yves,

Dans le ThisWorkbook de ton classeur :
'---------------------------------------
Private Sub Workbook_Open()
Ajout_Feuille_Si_Nécessaire
End Sub
'---------------------------------------

Dans un module standard, ce qui suit :
'--------------------------------------
Sub Ajout_Feuille_Si_Nécessaire()
Dim LaDate As Long, X()
Dim Année As Long, Mois As Integer
Dim A As Integer, jour As Integer
Dim Sh As Worksheet, Nom As String
Année = Year(Date)
Mois = Month(Date)
jour = Day(Date)
LaDate = CLng(DateSerial(Année, Mois, jour))
Application.ScreenUpdating = False
With ThisWorkbook
With .Worksheets
ReDim X(1 To .Count)
For Each Sh In Worksheets
If IsDate(Sh.Name) Then
A = A + 1
X(A) = CLng(CDate(Sh.Name))
End If
Next
End With
BubbleSort X
If Not IsNumeric(Application.Match(CLng(LaDate), X, 0)) Then
'aucune feuille portant la date d'aujourd'hui existe
'copie de la feuille
Nom = Format(CDate(X(UBound(X))), "DD-MM-YY")
Set Sh = .Worksheets(Nom)
Sh.Copy before:=Sheets(1)
.ActiveSheet.Name = Format(CDate(LaDate), "DD-MM-YY")
Sh.Name = Nom
End If
End With
Application.ScreenUpdating = True
End Sub
'--------------------------------------
Sub BubbleSort(List())
' Sorts the List array in ascending order
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp
First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i) > List(j) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
End Sub
'--------------------------------------




"STERNENBERG Jean Yves" discussion :
Bonjour, j'ai un classeur avec une feuille, je voudrais qu'a l'ouverture du
classeur cette feuillle soit copier a la suite de l'autre et que l'onglet
prenne la date du jour.
Ex: la feuille 1 et nommée 15-08-09 je veux a l'ouverture du classeur que la
feuille 2 se nomme 16-08-09 et ainsi de suite , part contre si je dois
fermer le classeur dans la journée il ne faut pas qu'a la réouverture le
classeur crée une autre feuille puisque ce sera le même jour.je vous
remercie de votre aide.
isabelle
Le #19938911
bonjour Jean Yves,

x = CDate(Sheets(Sheets.Count).Name) + 1
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = x

isabelle

STERNENBERG Jean Yves a écrit :
Bonjour, j'ai un classeur avec une feuille, je voudrais qu'a l'ouverture du
classeur cette feuillle soit copier a la suite de l'autre et que l'onglet
prenne la date du jour.
Ex: la feuille 1 et nommée 15-08-09 je veux a l'ouverture du classeur que la
feuille 2 se nomme 16-08-09 et ainsi de suite , part contre si je dois
fermer le classeur dans la journée il ne faut pas qu'a la réouverture le
classeur crée une autre feuille puisque ce sera le même jour.je vous
remercie de votre aide.





MichDenis
Le #19938901
| S'il y a un risque que le nom du dernier onglet du classeur ne soit pas
| une date, il faudrait inclure une petite gestion de cette erreur possible.

Bonjour Frédéric,

Il n'est pas dit que les feuilles sont en ordre croissant, que certaines
d'entre elles n'ont pas été déplacées !
La longueur de la macro dépend du nombre de "si"

;-)
FS
Le #19941221
Bonjour Isabelle,

Tu as raison, j'ai oublié que la demande était de copier la dernière
feuille (et non d'ajouter une feuille vierge). Et ta proposition ne
tient pas compte du fait que la procédure ne doit se déclencher qu'une
fois par jour.
En mélanger nos deux propositions, "STERNENBERG Jean Yves" devrait s'en
sortir.
Il reste que des questions sont en suspens. Non seulement celle de Denis
mais aussi au moins une autre : le classeur est-il vraiment ouvert
tous les jours (y compris les WE et jours fériés) ? et si non quelle
serait la demande ?
Le demandeur nous éclairera peut-être!
Cordialement,

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

isabelle a écrit :
bonjour Jean Yves,

x = CDate(Sheets(Sheets.Count).Name) + 1
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = x

isabelle

STERNENBERG Jean Yves a écrit :
Bonjour, j'ai un classeur avec une feuille, je voudrais qu'a
l'ouverture du classeur cette feuillle soit copier a la suite de
l'autre et que l'onglet prenne la date du jour.
Ex: la feuille 1 et nommée 15-08-09 je veux a l'ouverture du classeur
que la feuille 2 se nomme 16-08-09 et ainsi de suite , part contre si
je dois fermer le classeur dans la journée il ne faut pas qu'a la
réouverture le classeur crée une autre feuille puisque ce sera le même
jour.je vous remercie de votre aide.






MichDenis
Le #19941401
| Et ta proposition ne tient pas compte du fait que
| la procédure ne doit se déclencher qu'une
| fois par jour.

Il est vrai que la procédure s'exécute à chaque fois
que l'usager ouvre le fichier mais aucune feuille
ne sera ajoutée au classeur si l'une des feuillles possède
la date du jour (Format reconnu par Excel) en cours
comme appellation de son onglet. Du moins c'est
la prétention de la procédure.
isabelle
Le #19941501
bonjour Frédéric,

contente de te lire à nouveau ici,
comme tu dit, espérons que Jean Yves y trouvera son compte,

isabelle

FS a écrit :
Bonjour Isabelle,

Tu as raison, j'ai oublié que la demande était de copier la dernière
feuille (et non d'ajouter une feuille vierge). Et ta proposition ne
tient pas compte du fait que la procédure ne doit se déclencher qu'une
fois par jour.
En mélanger nos deux propositions, "STERNENBERG Jean Yves" devrait
s'en sortir.
Il reste que des questions sont en suspens. Non seulement celle de
Denis mais aussi au moins une autre : le classeur est-il vraiment
ouvert tous les jours (y compris les WE et jours fériés) ? et si non
quelle serait la demande ?
Le demandeur nous éclairera peut-être!
Cordialement,

FS


Publicité
Poster une réponse
Anonyme