Calcul périodes de congés consécutives

un contournement, la formule de la colonne I regardera aux 500 lignes précédentes + la ligne actuelle, mais comme cela provoque des erreurs aux lignes inférieures à 500, on commence avec la ligne 500 et on cache les lignes 1-500.
Maintenant, l’idée est que le congé précédent du matricule se trouve au maximum 500 lignes avant la ligne actuelle, sinon ce donnée sera ignoré

Vous avez combien de lignes par mois ? Ces 35.000, ce’st combien d’années ?
Classeur_fabien.xlsx (17,5 Ko)

Ces 35000 lignes représentent les congés des collaborateurs de ma boite pris du 1er mai au 31 octobre…

oei, je vous donnerai une autre proposition dans une heure …

3 colonnes auxiliaires,
colonne J = matricule & le numéro du congé en ordre ascendant avec la « date début congé », donc même si votre tableau n’est pas bien trié, on prend les « dates début congé » de la plus petite à la plus grande pour chaque matricule.
Colonne K = ligne du congé précédent dans ce tableau (pour ne numéro de la ligne réelle, il faut ajouter le numéro de la ligne des entêtes du tableau, ici 1)
colonne I = date fin du congé précédent (si ce n’était pas le premier congé).
Ces colonne sont grisées, pour vous pouvez modifier ce couleur.
Classeur_fabien.xlsx (15,3 Ko)
Qu pensez-vous de la vitesse avec 35.000 lignes ?

Merci de nouveau Cow18 pour le travail accompli :pray:
J’essaierai le nouveau fichier chez moi ce soir.
Je ne peux évidemment pas le télécharger au travail.
Je te tiens au courant.
Fabien

Bonsoir,
J’ai essayé de trouver une solution, par le biais de Power Query (add-on nativement inclus depuis la version 2016 d’Excel pour PC, et normalement présent pour 365 MAC)
Cependant, afin de tester plus avant (notamment sur la célérité), serait-il possible de joindre un fichier représentant les données réelles, mais avec 3 colonnes seulement (MATRICULE - DATE DEBUT - DATE FIN), avec au moins un petit millier de lignes. (et plus, si possible, mais sans les noms…)
Dans un tableau structuré, et uniquement ces trois colonnes (si la taille du fichier permet un téléchargement sur le site)
Bonne soirée

1 « J'aime »

Bonjour voisin Breton :wink:
Voilà un fichier test avec 1500 lignes : matricule; date de debut absence; date de fin d’absence

fichier essai power query.xlsx (37,8 Ko)

Bonjour,
Avec ces 1500 lignes, moins de 2 secondes, donc ça devrait le faire (on pourrait améliorer mais, si ça te va…)
Dans ce fichier, tu acceptes le msg d’avertissement (ce ne sont pas des macros, juste des connexions internes de données, pas de soucis), et dans le ruban « Données », tu cliques sur « Actualiser tout ».
2 secondes après, tu as le résultat dans le tableau vert…
Si besoin de plus d’infos, n’hésite pas
Bonne journée
Classeur_fabien.xlsx (62,4 Ko)

Bonjour,
Comme je vois que le fichier ne fait qu’à peine 40 Ko, s’il t’est possible de mettre toutes les données (avec uniquement les 3 colonnes), ça pourrait en plus m’aider dans une recherche d’optimisation.
Te remercie par avance

Merci pour ton travail.
Je testerai ça ce soir et je remettrai un fichier avec les 35 000 lignes.
Belle journée.
Fabien

une remarque, je vois que les fériés sont prévus dans PQ, mais il n’y a pas un tableau avec ces fériés dans excel.

Hello Bart,
Effectivement, les fériés sont calculés directement dans PQ, la liste comprend les JF de l’année de la date de début du congé + l’année suivante - ainsi si les dates se chevauchent sur 2 ans, les JF des 2 années sont pris en compte

dans son premier fichier, il y avaient aussi d’autres jours fériés qui n’étaient pas férié d’origine. Oubien c’était pour essayer oubien le TS veut ajouter ses propres fériés. Question à lui/elle ?

Re-,
J’avais vu qu’il comptabilisait toujours le lundi de pentecôte, donc je l’ai rajouté
sinon, je pense que la procédure c’est d’indiquer si RTT ou autre???

je ne connais pas les abbrev. français pour ces jours, donc je suppose que la réponse est oui. :blush:

Re-,
Pour le fun (et parce que le sujet m’a intéressé)
Dans ce nouveau fichier, avec les 1500 lignes
Au final, un tableau avec les infos suivantes :
On choisit le nombre de jours consécutifs dans la cellule A2 de l’onglet « PQ » (ici, j’ai mis 10, comme indiqué dans la demande, mais on peut mettre n’importe quel nombre)
Puis, ruban « Données », « Actualiser tout », et on obtient :

  • Une colonne Matricule
  • Une colonne Nom
  • Une colonne Prénom
  • Une colonne Cumul, avec le nombre de jours consécutifs pris
  • Une colonne Nb Périodes, soit le nombre de périodes posées pour arriver à ce cumul
  • Et enfin, par groupe de 4, le type de congé, la date de début, la date de fin et le nombre de jours pour ce groupe.
  • Pour info, avec 1500 noms, en moins de 5 secondes, on obtient ce résultat
    C’était juste pour le fun
    PS, le code est certainement condensable et améliorable, mais le résultat semble être là…
    Bonne apm
    Fabien_Jours consécutifs.xlsx (77,7 Ko)

Bonsoir,
Toujours dans l’attente de ce fichier…
PS, si tu peux également renseigner la colonne « Motif », ça permettrait de fiabiliser le projet.
Au fait, tu as testé mon dernier?
Bonne soirée

bonjour Cousinhub,
voici un fichier avec 35.000 lignes (et une macro pour renouveller ces lignes)
Fabien_Jours consécutifs (1).xlsm (1,3 Mo)

Bonjour @ tous
Merci @Cow18 pour le fichier, j’allais le faire ce matin.
Merci @Cousinhub pour ton intérêt à ma demande.

En fait en relisant mon sujet de départ je m’aperçois que mon but final n’est pas clairement expliqué, et peut même orienter dans une mauvaise direction.
Je m’en excuse.
Comme quoi dès fois quand on écrit des choses c’est clair pour celui qui rédige alors que pour le lecteur…

En fait, c’est pas tout à fait ça, mais avec le travail de @Cow18 j’y étais arrivé quand même.

En fait le but final est inverse :roll_eyes:
Désolé pour l’esprit tordu.

D’après mon rapport de congé entreprise je cherche surtout ceux qui n’ont pas pris 10 jours consécutifs (tous congés confondus)… Mais à partir d’une autre liste de personnels qui ont travaillé sur notre période de fermeture.

Avec le travail de @Cow18 (feuille Tableau AD) j’avais ajouté une colonne qui filtrait sur <10 et j’avais ce que je voulais… Avec cette formule :

=SI(AT2>=10;[@Matricule];«  »)

Puis dans une autre feuille (Tableau CLF) qui contenait la liste des personnels qui ont travaillé sur notre période de fermeture, je faisais une formule qui ressemblait à ça :

=SIERREUR(SI(RECHERCHEV(TableauCLF[@Matricule];tableauAD!AU2:AU33168;1;FAUX)=TableauCLF[@Matricule];« OK »;« NOK »);« NOK »)

Bonjour,
Hello Bart, merci pour ton fichier.
@fabien_leroux , hormis la période de fermeture que je n’ai pas compris, la requête est alors simplifiée.
Dans ce fichier, avec 35000 lignes, la liste des personnes n’ayant pas pris 20 jours (exemple pour ce fichier) prend moins de 20 secondes pour sortir.
Pour faire avancer le schimili…
Bon dimanche

PS, j’ai oublié de préciser, mais j’ai enlevé le 20 mai 2024 (lundi de pentecôte) de la liste des JF, car légalement, ce n’en est plus.
Fabien_Jours consécutifs_v2.xlsm (1,2 Mo)