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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
FS
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.
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.
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
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" a écrit dans le message de groupe de 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.
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" <sten83270@hotmail.com> a écrit dans le message de groupe de
discussion : eEowNipHKHA.4708@TK2MSFTNGP03.phx.gbl...
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.
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" a écrit dans le message de groupe de 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
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.
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.
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
| 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"
;-)
| 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"
| 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
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.
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.
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
| 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.
| 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.
| 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
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
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,
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,