Microsoft 365 Récupérer dates de congés suivant matricule VBA

David

XLDnaute Occasionnel
Bonjour à tous,

J'ai un fichier avec des dates de congés qui est jour par jour et j'ai besoin de regrouper ses jours par période, j'arrive à regrouper les jours, mais cela me pose problème si les dates ne se suivent pas.
j'ai des dates du 02/08/21 au 20/08/21 je les reçois sans les samedis et dimanches, jusque la c'est sans problème je tri sur le matricule et je récupère la première et dernière date, cela se complique s'il y a plusieurs périodes, exemple le 06 et le 12 aout sur le même matricule, à faire comme je fais ça me marque du 06 au 12 (2 jours), alors que je veux le 06 et le 12 (1 jour sur chaque date).

Pas sur que cela soit hyper clair, je vous joins un fichier d'exemple.

Merci.
 

Pièces jointes

  • GTA.xlsm
    21.7 KB · Affichages: 10

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Par requête powerquery dans la feuille 'Résultat'.
Votre attendu est faux pour le premier matricule (83768). Ses dix jours de CP sont sur deux périodes, du 9 au 13 et du 16 au 20 août.

Quand les données changent, actualisez la requête

J'en profite pour vous joindre un autre exemple que j'avais fait pour un xldnaute et qui ajoute un regroupement par type de congé.



Cordialement
 

Pièces jointes

  • GTA.xlsm
    34.7 KB · Affichages: 4
  • Dates_début_dates_fin.xlsx
    40.9 KB · Affichages: 4

David

XLDnaute Occasionnel
Bonjour Hasco,

Mon attendu pour le premier matricule est bon, comme j'ai essayé de l'expliquer et dans mon fichier exemple si entre 2 dates c'est des samedis et un dimanches ça doit faire une seule période, soit du 09/08/21 au 20/08/21 10 jours de CP.
Je n'ai pas compris comment marchait votre fichier.
Merci
 

David

XLDnaute Occasionnel
Je pense que j'ai trouvé, je vais voir si je peux tenir compte des jours fériés qui ne seront pas dans le fichier d'origine, mais qui ne doit pas scinder les périodes

Si, quelqu'un a une idée, je prends.


VB:
 If Sheets("Base CP").Range("A" & CptDate + 1).Value - Sheets("Base CP").Range("A" & CptDate).Value <= 3 Or (Weekday(Sheets("Base CP").Range("A" & CptDate + 1).Value) = 2 And Sheets("Base CP").Range("A" & CptDate + 1).Value - Sheets("Base CP").Range("A" & CptDate).Value <= 3) Then
    CptDate = CptDate + 1
    Else
    CptDate = CptDate + 1
        GoTo suite
    End If

Merci
 

Phil69970

XLDnaute Barbatruc
Bonjour David

Version revue et corrigée qui tient compte des samedi, dimanche et jours fériés et les changements d'année de 2020 à 2039 :p:p:p

*J'ai fait des essais en modifiant les dates dans le fichier

*Merci de ton retour

@Phil69970
 

Pièces jointes

  • Extraction GTA V6.xlsm
    43.4 KB · Affichages: 15

David

XLDnaute Occasionnel
Bonjour David

Version revue et corrigée qui tient compte des samedi, dimanche et jours fériés et les changements d'année de 2020 à 2039 :p:p:p

*J'ai fait des essais en modifiant les dates dans le fichier

*Merci de ton retour

@Phil69970
Merci beaucoup.
J'ai regardé la première version et il y avait un problème aussi bien sur la mienne que sur la tienne, j'ai simulé la prise de CP un 02 août, il est revenu travaillé le 03/08 et est reparti en CP le 04/08, ça génère la période du 02 au 04/08.

Avec cette version cela a l'air de marcher parfaitement, je regarde ce soir dans les détail.

Merci encore et bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
313 274
Messages
2 096 754
Membres
106 739
dernier inscrit
jcdu16