IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création d'un Calendrier en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Octobre 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 50
    Par défaut Création d'un Calendrier en VBA
    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



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    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. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    oubli d'un paramètre pour Worksheets.Add, juste consulter l'aide VBA interne concernant cette méthode …



    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Octobre 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 50
    Par défaut
    Citation Envoyé par Marc-L Voir le message



    Bonjour,

    oubli d'un paramètre pour Worksheets.Add, juste consulter l'aide VBA interne concernant cette méthode …



    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …


    je n'ai pas trouvé une solution de variable manquante dans l'aide VBA, j'ai créer un autre programme dans le post précedent

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour
    l'argument c'était "after"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ai pas testé. Il y aura donc peut-être un peu de débugage à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Calendrier()
    Dim jour As Date
     
    For jour = DateSerial(2016, 1, 1) To DateSerial(2016, 12, 31)
       Workbooks("Profils.xlsx").Sheets("Cycles1").Copy After:=Workbooks("Calendrier.xlsx").Worksheets(Workbooks("Calendrier.xlsx").Worksheets.Count)
       ActiveSheet.Name = Format(jour, "dddd d mmmm yyyy")
    Next jour
     
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Octobre 2013
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 50
    Par défaut
    Bonjour

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'une image en vba Access
    Par crashyear dans le forum VBA Access
    Réponses: 7
    Dernier message: 27/11/2006, 14h22
  2. Création d'une feuille en VBA
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/07/2006, 14h23
  3. FAQ : problème avec création d'une requete en VBA
    Par Oluha dans le forum VBA Access
    Réponses: 14
    Dernier message: 14/02/2006, 12h05
  4. Création DLL pour utilisation sur VBA
    Par Fbartolo dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2005, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo