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 :

Incrémenter série de dates en triple


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Par défaut Incrémenter série de dates en triple
    Bonjour à tous,

    Travaillant dans une usine et aillant besoin de récolter des informations par jour et par équipe, je souhaite créer un calendrier, mais j'ai besoin que chaque jour soit sur trois lignes (équipe matin, équipe AM, équipe nuit), comme ci-joint :

    Nom : Capture.JPG
Affichages : 760
Taille : 46,6 Ko

    J'aimerais savoir si cela est possible via une macro, car j'aimerais créer ce calendrier pour un maximum de temps (disons les 5 années à venir).
    Lorsque j'incrémente une série de date, je dois à la main insérer 2 lignes pour chaque jour et copier-coller le jour, ce qui représenterait un certain temps sur 5 années...

    En bonus :
    - Est-il possible de n'avoir qu'une seule ligne pour les jours de week-end ?

    Merci beaucoup par avance.
    Cordialement,
    Pierre

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Fais l'expérience suivante :
    En colonne A :
    en A2 : la date de ton choix
    en A3 : cette formule : =$A$2 + LIGNE()-2, que tu étire ensuite vers le bas jusqu'où tu veux
    En colonne B :
    En B2 : MATIN
    En B3 : JOUR
    En B4 : NUIT
    en B5 : Formule : =B2, que tu tires ensuite vers le bas également
    Pas une seule ligne de code.

    Et si tu préfères faire ces opérations par code, c'est donc tout simplement celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim nombrejours As Integer
     Range("A2").Value = CDate("01/01/2017") ' -->> ici ta date de départ
     nombrejours = 20 ' ---->> ici ton nombre de jours à traiter
     Range("B2").Value = "MATIN"
     Range("B3").Value = "APRES-MIDI"
     Range("B4").Value = "NUIT"
     Range("A3:A" & (nombrejours) * 3).Formula = "=$A$2 + ROW()-2"
     Range("B5:B" & (nombrejours) * 3).Formula = "=B2"

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Unparia : Dans ta suggestion, la meme date ne se repete pas 3 fois comme il demande.

    Une autre suggestion:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub TT()
     
    Columns("a:c").Clear
     
    debut = 2017
    fin = debut + 5
    d = DateSerial(debut, 1, 1)
    lig = 1
    While Year(d) < fin
     
    jour = Format(d, "dddd")
     
    If jour = "samedi" Or jour = "dimanche" Then
     nbr = 1
    Else
     nbr = 3
    End If
     
    For I = 1 To nbr
     lig = lig + 1
     
     Cells(lig, 1) = d
     Cells(lig, 3) = jour
     
     If nbr = 1 Then
      Else
     
      Select Case I
       Case 1
        Cells(lig, 2) = "Matin"
       Case 2
        Cells(lig, 2) = "APRES MIDI"
       Case 3
        Cells(lig, 2) = "NUIT"
      End Select
     
     End If
    Next
     d = d + 1
    Wend
     
    End Sub

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Par défaut
    Bonjour,

    Effectivement, unparia, avec ta solution je n'ai qu'une seul ligne par jour.
    Merci beaucoup Docmarti, ton code fonctionne parfaitement.
    Les week-end s'affichent tout de même en 3 lignes, mais grâce au jour de la semaine affiché en 3è colonne j'ai pu filtrer et me débrouiller.
    ( Après revue du code, c'est que mon Excel affichait les jours en Anglais --> on peut donc modifier le code pour prendre en compte ce point).
    Merci à vous deux d'avoir pris le temps de me répondre!
    J'en profite pour me former sur cette macro.

    A bientôt !

    Pierre

Discussions similaires

  1. Série de dates pour un graphique
    Par Daejung dans le forum Excel
    Réponses: 2
    Dernier message: 17/12/2008, 07h42
  2. Calcul d'un écart-type sur une série de dates
    Par Emilie MARQUOIS-OGEZ dans le forum Excel
    Réponses: 6
    Dernier message: 30/10/2007, 14h56
  3. Réponses: 5
    Dernier message: 09/03/2007, 19h39
  4. [ORACLE 10G]Incrémentation d'une date d'un jour
    Par titanblanc dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2006, 11h07
  5. [CR.NET] Rapport de présences avec série de dates en entête
    Par crackity_jones666 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 30/07/2004, 09h27

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