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 :

Date de début/fin dans une liste en fonction d'une période [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Dessinateur en batiment
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur en batiment

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut Date de début/fin dans une liste en fonction d'une période
    Bonjour à tous

    je cherche à trouver les dates de début/fin de CP dans une liste de dates en fonction d'une période donné

    Période = 1er mai au 31 Octobre

    comme ça j'aurais des CP consécutifs.

    peut fait par macro je pense.

    dans mon fichier, pour francois ces dates de CP en fonction de la période sont du 07/07/2014 - 25/07/2014.

    Merci d'avance à celui qui trouvera la formule VBA ou excel
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 771
    Points : 28 631
    Points
    28 631
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si tu connais la date de début et le nombre de jours avant la date de fin, c'est un simple calcul
    DateDebut + NbreDeJours
    Si tu connais la date de début et le nombre de jours ouvrés avant la date de fin (sans les week-end), il y a lieu d'utiliser la formule SERIE.JOUR.OUVRE
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SERIE.JOUR.OUVRE(DateDebut;NbreJoursOuvre)
    Il y a un troisième argument facultatif pour indiquer la plage des jours fériés.
    Si ta question est différente, explique mieux ce que tu attends.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Dessinateur en batiment
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur en batiment

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    merci de ton aide

    je cherche à avoir les dates début et de fin (congés consécutif) en fonction d'une période donné.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 771
    Points : 28 631
    Points
    28 631
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Quels sont les valeurs dont tu disposes et quelle est la valeur attendue.
    Un petit exemple écrit ne serait pas superflu.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Candidat au Club
    Homme Profil pro
    Dessinateur en batiment
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur en batiment

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    dans ma feuil "BD" j'ai une liste de personnes avec une liste de dates, de congés (périodes début/fin) pris et le type de congés.

    LIONEL 01/09/2014 05/09/2014 CP
    LIONEL 08/09/2014 12/09/2014 CP
    SANDY 01/08/2014 01/08/2014 CP
    SANDY 04/08/2014 08/08/2014 CP
    SANDY 11/08/2014 14/08/2014 CP
    SANDY 05/09/2014 05/09/2014 RTT
    SANDY 19/09/2014 19/09/2014 RTT
    JOSÉ 15/07/2014 15/07/2014 RTT
    JOSÉ 28/07/2014 01/08/2014 CP
    JOSÉ 13/08/2014 14/08/2014 RTT
    JOSÉ 01/09/2014 05/09/2014 CP
    FRANCOIS 07/07/2014 11/07/2014 CP
    FRANCOIS 15/07/2014 18/07/2014 CP
    FRANCOIS 21/07/2014 25/07/2014 CP
    FRANCOIS 18/08/2014 19/08/2014 RTT
    FRANCOIS 03/09/2014 03/09/2014 RTT
    EVELYNE 10/11/2014 10/11/2014 RTT
    EVELYNE 26/12/2014 26/12/2014 CP
    EVELYNE 29/12/2014 31/12/2014 CP

    je cherche les dates début/fin (congés consécutifs) en fonction d'une de la période de congés (1er mai au 31 Octobre)..

    donc par excemple : Francois ces congés vont du 07/07/2014 au 25/07/2014.

    comme tu peux voir ma macro récupère bien les dates de début/fin de congés. mais je n'arrive pas a récupérer les congés consécutifs

    j'ai ajouter la feuil "plan" qui je pense va pouvoir m'aidé à récupérer les congés consécutifs en particulier ceux qui sont a cheval sur 2 mois
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    comme tu peux voir ma macro récupère bien les dates de début/fin de congés. mais je n'arrive pas a récupérer les congés consécutifs
    Quel est le code de cette macro ?

    Ce que tu veux c'est partir de
    FRANCOIS 07/07/2014 11/07/2014 CP
    FRANCOIS 15/07/2014 18/07/2014 CP
    FRANCOIS 21/07/2014 25/07/2014 CP
    pour obtenir
    07/07/2014 25/07/2014
    ou partir de
    07/07/2014 25/07/2014
    pour obtenir
    FRANCOIS 07/07/2014 11/07/2014 CP
    FRANCOIS 15/07/2014 18/07/2014 CP
    FRANCOIS 21/07/2014 25/07/2014 CP

  7. #7
    Candidat au Club
    Homme Profil pro
    Dessinateur en batiment
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur en batiment

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Ma macro récupère dans les plannings feuils « sem1 à sem4 »

    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
    Sub CreeBD()
     Application.Calculation = xlCalculationManual
     Application.ScreenUpdating = False
     Set s = Sheets("BD")
     s.[B2:E1000].ClearContents
     For sem = 1 To 4
      Set p = Sheets("sem" & sem)
      nbCol = 95
      For ligne = 4 To 47
        i = 2
        Do While i <= nbCol
          témoin = False
          Do While p.Cells(ligne, i) = "" And i <= nbCol
            If i = nbCol Then témoin = True
            i = i + 1
          Loop
          If Not témoin Then
            typeCongés = p.Cells(ligne, i)
            début = p.Cells(3, i)
            Do While p.Cells(ligne, i) = typeCongés And i <= nbCol
             If i = nbCol Then témoin = True
             i = i + 1
            Loop
            fin = p.Cells(3, i - 1)
            ligneBD = s.[B65000].End(xlUp).Row + 1
            s.Cells(ligneBD, 2) = p.Cells(ligne, 1)
            s.Cells(ligneBD, 3) = début
            s.Cells(ligneBD, 4) = fin
            s.Cells(ligneBD, 5) = typeCongés
               End If
        Loop
      Next ligne
    Next sem
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Une plage de dates feuil « BD » de forme

    FRANCOIS 07/07/2014 11/07/2014 CP
    FRANCOIS 15/07/2014 18/07/2014 CP
    FRANCOIS 21/07/2014 25/07/2014 CP

    Et je souhaite obtenir :
    07/07/2014 25/07/2014

    Ce qui correspond aux congés consécutifs de francois

  8. #8
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Voici un début de solution.
    Il manque le test sur les jours fériés qui devaient être stockés quelque part
    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
    Function InitEndPeriodDays(Date1Row As Long) As Variant
    Dim PeriodArr(6) As Range
    Dim CpDates(2) As Variant
    Dim Cellule As Range
    Dim DeltaD As Integer, i As Integer, DayNo As Integer
    Dim NextRow As Long
    Dim Date1 As Date, Date2 As Date, TestDate
      Date1 = Sheets("BD").Cells(Date1Row, 3)
      CpDates(1) = Date1
      Date2 = Sheets("BD").Cells(Date1Row, 4)
      CpDates(2) = Date2
      NextRow = Date1Row + 1
      Do While Sheets("BD").Cells(Date1Row, 2) = Sheets("BD").Cells(NextRow, 2) And _
            Sheets("BD").Cells(Date1Row, 5) = Sheets("BD").Cells(NextRow, 5)
        Date1 = Sheets("BD").Cells(Date1Row, 4)  '  Date de fin de la période
        Date2 = Sheets("BD").Cells(NextRow, 3)   '  Date de début de la période suivante
        DeltaD = DateDiff("d", Date1, Date2) - 1
        For i = 1 To DeltaD
          TestDate = Date1 + i
          DayNo = Weekday(TestDate)
          If DayNo < 7 And DayNo > 1 Then ' le jour testé n'est pas un jour de we
            ' if not jour férié then exit do
          End If
        Next i
        CpDates(2) = Sheets("BD").Cells(NextRow, 4)
        Date1Row = NextRow
        NextRow = NextRow + 1
      Loop
      InitEndPeriodDays = CpDates
    End Function
    Sub TestInitEndPeriodDays()
    Dim TestArr() As Variant
      ReDim TestArr(2)
      TestArr = InitEndPeriodDays(540)
      MsgBox TestArr(1) & Chr(10) & TestArr(2)
    End Sub

  9. #9
    Candidat au Club
    Homme Profil pro
    Dessinateur en batiment
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur en batiment

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    ok merci de ton aide, je vais faire le test

    dit moi comment j'utilise la Macro

  10. #10
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Utilises ma macro de test "TestInitEndPeriodDays" écrite en fin de code

  11. #11
    Candidat au Club
    Homme Profil pro
    Dessinateur en batiment
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur en batiment

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    ok mister je vais faire ça ... je pense avoir trouver une solution a mon problème...je vais faire une feuil "plan" ou il y aura mon planning panoramique avec que les jours ouvrés comme ça j'aurais mes jours de congés consécutifs

  12. #12
    Candidat au Club
    Homme Profil pro
    Dessinateur en batiment
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur en batiment

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Merci de ton aide defluc

    amicalement

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 13/09/2014, 14h59
  2. [LibreOffice][Base de données] Recuperer une liste de tables et une liste de champs d'une table sur LibreOffice & OpenOffice
    Par gerard.sauvage dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2014, 12h35
  3. Réponses: 2
    Dernier message: 08/10/2013, 13h54
  4. [MySQL] Faire varier une liste en fonction d'une autre dans un formulaire
    Par lemirandais dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/01/2009, 22h45
  5. Réponses: 2
    Dernier message: 11/09/2007, 11h15

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