Microsoft 365 Compter les WE libres

Aloha

XLDnaute Accro
Bonsoir,
Dans le document ci-attaché se trouvent les données (heures) en rapport avec le contrat de travail de DUPONT Marie et DURAND Germaine.
Dans la ligne en haut les 24 heures de la journée + nuit
Colonne A: Date
Colonne B: Jour semaine
Colonne C: Nom et prénom de l'agent
Colonne D: le service dans lequel l'agent travaille
Colonnes E à AB: les heures en rapport avec le contrat de travail

Signification des symboles rencontrés:
X = 1 heure de travail
C = 1 heure de congé
RS = 1 heure réunion de service comptée comme heure de travail
T = Tutorat
HS = heure supplémentaire
...et il y en a d'autres

Double problème:

* le premier:

La règle: le repos ininterrompu hebdomadaire de 44 heures doit coïncider avec le week-end au moins 20 fois par an. Le week-end s’étend sur une période de deux jours consécutifs situés entre 6 heures le samedi matin et 6 heures le mardi matin.

Les périodes samedi 6h à mardi 6h sont en jaune.

Il s'agit donc de vérifier quand la personne avait un WE de libre suivant les règles ci-dessus
et de les mettre dans un compteur pour faire le bilan à la fin de l'année.

* le second:

Chaque salarié a droit à un repos ininterrompu de 44 heures par semaine. Dès la fin d’un repos hebdomadaire, le prochain repos hebdomadaire doit intervenir endéans les prochains sept jours. Les salariés qui n’ont pas pu jouir dudit repos auront droit à un jour de congé supplémentaire pour chaque période entière de 8 semaines, successives ou non, pendant laquelle le repos ininterrompu de 44 heures par semaine n’est pas accordé.

Il faut donc compter les périodes de 7 jours où la condition est remplie (donc pas 44 heures libres consécutives)

Je ne sais pas si ces poblèmes sont résolubles par seules formules ou s'il faut du VBA. La base de données retraçant chaque heure de chaque jour de l'année pour quelque 130 salariés (qui n'existe pas encore; les données sont disponibles dans des fichiers mensuels par service regroupant tous les salariés travaillant dans ce service; il faudra copier les données par VBA) sera assez importante: 130 * 365 = beaucoup de lignes

Quelqu'un parmi vous entrevoit-il/elle comment résoudre ce double problème?
Merci d'avance pour tout tuyau et toute aide!

Bien à vous
Aloha
 

Pièces jointes

  • Saisies.xlsx
    19.2 KB · Affichages: 185
Dernière édition:

chris

XLDnaute Barbatruc
Bonsoir

Chris, comment est-ce qu'on se sert de tes tableaux ?

Dans le premier, tu listes quoi exactement, pas les WE (Du 14 05 au 17 05, ce n'est pas un WE...) ?

@ plus
Le 14/05/2005 est un samedi
Tu peux afficher au format jjjj j mmmm aaaa h:mm;@

Le 1er tableau affiche les Week end d'au moins 44 heures de repos

Le second, les éventuelles périodes de 7 jours sans repos de 44 heures consécutives
Sur le tableau source il n'y en pas

A actualiser par Données, Actualiser tout si la source évolue (sous réserve, ou bien d'avoir installé l'add on si 2010 ou 2013, ou bien d'utiliser une version 2016 &+)

Comme je l'ai dit, je n'ai pas tout lu et ne sais quel était le format de la restitution attendu
 
Dernière édition:

Aloha

XLDnaute Accro
Bonjour,

Désolé, je ne comprends pas du tout comment cette solution doit fonctionner.
Une chose est claire: j'ai besoin d'une solution où il ne faut pas de manipulations manuelles. Ceci n'est qu'un maillon dans un système très complexe qui fonctionne entièrement par VBA.
Il y a plus de 130 fiches à traiter tous les mois!

Même si une solution par VBA prend du temps pour s'exécuter, ce n'est pas grave puisque Excel ouvre et traite automatiquement tous les fichiers et toutes leurs fiches se trouvant dans un dossier déterminé.
Voilà pourquoi, même si ça prend du temps, ce n'est pas bien grave du moment que cela fonctionne automatiquement. La personne qui s'en occupe peut p.ex. lancer le tout avant sa pause de midi et lorsqu'elle revient il y a des chances que ce soit terminé.

Bien à vous
Aloha
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour à tous

A actualiser par Données, Actualiser tout si la source évolue (sous réserve, ou bien d'avoir installé l'add on si 2010 ou 2013, ou bien d'utiliser une version 2016 &+)

Désolé, je ne comprends pas du tout comment cette solution doit fonctionner.
Une chose est claire: j'ai besoin d'une solution où il ne faut pas de manipulations manuelles. Ceci n'est qu'un maillon dans un système très complexe qui fonctionne entièrement par VBA.
Il y a plus de 130 fiches à traiter tous les mois!
j'ai déjà indiqué qu'il suffit d'actualiser, du moment qu'on a une version Excel adéquate, ce qui est ton cas
L'actualisation peut être lancé automatiquement à l'ouveture du fichietr (paramétrage de la requête) ou par VBA

Tu ne sembles pas avoir regardé...
 

Aloha

XLDnaute Accro
Bonjour,
J'ai regardé mais pas compris!
J'ai importé des données réelles.
Je ne comprends pas à quel nom se rapportent les données dans Début repos, Fin repos et Retard.
 

Pièces jointes

  • Copie de Repos6_PQ.xlsx
    76.6 KB · Affichages: 3
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonsoir

La proposition de Chris me semble la meilleure, si tu arrives à l'installer chez toi.

De mon coté, j'ai fait une macro mettant toutes les informations correspondant à une seule personne sur une seule colonne (Donc on obtient un tableau de 365 *24 lignes sur 130 colonnes), mais :
* Il me faut encore l'optimiser pour que cela tourne plus vite
* Traiter le début et la fin de l'année
* Vérifier si cela tourne bien.

Et comme c'est difficile de vérifier tout cela (Pour les W.E., il ni a pas de difficulté, mais pour les périodes de repos devant être suivies, dans les 7 jours, d'un autre repos, c'est plus laborieux), j'ai refait un fichier me paraissant plus simple à utiliser, juste pour vérifier tout cela :

* A gauche, le tableau initial habituel
* Un tableau, obtenu avec la macro Tri, avec toutes les données triées par personne et par date croissante
* Un tableau pour les W.E. Les nombres, obtenus grâce à des formules, indiquent la durée de chaque repos
* Un tableau donnant, toujours avec des formules, la durée de tous les repos, heure par heure
* Et un tableau mettant en évidence les fins de période de repos de 44 h, non suivies d'une autre période de repos de 44 h dans les 7j.

Les colonnes AD, AE et AF listent les résultats demandés.
Des mises en forme conditionnelles colorient les plages correspondant aux W.E., et les fins de repos de plus de 43 h...
La hauteur des plages utilisées dans les formules s'adaptent automatiquement à celle du tableau initial (sauf erreur ou oubli de ma part).
Les MFC sot installées sur des plages allant jusque la ligne 10000.

Il faudra tirer toutes les formules davantage vers le bas. Chaque type de formule possède un cadre ayant une couleur particulière :
* BK peut être tirée vers le bas, pas vers la droite. BL peut être tirée vers le bas et vers la droite.
* CJ peut être tirée vers le bas, pas vers la droite. CK peut être tirée vers le bas et vers la droite
* DI peut être tirée vers le bas et vers la droite, sans écraser EF. EF ne peut être tirée que vers le bas.

La macro tri tourne très vite dans ce cas, avec plus de 300 lignes.

Les colonnes B et AI ne servent à rien.

A toi de tester. A garder sous le coude si jamais il faut vérifier les résultats obtenus pour telle ou telle personne. Le fait d'avoir les tableaux cote à cote, et les valeurs écrites directement dedans rend le contrôle assez facile.

@ plus

P.S1 : Je ne suis pas très content de la formule dans le dernier tableau de droite, utilisant les noms septjoursmilieu1, septjoursmilieu2 et ainsi de suite... Il faut prendre certaines précautions, d'où cette formule à rallonge, juste à cause du passage d'une personne à la suivante, qui ne comporte pas forcément 7 jours après le dernier repos de 44 h. J'essayerai de changer cela dans les jours à venir.
P.S2 : Normalement, il ni a pas de problème en début d'année, puisque la vérification a déjà été faite l'année précédente en ce qui concerne la durée entre les deux derniers repos. Par conséquent, on doit commencer le fichier le 1er janvier, pas avant. Par contre, pour ce qui est de la fin de l'année, il faut effectivement avoir dans le tableau initial les 7 premiers jours de l'année suivante. Il faudra d'ailleurs rajouter dans le dernier tableau de droite un test par rapport à l'année pour ne pas considérer comme mauvais le dernier repos, c.à-d. le premier de l'année suivante...
PS3 : Il faudra aussi installer quelques lignes de codes pour nettoyer les tableaux entre deux utilisations, histoire de ne pas avoir quelques anciens résultats parasitant certaines cellules.
 

Pièces jointes

  • Aloha Saisies avec Affichages.xlsm
    681.5 KB · Affichages: 5
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

Idem, sans les 2 colonnes inutiles

@plus

P.S : Modification du fichier à 10:12 le 26/03/2021
 

Pièces jointes

  • Aloha Saisies avec Affichages bis essai.xlsm
    751.6 KB · Affichages: 7
Dernière édition:

Aloha

XLDnaute Accro
Bonsoir,
Je m'étais absenté du forum pendant quelques jours et je vois seulement maintenant ce travail énorme que tu as encore fait. Un grand merci encore! Je vais étudier ton dernier fichier, pas facile tellement il est complexe!
Si je comprends bien les résultats pour mes deux tâches se trouvent dans les colonnes AD et AE (?).
Tu recopies le tableau initial trié. N'est-il pas superflu puisqu'il y a moyen de trier le tableau initial de la même façon?
A+
Aloha
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonsoir

Bonsoir,

Si je comprends bien les résultats pour mes deux tâches se trouvent dans les colonnes AD et AE (?).
Tu recopies le tableau initial trié. N'est-il pas superflu puisqu'il y a moyen de trier le tableau initial de la même façon?
A+
Aloha

Les résultats se trouvent effectivement dans les colonnes AD et AE dans le fichier bis (attention, je viens d'en charger une nouvelle version).
Le fichier trié est nécessaire car le calcul de la première cellule de chaque ligne dans les fichiers Tableau WE et Tableau repos sont faits en fonction du contenu de la dernière cellule de la ligne précédente du même tableau. En général, cela ne poserait pas de problème avec le fichier initial non trié, sauf pour le 1er jour de chaque mois pour chaque personne (Dans ce cas, le contenu de la dernière cellule de la ligne précédente contiendrait une information concernant une autre personne).

@ plus
 

Discussions similaires

Réponses
10
Affichages
1 K
Réponses
0
Affichages
379