OVH Cloud OVH Cloud

Nom d'onglets

16 réponses
Avatar
David T.
Re bonjour à tous

Est'il possible, après clic sur un bouton, de créé une feuille à la suite
des autres et que cette nouvelle feuille est comme nom une suite logique des
autres. (Attention aux accents). Ceci sans définir une liste dans une
feuille.

Feuilles existantes : NOVEMBRE 2003, DÉCEMBRE 2003, JANVIER 2004
Clic sur le bouton, création de la feuille : FÉVRIER 2004

Déjà vu quelque part, mais ou ?

Merci de cette information.

Saluation à tous
--
direction-ternoise@(supprimerceci)wanadoo.fr

6 réponses

1 2
Avatar
David T.
Toujours le même problème, bloque à :
Ws.Name = UCase(Format(DateSerial(2004, 1, 1), "mmmm yyyy"))

La proc d'alain fonctionne. Bon elle ne prend pas la forme de la feuille
"Modèle Mois" mais je vais essayé comme un grand !!!Pas gagné

Encore merci
Salutations
David
"Philippe.R" a écrit dans le message de
news:uw1iZKx$
Re David,
Curieux, chez moi ce code fonctionne sans souci depuis un module
ordinaire.

Par ailleurs, essaies cette nouvelle version, qui en outre copie la
feuille MODELE MOIS et la colle sur

la nouvelle feuille créée

Private Sub CommandButton1_Click()
'MPFE le 29/02/2004
Dim Ws As Worksheet, Err As Label
'copie les cellules de la feuille MODELE MOIS
Sheets("MODELE MOIS").Cells.Copy
On Error GoTo Err
'créé une nouvelle feuille après la dernière
Set Ws = Worksheets.Add(, Worksheets(Worksheets.Count))
'nomme la feuille créée à partir du nom de la précédente en y ajoutant un
mois

Ws.Name = UCase(Format(CDate(Worksheets(Ws.Index - 1&).Name) + 31&,
"mmmm yyyy"))

'colle la forme et les données de la feuille MODELE MOIS
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Exit Sub
Err:
'créée une feuille JANVIER 2004 si le nom du dernier onglet
'ne se présente pas comme une date
Ws.Name = UCase(Format(DateSerial(2004, 1, 1), "mmmm yyyy"))
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"David T." <direction-ternoise@(enlever)wanadoo.fr> a écrit dans le
message de

news:OSlS1ew$
Philippe

Merci pour ton aide mais quelque chose cloche.

Dernière feuille nomée "JANVIER 2004" je lance la proc, cela me crée
bien la


feuille "FÉVRIER 2004"

Je relance la proc : "erreur d'execution1004", "Impossible de renomer un
e


feuille comme une autre feuille, une bibliothèque d'objet référencée ou
un


classeur référencé par Visual Basic".
Cela bloque à Ws.Name = UCase(Format(Date, "mmmm yyyy"))

Je n'ai pas de feuille "FÉVRIER 2004" dans le classeur.


Si je renome la feuille en "FÉVRIER 2004" en "OCTOBRE 2004" et cela me
crée


à nouveau "FÉVRIER 2004" puis bloque si j'en redemande une.

Encore merci

PS : l'info de Claudy m'interesse assez. Genre créer une copie de la
feuille


"Modèle Mois" et la renomer avec ta proc.

"Philippe.R" a écrit dans le message de
news:%23KNU7xu$
Bonsoir David,

Voici une adaptation de celle d'Alain, qui règle le problème posé par
l'absence de premier onglet

conforme :

Private Sub CommandButton1_Click()
Dim Ws As Worksheet, Err As Label
On Error GoTo Err
Set Ws = Worksheets.Add(, Worksheets(Worksheets.Count))
Ws.Name = UCase(Format(CDate(Worksheets(Ws.Index - 1&).Name) +
31&,



"mmmm yyyy"))
Exit Sub
Err:
Ws.Name = UCase(Format(Date, "mmmm yyyy"))
End Sub

PS : je ne fais pas la course ;o))
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"David T." <direction-ternoise@(enlever)wanadoo.fr> a écrit dans le
message de

news:O9lbNpu$
Bonjour Alain et Nicolas

Erreur pour vous deux.

Proc d'alain : Erreur 9 : L'indice n'appartient pas à la sélection.
Bloque à


:
Ws.Name = UCase(Format(CDate(Worksheets(Ws.Index - 1&).Name) + 31&,
"mmmm


yyyy"))


Proc de nicolas : Erreur 13 : Incompatibilité de type. Bloque à :
d = CDate(Sheets(Sheets.Count).Name)

Bonne course :-))) Que le meilleur gagne !!!

Encore merci

"David T." <direction-ternoise@(enlever)wanadoo.fr> a écrit dans le
message


de news:uLgApRt$
Re bonjour à tous

Est'il possible, après clic sur un bouton, de créé une feuille à
la





suite
des autres et que cette nouvelle feuille est comme nom une suite
logique



des
autres. (Attention aux accents). Ceci sans définir une liste dans
une





feuille.

Feuilles existantes : NOVEMBRE 2003, DÉCEMBRE 2003, JANVIER 2004
Clic sur le bouton, création de la feuille : FÉVRIER 2004

Déjà vu quelque part, mais ou ?

Merci de cette information.

Saluation à tous
--
direction-ternoise@(supprimerceci)wanadoo.fr




















Avatar
Alain CROS
Bonjour.

Sub NlleFeuil()
Worksheets("janvier 2004").Copy , _
Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = _
Format(DateSerial(Year(Now), _
Month(Now), 1&), "mmmm yyyy")
End Sub

Alain CROS.

-----Message d'origine-----
Bonsoir à tous....
comment adapter la macro, pour recopier, avec ses
formules et le reste, une

première feuille(janvier 2004)?
Merci d'avance, Claudy

"Philippe.R" a écrit dans le
message de

news:%23KNU7xu$
Bonsoir David,

Voici une adaptation de celle d'Alain, qui règle le
problème posé par


l'absence de premier onglet
conforme :

Private Sub CommandButton1_Click()
Dim Ws As Worksheet, Err As Label
On Error GoTo Err
Set Ws = Worksheets.Add(, Worksheets
(Worksheets.Count))


Ws.Name = UCase(Format(CDate(Worksheets(Ws.Index -
1&).Name) + 31&,


"mmmm yyyy"))
Exit Sub
Err:
Ws.Name = UCase(Format(Date, "mmmm yyyy"))
End Sub

PS : je ne fais pas la course ;o))
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"David T." <direction-ternoise@(enlever)wanadoo.fr> a
écrit dans le


message de
news:O9lbNpu$
Bonjour Alain et Nicolas

Erreur pour vous deux.

Proc d'alain : Erreur 9 : L'indice n'appartient pas à
la sélection.



Bloque à
:
Ws.Name = UCase(Format(CDate(Worksheets(Ws.Index -
1&).Name) + 31&,



"mmmm
yyyy"))


Proc de nicolas : Erreur 13 : Incompatibilité de
type. Bloque à :



d = CDate(Sheets(Sheets.Count).Name)

Bonne course :-))) Que le meilleur gagne !!!

Encore merci

"David T." <direction-ternoise@(enlever)wanadoo.fr> a
écrit dans le



message
de news:uLgApRt$
Re bonjour à tous

Est'il possible, après clic sur un bouton, de créé
une feuille à la




suite
des autres et que cette nouvelle feuille est comme
nom une suite




logique
des
autres. (Attention aux accents). Ceci sans définir
une liste dans une




feuille.

Feuilles existantes : NOVEMBRE 2003, DÉCEMBRE 2003,
JANVIER 2004




Clic sur le bouton, création de la feuille :
FÉVRIER 2004





Déjà vu quelque part, mais ou ?

Merci de cette information.

Saluation à tous
--
direction-ternoise@(supprimerceci)wanadoo.fr











.






Avatar
David T.
Ha ben oui, ca l'fait bien.

Merci


"Alain CROS" a écrit dans le message de
news:454801c3ff13$5d7e84e0$
Bonjour.

Ceci devrait le faire.

Private Sub CommandButton1_Click()
Dim Ws As Worksheet, Ladate As Date, TempDate As Date
On Error Resume Next
For Each Ws In Worksheets
TempDate = CDate(Ws.Name)
If TempDate > Ladate Then Ladate = TempDate
Next Ws
On Error GoTo 0
Set Ws = Worksheets.Add(, Worksheets(Worksheets.Count))
If Ladate = 0 Then Ladate = DateSerial(Year(Now), Month
(Now), 1&)
Ws.Name = UCase(Format(Ladate + 31&, "mmmm yyyy"))
End Sub

-----Message d'origine-----
Philippe

Merci pour ton aide mais quelque chose cloche.

Dernière feuille nomée "JANVIER 2004" je lance la proc,
cela me crée bien la

feuille "FÉVRIER 2004"

Je relance la proc : "erreur
d'execution1004", "Impossible de renomer une

feuille comme une autre feuille, une bibliothèque d'objet
référencée ou un

classeur référencé par Visual Basic".
Cela bloque à Ws.Name = UCase(Format(Date, "mmmm yyyy"))

Je n'ai pas de feuille "FÉVRIER 2004" dans le classeur.


Si je renome la feuille en "FÉVRIER 2004" en "OCTOBRE
2004" et cela me crée

à nouveau "FÉVRIER 2004" puis bloque si j'en redemande
une.


Avatar
David T.
Re

J'ai modifié comme ci-dessous mais la mise en page ne suis pas (Echelle,
zone d'impression, etc)

Une astuce ?

Merci

Dim Ws As Worksheet, Ladate As Date, TempDate As Date
Sheets("Modèle Mois").Cells.Copy
On Error Resume Next

For Each Ws In Worksheets
TempDate = CDate(Ws.Name)
If TempDate > Ladate Then Ladate = TempDate
Next Ws
On Error GoTo 0
Set Ws = Worksheets.Add(, Worksheets(Worksheets.Count))
If Ladate = 0 Then Ladate = DateSerial(Year(Now), Month(Now), 1&)
Ws.Name = UCase(Format(Ladate + 31&, "mmmm yyyy"))
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A3").Select
Avatar
CROS Alain
Bonjour.

Sub NlleFeuil()
Dim Ws As Worksheet, Ladate As Date, TempDate As Date
On Error Resume Next
For Each Ws In Worksheets
TempDate = CDate(Ws.Name)
If TempDate > Ladate Then Ladate = TempDate
Next Ws
On Error GoTo 0
Worksheets("Modèle Mois").Copy , _
Worksheets(Worksheets.Count)
If Ladate = 0 Then Ladate = DateSerial(Year(Now), _
Month(Now) - 1&, 1&)
Worksheets(Worksheets.Count).Name = _
UCase(Format(Ladate + 31&, "mmmm yyyy"))
End Sub

Alain CROS.

-----Message d'origine-----
Re

J'ai modifié comme ci-dessous mais la mise en page ne
suis pas (Echelle,

zone d'impression, etc)

Une astuce ?

Merci

Dim Ws As Worksheet, Ladate As Date, TempDate As Date
Sheets("Modèle Mois").Cells.Copy
On Error Resume Next

For Each Ws In Worksheets
TempDate = CDate(Ws.Name)
If TempDate > Ladate Then Ladate = TempDate
Next Ws
On Error GoTo 0
Set Ws = Worksheets.Add(, Worksheets(Worksheets.Count))
If Ladate = 0 Then Ladate = DateSerial(Year(Now), Month
(Now), 1&)

Ws.Name = UCase(Format(Ladate + 31&, "mmmm yyyy"))
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A3").Select


.



Avatar
David T.
Re

Nickel. Merci beaucoup

Bonne nuit


"CROS Alain" a écrit dans le message de
news:447701c3ff1f$a3249aa0$
Bonjour.

Sub NlleFeuil()
Dim Ws As Worksheet, Ladate As Date, TempDate As Date
On Error Resume Next
For Each Ws In Worksheets
TempDate = CDate(Ws.Name)
If TempDate > Ladate Then Ladate = TempDate
Next Ws
On Error GoTo 0
Worksheets("Modèle Mois").Copy , _
Worksheets(Worksheets.Count)
If Ladate = 0 Then Ladate = DateSerial(Year(Now), _
Month(Now) - 1&, 1&)
Worksheets(Worksheets.Count).Name = _
UCase(Format(Ladate + 31&, "mmmm yyyy"))
End Sub

Alain CROS.

-----Message d'origine-----
Re

J'ai modifié comme ci-dessous mais la mise en page ne
suis pas (Echelle,

zone d'impression, etc)

Une astuce ?

Merci

Dim Ws As Worksheet, Ladate As Date, TempDate As Date
Sheets("Modèle Mois").Cells.Copy
On Error Resume Next

For Each Ws In Worksheets
TempDate = CDate(Ws.Name)
If TempDate > Ladate Then Ladate = TempDate
Next Ws
On Error GoTo 0
Set Ws = Worksheets.Add(, Worksheets(Worksheets.Count))
If Ladate = 0 Then Ladate = DateSerial(Year(Now), Month
(Now), 1&)

Ws.Name = UCase(Format(Ladate + 31&, "mmmm yyyy"))
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A3").Select


.



1 2