J'ai tenté de modifier ce code provenant de Denis Michon, Rural Thierry et
de Frédéric Sigonneau pour, qu'à partir de la feuille de départ sur laquelle
je le lance, un duplicata se crée pour chaque jour du mois (mêmes formules,
mêmes mises en forme sur les 5 premières colonnes).
********************************
Extrait :
'Ajoute les feuilles.
Err = 0
For A = LastDay To 1 Step -1
Columns("A:E").Select.Copy
Sheets.Add.Paste
Set Sh = Sheets.Add
Sh.Name = Format(DateSerial(Annee, LeMois, A), "dd-mm-yyyy")
If Err <> 0 Then
Application.DisplayAlerts = False
Sh.Delete
Err = 0
End If
Next
Application.DisplayAlerts = True
Set Sh = Nothing
End Sub
*******************************
Qui peut me dire ce qui cloche ?
Merci et bon WE à vous.
--
Bien cordialement,
=====================================
P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net
Le code que te m'adresses est celui que j'avais récupéré, et adapté, car il ne correspondait pas exactement à mon besoin : Insertion entre une feuille "Total" et une feuille "Premier" de manière à ce que je puisse récupérer dans "Total "des calculs (principalement totaux et nbval) sur l'ensemble des feuilles du mois.
Merci de ton aide, et bien entendu s'il te vient une autre idée...
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Bonjour Patrick,
Ce code génère un nouveau classeur ayant toutes les feuilles du mois basé sur une feuille "Modèle" existant dans le classeur où tu mettras cette macro.
'---------------------------------------- Sub AjouterFeuille()
'Définition des variables Dim Wk As Workbook, NewWk As Workbook Dim MaDate As Variant Dim LastDay As Integer, Annee As Integer Dim LeMois As Integer, A As Integer Dim AcName As String
Application.ScreenUpdating = False
'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour " & _ "lequel il faut créer une feuille pour " & _ "chacun des jours." & vbLf & vbLf & _ "Exemple : 1/2/2001", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie ne représente " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) Or MaDate = "" = True
MaDate = Format(MaDate, "dd-mm-yy") Annee = Year(MaDate) LeMois = Month(MaDate) 'Détermine la dernière journée du mois choisi. LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
AcName = ThisWorkbook.Name
Set Wk = ThisWorkbook Set NewWk = Workbooks.Add(-4167) 'Ajoute les feuilles. For A = 1 To LastDay With NewWk Wk.Worksheets("Modèle").Copy _ after:=NewWk.Worksheets(NewWk.Worksheets.Count) .ActiveSheet.Name = Format(DateSerial(Annee, _ LeMois, A), "dd-mm-yyyy") End With Next Application.DisplayAlerts = False With NewWk .Worksheets("Feuil1").Delete .Worksheets(1).Activate End With
"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de news: % Bonjour à tous
Je m'en sors petit à petit, tant bien que mal :
Créer un classeur mensuel avec une feuille par jour à partir d'un modèle en reprenant mise en forme, validation, objets etc...
Mon classeur de départ : 3 onglets : "Premier", "Modèle" et "Total" "Premier "est la solution que j'ai trouvée pour consolider dans "Total "toutes les feuilles qui seront créées : =(SOMME(Premier:Modèle!A3) ou =(NBVAL(Premier:Modèle!A3)
Le bout de code ci-dessous fonctionne :-) quand les feuilles Premier et Modèle sont affichées, mais *ne fonctionne pas* :-( lorsqu'elles sont masquées :
'Boucle pour copier"Modèle" autant de fois qu'il y a de jours. 'Et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Select Sheets("Modèle").Copy Before:=Sheets("Modèle") Set Sh = Worksheets(Worksheets.Count - 2) With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "ddd dd-mm-yy") If Err <> 0 Then Err = 0 End If End With Next
Un grand merci donc à qui voudra bien m'expliquer comment paramétrer Copy Before et Worksheets.Count pour que mes feuilles créées soient correctement nommées, soient placées entre"Premier" et "Modèle", et restent visibles !!!
Question subsidiaire pour les gagnants : quelle différence entre Sheets.Count et Worksheets.Count.
Désolé si ces questions sont basiques, mais je persiste à débuter en VBA.
PS : je pense que le classeur terminé pourrait être utile à d'autres, et je le soumettrai à Misange.
Cordialement,
Patrick
Bonsoir, *Denis*.
Le code que te m'adresses est celui que j'avais récupéré, et adapté, car il
ne correspondait pas exactement à mon besoin :
Insertion entre une feuille "Total" et une feuille "Premier" de manière à ce
que je puisse récupérer dans "Total "des calculs (principalement totaux et
nbval) sur l'ensemble des feuilles du mois.
Merci de ton aide, et bien entendu s'il te vient une autre idée...
--
Bien cordialement,
==================================== P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Bonjour Patrick,
Ce code génère un nouveau classeur ayant toutes les feuilles du mois
basé sur une feuille "Modèle" existant dans le classeur où tu mettras
cette macro.
'----------------------------------------
Sub AjouterFeuille()
'Définition des variables
Dim Wk As Workbook, NewWk As Workbook
Dim MaDate As Variant
Dim LastDay As Integer, Annee As Integer
Dim LeMois As Integer, A As Integer
Dim AcName As String
Application.ScreenUpdating = False
'Demande à l'usager le mois.
Do
MaDate = InputBox("Entrez une date du mois pour " & _
"lequel il faut créer une feuille pour " & _
"chacun des jours." & vbLf & vbLf & _
"Exemple : 1/2/2001", "Une feuille par jour")
'Si l'usager annule l'opération
If MaDate = "" Then Exit Sub
If Not IsDate(MaDate) Then
MsgBox "La donnée saisie ne représente " & _
"pas un format date reconnu par excel."
End If
Loop Until IsDate(MaDate) Or MaDate = "" = True
MaDate = Format(MaDate, "dd-mm-yy")
Annee = Year(MaDate)
LeMois = Month(MaDate)
'Détermine la dernière journée du mois choisi.
LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
AcName = ThisWorkbook.Name
Set Wk = ThisWorkbook
Set NewWk = Workbooks.Add(-4167)
'Ajoute les feuilles.
For A = 1 To LastDay
With NewWk
Wk.Worksheets("Modèle").Copy _
after:=NewWk.Worksheets(NewWk.Worksheets.Count)
.ActiveSheet.Name = Format(DateSerial(Annee, _
LeMois, A), "dd-mm-yyyy")
End With
Next
Application.DisplayAlerts = False
With NewWk
.Worksheets("Feuil1").Delete
.Worksheets(1).Activate
End With
"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de
news: %23lCQrTBxEHA.3844@TK2MSFTNGP09.phx.gbl... Bonjour à tous
Je m'en sors petit à petit, tant bien que mal :
Créer un classeur mensuel avec une feuille par jour à partir d'un
modèle en
reprenant mise en forme, validation, objets etc...
Mon classeur de départ : 3 onglets : "Premier", "Modèle" et "Total"
"Premier "est la solution que j'ai trouvée pour consolider dans "Total
"toutes les feuilles qui seront créées : =(SOMME(Premier:Modèle!A3) ou
=(NBVAL(Premier:Modèle!A3)
Le bout de code ci-dessous fonctionne :-) quand les feuilles Premier
et
Modèle sont affichées, mais *ne fonctionne pas* :-( lorsqu'elles sont
masquées :
'Boucle pour copier"Modèle" autant de fois qu'il y a de jours.
'Et renomme chaque feuille avec la date.
For A = 1 To LastDay Step 1
Sheets("Modèle").Select
Sheets("Modèle").Copy Before:=Sheets("Modèle")
Set Sh = Worksheets(Worksheets.Count - 2)
With Sh
.Visible = True
.Name = Format(DateSerial(Annee, LeMois, A), "ddd
dd-mm-yy") If Err <> 0 Then
Err = 0
End If
End With
Next
Un grand merci donc à qui voudra bien m'expliquer comment paramétrer
Copy
Before et Worksheets.Count
pour que mes feuilles créées soient correctement nommées, soient
placées
entre"Premier" et "Modèle", et restent visibles !!!
Question subsidiaire pour les gagnants : quelle différence entre
Sheets.Count et Worksheets.Count.
Désolé si ces questions sont basiques, mais je persiste à débuter en
VBA.
PS : je pense que le classeur terminé pourrait être utile à d'autres,
et je
le soumettrai à Misange.
Le code que te m'adresses est celui que j'avais récupéré, et adapté, car il ne correspondait pas exactement à mon besoin : Insertion entre une feuille "Total" et une feuille "Premier" de manière à ce que je puisse récupérer dans "Total "des calculs (principalement totaux et nbval) sur l'ensemble des feuilles du mois.
Merci de ton aide, et bien entendu s'il te vient une autre idée...
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Bonjour Patrick,
Ce code génère un nouveau classeur ayant toutes les feuilles du mois basé sur une feuille "Modèle" existant dans le classeur où tu mettras cette macro.
'---------------------------------------- Sub AjouterFeuille()
'Définition des variables Dim Wk As Workbook, NewWk As Workbook Dim MaDate As Variant Dim LastDay As Integer, Annee As Integer Dim LeMois As Integer, A As Integer Dim AcName As String
Application.ScreenUpdating = False
'Demande à l'usager le mois. Do MaDate = InputBox("Entrez une date du mois pour " & _ "lequel il faut créer une feuille pour " & _ "chacun des jours." & vbLf & vbLf & _ "Exemple : 1/2/2001", "Une feuille par jour") 'Si l'usager annule l'opération If MaDate = "" Then Exit Sub If Not IsDate(MaDate) Then MsgBox "La donnée saisie ne représente " & _ "pas un format date reconnu par excel." End If Loop Until IsDate(MaDate) Or MaDate = "" = True
MaDate = Format(MaDate, "dd-mm-yy") Annee = Year(MaDate) LeMois = Month(MaDate) 'Détermine la dernière journée du mois choisi. LastDay = Day(DateSerial(Annee, LeMois + 1, 0))
AcName = ThisWorkbook.Name
Set Wk = ThisWorkbook Set NewWk = Workbooks.Add(-4167) 'Ajoute les feuilles. For A = 1 To LastDay With NewWk Wk.Worksheets("Modèle").Copy _ after:=NewWk.Worksheets(NewWk.Worksheets.Count) .ActiveSheet.Name = Format(DateSerial(Annee, _ LeMois, A), "dd-mm-yyyy") End With Next Application.DisplayAlerts = False With NewWk .Worksheets("Feuil1").Delete .Worksheets(1).Activate End With
"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de news: % Bonjour à tous
Je m'en sors petit à petit, tant bien que mal :
Créer un classeur mensuel avec une feuille par jour à partir d'un modèle en reprenant mise en forme, validation, objets etc...
Mon classeur de départ : 3 onglets : "Premier", "Modèle" et "Total" "Premier "est la solution que j'ai trouvée pour consolider dans "Total "toutes les feuilles qui seront créées : =(SOMME(Premier:Modèle!A3) ou =(NBVAL(Premier:Modèle!A3)
Le bout de code ci-dessous fonctionne :-) quand les feuilles Premier et Modèle sont affichées, mais *ne fonctionne pas* :-( lorsqu'elles sont masquées :
'Boucle pour copier"Modèle" autant de fois qu'il y a de jours. 'Et renomme chaque feuille avec la date. For A = 1 To LastDay Step 1 Sheets("Modèle").Select Sheets("Modèle").Copy Before:=Sheets("Modèle") Set Sh = Worksheets(Worksheets.Count - 2) With Sh .Visible = True .Name = Format(DateSerial(Annee, LeMois, A), "ddd dd-mm-yy") If Err <> 0 Then Err = 0 End If End With Next
Un grand merci donc à qui voudra bien m'expliquer comment paramétrer Copy Before et Worksheets.Count pour que mes feuilles créées soient correctement nommées, soient placées entre"Premier" et "Modèle", et restent visibles !!!
Question subsidiaire pour les gagnants : quelle différence entre Sheets.Count et Worksheets.Count.
Désolé si ces questions sont basiques, mais je persiste à débuter en VBA.
PS : je pense que le classeur terminé pourrait être utile à d'autres, et je le soumettrai à Misange.
Cordialement,
Patrick
Patrick Bastard
Merci à tous,
j'essayais de créer le fil à couper le beurre. Pour le problème des feuilles cachées, il suffit de les cacher *après* avoir généré les autres. Et ça, je sais faire.
Mais j'aimerais bien comprendre quand même, alors vos explications sont les bienvenues.
Bonne nuit à tou(te)s,
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net
Merci à tous,
j'essayais de créer le fil à couper le beurre.
Pour le problème des feuilles cachées, il suffit de les cacher *après* avoir
généré les autres.
Et ça, je sais faire.
Mais j'aimerais bien comprendre quand même, alors vos explications sont les
bienvenues.
Bonne nuit à tou(te)s,
--
Bien cordialement,
==================================== P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net
j'essayais de créer le fil à couper le beurre. Pour le problème des feuilles cachées, il suffit de les cacher *après* avoir généré les autres. Et ça, je sais faire.
Mais j'aimerais bien comprendre quand même, alors vos explications sont les bienvenues.
Bonne nuit à tou(te)s,
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net
Philippe.R
Bonsoir Patrick, Un classeur doit toujours avoir une feuille visible au moins. -- Amicales Salutations XL 97 / 2000 / 2002 Retirer A_S_ pour répondre en privé.
"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de news:
Merci à tous,
j'essayais de créer le fil à couper le beurre. Pour le problème des feuilles cachées, il suffit de les cacher *après* avoir généré les autres. Et ça, je sais faire.
Mais j'aimerais bien comprendre quand même, alors vos explications sont les bienvenues.
Bonne nuit à tou(te)s,
-- Bien cordialement, ==================================== > P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net
Bonsoir Patrick,
Un classeur doit toujours avoir une feuille visible au moins.
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de news:
u2amW8ExEHA.2568@TK2MSFTNGP10.phx.gbl...
Merci à tous,
j'essayais de créer le fil à couper le beurre.
Pour le problème des feuilles cachées, il suffit de les cacher *après* avoir
généré les autres.
Et ça, je sais faire.
Mais j'aimerais bien comprendre quand même, alors vos explications sont les
bienvenues.
Bonne nuit à tou(te)s,
--
Bien cordialement,
==================================== > P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange :
http://www.excelabo.net
Bonsoir Patrick, Un classeur doit toujours avoir une feuille visible au moins. -- Amicales Salutations XL 97 / 2000 / 2002 Retirer A_S_ pour répondre en privé.
"Patrick Bastard" <bastardp"chez"free.fr> a écrit dans le message de news:
Merci à tous,
j'essayais de créer le fil à couper le beurre. Pour le problème des feuilles cachées, il suffit de les cacher *après* avoir généré les autres. Et ça, je sais faire.
Mais j'aimerais bien comprendre quand même, alors vos explications sont les bienvenues.
Bonne nuit à tou(te)s,
-- Bien cordialement, ==================================== > P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Une foule de conseils utiles sur le site de Misange : http://www.excelabo.net
Patrick Bastard
Bonsoir, *Philippe*.
Un classeur doit toujours avoir une feuille visible au moins.
C'est ce que j'ai appris à mes dépens, mais j'ai réussi à contourner le problème en masquant les premières après la création des suivantes.
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Bonsoir, *Philippe*.
Un classeur doit toujours avoir une feuille visible au moins.
C'est ce que j'ai appris à mes dépens, mais j'ai réussi à contourner le
problème en masquant les premières après la création des suivantes.
--
Bien cordialement,
==================================== P. Bastard.
Pour me contacter, remplacez "Chez" par @ dans l'adresse
Un classeur doit toujours avoir une feuille visible au moins.
C'est ce que j'ai appris à mes dépens, mais j'ai réussi à contourner le problème en masquant les premières après la création des suivantes.
-- Bien cordialement, ==================================== P. Bastard. Pour me contacter, remplacez "Chez" par @ dans l'adresse
Patrick Bastard
Bonsoir, *Alain *.
Pour la question subsidiaire : Insére une feuille graphique dans ton classeur puis lance cette macro.
Sub SheetsCount_OU_WorksheetsCount() MsgBox "Worksheets.Count = " & Worksheets.Count & vbNewLine & _ vbNewLine & "Sheets.Count = " & Sheets.Count End Sub
Alain CROS
Cet exemple simple m'a permis de comprendre que Worksheets.count dénombre les feuilles de calcul, et que Sheets;count dénombre toutes les feuilles (calcul et graphique) Macro Excel4 aussi, je suppose, mais je n'ai pas encore vérifié.
Sois-en remercié.
Bien cordialement,
Patrick.
Bonsoir, *Alain *.
Pour la question subsidiaire :
Insére une feuille graphique dans ton classeur puis lance cette macro.
Sub SheetsCount_OU_WorksheetsCount()
MsgBox "Worksheets.Count = " & Worksheets.Count & vbNewLine & _
vbNewLine & "Sheets.Count = " & Sheets.Count
End Sub
Alain CROS
Cet exemple simple m'a permis de comprendre que Worksheets.count dénombre
les feuilles de calcul, et que Sheets;count dénombre toutes les feuilles
(calcul et graphique) Macro Excel4 aussi, je suppose, mais je n'ai pas
encore vérifié.
Pour la question subsidiaire : Insére une feuille graphique dans ton classeur puis lance cette macro.
Sub SheetsCount_OU_WorksheetsCount() MsgBox "Worksheets.Count = " & Worksheets.Count & vbNewLine & _ vbNewLine & "Sheets.Count = " & Sheets.Count End Sub
Alain CROS
Cet exemple simple m'a permis de comprendre que Worksheets.count dénombre les feuilles de calcul, et que Sheets;count dénombre toutes les feuilles (calcul et graphique) Macro Excel4 aussi, je suppose, mais je n'ai pas encore vérifié.