Création d'un Calendrier en VBA [Résolu/Fermé]

Signaler
Messages postés
19
Date d'inscription
mardi 12 août 2014
Statut
Membre
Dernière intervention
4 juillet 2018
-
Messages postés
19
Date d'inscription
mardi 12 août 2014
Statut
Membre
Dernière intervention
4 juillet 2018
-
Bonjour,

Je suis débutant en VBA, je souhaite créer un Excel "Calendrier.xlsx" de 365 feuilles, la première feuille s'appelle "Vendredi 1 Janvier 2016" et la dernière "Samedi 31 Décembre 2016", respectivement aux journées en 2016.

Ensuite, remplir chaque jour (ou feuille) avec des profils de 24h (86400 sec) d'un autre Excel "Profils.xlsx"

J'ai réalisé un programme initial qui nomme les feuilles "Jour 1"..."Jour 365" mais ça se remplis en inverse !!!, qlqn peut-il m'aider à compléter ou d'en créer un autre qui répond au besoin cité précédemment ?

Merci d'avance


Sub Macro1()
'
' Macro1 Macro

Dim Feuille As Worksheet
Static I As Long

For I = 1 To 365
    Set Feuille = ThisWorkbook.Worksheets.Add ' La référence est posée
    Feuille.Name = "Jour " & I ' Le nom d'onglet de la nouvelle feuille est posé.
    Windows("Profils.xlsx").Activate
    Sheets("Cycles1").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("Calendrier.xlsx").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

        
 Next I

    
End Sub


2 réponses

Messages postés
6976
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 octobre 2020
561
Bonjour,

comme ceci:

Sub CreationOnglet()
  Dim i As Integer
  For i = 1 To 5' a adapter
    Sheets.Add , Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "Jour " & i
  Next
End Sub

Messages postés
19
Date d'inscription
mardi 12 août 2014
Statut
Membre
Dernière intervention
4 juillet 2018

Bonjour cs_Le Pivert

le programme marche, je l'ai réadapté pour avoir des nom de jours en fonction des dates dans l'ardre chronologiques avec prise en comte des weekend

Sub CreationOnglet()
Dim I As Date

For I = DateSerial(2016, 1, 1) To DateSerial(2016, 12, 31) ' a adapter



If Weekday(I, vbMonday) <= 5 Then
Workbooks("Profils.xlsx").Sheets("Jours_travail").Copy After:=Workbooks("Calendrier.xlsx").Worksheets(Workbooks("Calendrier.xlsx").Worksheets.Count)

Else
Workbooks("Profils.xlsx").Sheets("Jours_Weekend").Copy After:=Workbooks("Calendrier.xlsx").Worksheets(Workbooks("Calendrier.xlsx").Worksheets.Count)

End If

ActiveSheet.Name = Format(I, "dddd d mmmm yyyy")

Next I


End Sub