Insérer des feuilles en copiant le modèle

cibleo

XLDnaute Impliqué
Bonsoir le forum,

Dans le module 1 du fichier joint, j'ai ce code qui me permet d'insérer des feuilles nommées aux 365 jours de l'année.

En B1 de chaque feuille, figure également la mention "Planning du" & jour de la feuille active.

Ce que j'aimerais faire, c'est copier la plage (A1:L15) de ma feuille "Planning" qui me sert de modèle.

Code:
Sub Calendjourfeuille()
Application.ScreenUpdating = False
année = Val(InputBox("Quelle année ?"))
If année = 0 Then Exit Sub
x = DateSerial(année, 1, 1)
y = DateValue("31 décembre " & année)
For i = 0 To y - x
ActiveWorkbook.Sheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(x + i, "dddd dd mmmm yyyy")
[B1] = "Planning du " & ActiveSheet.Name
Next
End Sub

En résumé, il s'agit de recopier 365 fois ma feuille "Planning" avec la mention "Planning du ...Nom de la feuille"

De plus serait-il possible de mettre en majuscule la 1ère lettre du Jour figurant en B1.

Pouvez-vous m'aider ?

Amicalement Cibleo

Bonne soirée à tous.
 

Pièces jointes

  • 7PlanningduJour.zip
    18.9 KB · Affichages: 79

Cousinhub

XLDnaute Barbatruc
Re : Insérer des feuilles en copiant le modèle

Bonsoir,

peut-être ainsi?

Code:
Sub Calendjourfeuille()
Application.ScreenUpdating = False
année = Val(InputBox("Quelle année ?"))
If année = 0 Then Exit Sub
x = DateSerial(année, 1, 1)
y = DateValue("31 décembre " & année)
For i = 0 To y - x
    Sheets("Planning").Copy After:=Worksheets(Worksheets.Count)
    With ActiveSheet
        .Name = Format(x + i, "dddd dd mmmm yyyy")
        .[B1] = "Planning du " & Application.Proper(ActiveSheet.Name)
    End With
Next
End Sub

pour peu que tu laisses l'onglet "Planning" vierge....

Bonne soirée
 

cibleo

XLDnaute Impliqué
Re : Insérer des feuilles en copiant le modèle

Bonsoir le forum,
Bonsoir bhbh :)

Merci pour la réponse.

Sur le fichier mis en ligne plus haut, cela fonctionne parfaitement, les 365 feuilles sont créées.

Par contre sur mon fichier original placé sur mon Pc, cela s'arrète au 23 avril ----> problème de mémoire comme déjà évoqué dans le fil ci-dessous il y a quelques mois.

J'ai alors enregistré mon fichier, fermé puis réouvert et relancé la macro, mais les dernières feuilles ne sont toujours pas crées :(.

J'ai le message suivant :

"Erreur d'exécution 1004 :"
Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencée ou un classeur référencé par Visual Basic.

https://www.excel-downloads.com/threads/vba-dupliquer-1-modele.96765/

Comment remédier à ce problème, avez-vous une solution ?

Pour info, ma feuille "Planning" était vierge de toute annotation, j'avais même enlevé la couleur de la colonne A et viré les boutons placés initialement sur la feuille.
En B1, le titre recopié est de taille 28.
Ne devrais-je pas changer le format date de mes onglets pour réduire le poids ? ------> dddd dd mmmm yyyy

Avez-vous une idée ?

Bref, j'avais épuré au maximum ma feuille me servant de modèle parce que je sentais le coup arriver :cool:

Cibleo
 
Dernière édition:

cibleo

XLDnaute Impliqué
Re : Insérer des feuilles en copiant le modèle

Bonsoir le forum,

Un petit retour sur le fil pour signaler que j'ai résolu mon petit problème de création de feuilles.

En fait, dans mon fichier initial étaient placés un module standard et 3 Userforms que j'ai d'abord supprimés (Exportés avant la suppression).

Ensuite, j'ai exécuté ma macro et les 365 feuilles ont été créées.

Puis, j'ai importé mes 3 Userforms et le module standard, le tour était joué.

Problème résolu :rolleyes:

Encore merci bhbh

Bonne soirée à tous Cibleo
 

cibleo

XLDnaute Impliqué
Re : Insérer des feuilles en copiant le modèle

Bonsoir à tous,

Un petit retour pour une petite modif du code de bhbh.

Pour faire plus court dans mes onglets, j'ai remplacé l'instruction initiale par celle-ci
Code:
.Name = Format(x + i, "dd mm yy")

Mais comment dois-je modifier l'instruction suivante pour obtenir à nouveau la date en toute lettre en B1

Code:
.[B1] = "Planning du " & Application.Proper(ActiveSheet.Name)

Parce que j'obtiens ceci "Planning du 20 06 09", et non plus "Planning du Samedi 20 Juin 2009" comme initialement.

Merci de votre aide
Cibleo
 

cibleo

XLDnaute Impliqué
Re : Insérer des feuilles en copiant le modèle

Bonsoir bhbh,

Impeccable, ça colle comme ceci :

Au vol, tu avais tapé trop vite et oublié un guillemet et une parenthèse.

Code:
.[B1] = "Planning du " & Application.Proper(Format(x + i, "dddd dd mmmm yyyy"))

Merci bhbh

Bonne soirée à tous

Cibleo
 

cibleo

XLDnaute Impliqué
Re : Insérer des feuilles en copiant le modèle

Bonjour à tous,

En rouge, j'ai rajouté une condition, ce qui me permet de dupliquer la feuille "Planning" sans les samedis ni les dimanches.
Code:
Sub Calendjourfeuille()
Application.ScreenUpdating = False
année = Val(InputBox("Quelle année ?"))
If année = 0 Then Exit Sub
x = DateSerial(année, 1, 1)
y = DateValue("31 décembre " & année)
For i = 0 To y - x
  [COLOR=red]If Weekday(x + i, vbMonday) < 6 Then[/COLOR]
    Sheets("Planning").Copy After:=Worksheets(Worksheets.Count)
    With ActiveSheet
        .Name = Format(x + i, "dd mm yy")
        .[B1] = "Planning du " & Application.Proper(Format(x + i, "dddd dd mmmm yyyy"))
    End With
  [COLOR=red]End If[/COLOR]
Next
End Sub

C'était pour compléter le fil ;)

Cibleo
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 763
dernier inscrit
p.michaux