Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Détecter les périodes de <44 h. libres pendant 7 jours

Aloha

XLDnaute Accro
Bonjour,
Le titre est un peu compliqué; je l'explique.
Le contexte: des salariés ont droit à 1 jour de congé supplémentaire lorsque pendant 7 semaines consécutives ou non ils ne sont pas libres pendant 44 h. de suite par semaine.

Ils remplissent chacun une fiche mensuelle où ils saisissent toutes les heures en relation avec le contrat de travail, heure par heure, en inscrivant dans les cellules le type d'heure : travail ("X"), congé ("C"), maladie ("M"), heures supplémentaires (6 sortes, de "S1" à "S6"), réunions ("R"), etc. Ces fiches sont regroupées dans un classeur dont le nom se compose du nom du service, du mois et de l'année ([Mois] [Année] [SERVICEX].XLSX)

Admettons que je sois arrivé à regrouper ces données mois par mois et salarié par salarié (pour l'instant je le simule dans le fichier ci-joint; je dois m'occuper de ce problème par après) dans une base de données, en y copiant (de préf. par VBA, sinon par formule), les données requises de toutes les fiches de tous les mois et de tous les services.

Ce qui donne, en gros, un fichier comme celui qui est ci-joint.

J'ai donc compté jour par jour dans les fichiers remplis par les salariés les cases horaires (00:00 à 24:00, puisque le service fonctionne nuit et jour tous les jours de l'année) où il y a une inscription (colonne D) et j'ai retranché ce chiffre de 24, ce qui me donne donc les heures libres par période de 24 heures (colonne E). La colonne F tient compte de la date d'engagement et ne reprend les valeurs de la colonne E que pour la période du contrat de travail, sinon "HC" (hors contrat) est inscrit dans la case correspondante.

Il s'agit donc à présent de détecter, 7 jours par 7 jours, les périodes où dans la colonne F l'addition de 2 cellules superposées ne donne pas au moins 44, en commençant, pour déterminer les périodes de 7 jours, par le 1er janvier, resp. par la date d'engagement si le salarié a été engagé pendant l'années en cours,
 

Pièces jointes

  • 44 h. libres.xlsx
    18 KB · Affichages: 50

CISCO

XLDnaute Barbatruc
Bonjour

Dans ton avant-avant dernier post, tu ne parlais que du 16 et du 17. Hier soir, après mon dernier post, en relisant ton avant dernier post, j'ai vu que tu parlais d'une permanence commençant le 12. Et effectivement, dans ce cas là, il y a un problème car je n'ai pas pris en compte des permanences à cheval sur 3 jours (ou plus bien sûr) sans aucune interruption (Cf. post #173).

Bonjour
...
Je n'ai donc traité que le cas avec 3 groupes max par jour, et chevauchement d'un groupe sur deux jours au max, pas sur trois jours donc.
...@ plus

Donc, dans ce cas, il faut :
* soit compter une unité à chaque fois qu'on a moins de, ou 24 h de permanence, au fur et à mesure
* soit faire le total des P consécutifs, en supposant que cela peut être sur un nombre quelconque de jours consécutifs.

Je vais essayer de modifier tout cela. Pas évident, tu t'en doutes.

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

Cf. en pièce jointe, en colonne AL.

Je n'y suis pas arrivé en modifiant la méthode précédente, donc j'ai fait avec un tableau intermédiaire sur la feuille 2. Si je trouve quelque chose de mieux, je posterai tout cela. Avec un tableau en VBA, cela serait plus discret...

@ plus

P.S : 21:20 Simplification de la formule dans la colonne AC de la feuille 2.
 

Pièces jointes

  • Feuille annuelle valeurs 20.12.2017 2117xls.xls
    1.6 MB · Affichages: 13
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonsoir

Une autre possibilité, sans avoir besoin de construire un grand tableau sur la feuille 2.
J'espère que c'est bon.

@ plus

21/12 10:16 : Il y avait une erreur sur le fichier dans la colonne AL. Je l'ai corrigée, du moins je l'espère !
 

Pièces jointes

  • Feuille annuelle valeurs 21.12.2017 10.16.xls
    1.1 MB · Affichages: 19
Dernière édition:

Aloha

XLDnaute Accro
Bonsoir

Je n'ai pas répondu plus tôt parce que j'ai passé deux jours à Strasbourg avec ma fille.
J'ai analysé le dernier fichier et j'ai colorié les cellules contenant les P par tournées de <=24 heures et constituant donc une unité.
Le résultat: Globalement le résultat est correct. Seulement, comme tu verras, les résultats par jour ne sont pas toujours exacts. Cependant, dans toutes ces situations la formule se "rattrape" et donne le total sur plusieurs jours.
Je me rends bien compte du travail formidable (chapeau, chapeau et encore chapeau!) que tu as fait et je pense que s'il n'est pas possible d'éliminer ces petites imprécisions restantes il sera possible de vivre avec.
Le seul petit problème qui pourra survenir sera si une telle situation se produit à cheval sur deux mois, mais si les salariés sont avertis et auront la certitude que ce qui manquera un mois sera rattrapé le mois prochain, je pense que ce sera acceptable pour eux.

Bonne soirée
Aloha
 

Pièces jointes

  • Feuille annuelle valeurs 23.12.2017 1845.xls
    1.1 MB · Affichages: 17

CISCO

XLDnaute Barbatruc
Bonsoir


Oui, j'avais bien vu ce "défaut" : La méthode utilisée ne liste pas les heures de congé accordées au fur et à mesure, à chaque fois qu'un groupe de 24 h de permanence a été effectué, mais à la fin de cette permanence. Cela a deux défauts :
* Si on veut assurer le passage d'une année à la suivante, il faudra tenir compte de l'ensemble de la dernière permanence en cours s'il y a chevauchement.
* Une permanence à cheval sur deux mois ne sera comptabilisée que le second mois.

Pour réussir à faire un décompte journalier, il faudrait que je trouve une astuce comptabilisant au fur et à mesure les P, un peu comme dans le tableau de la feuille 2 sur la pièce jointe du post #184, donc sans démarrer avec les formules des colonnes AL, AN et AM. Ce qui veut dire, changer complètement de méthode. En VBA, cela serait aussi possible, mais vu mon niveau...

Pour le moment, je ne vois pas comment. Si une idée me vient, je la posterai...

@ plus
 

Aloha

XLDnaute Accro
Bonsoir,

D'après ce qu'on m'a dit concernant le passage d'une année à la prochaine cela ne posera pas problème puisque les calculs cessent le 31.12.
Pour ce qui est du passage d'un mois à l'autre je répète ma remarque de tout à l'heure.
Si tu y trouves une solution, tant mieux, sinon on pourra vivre avec la solution actuelle.
Au vu de tes formidables connaissances en formules raffinées, je m'étonne un peu que tu ne te sois pas lancé aussi dans le VBA qui est bien plus flexible que les formules et qui permet de faire des opérations impossibles à réaliser par formule.

Bonne soirée
Aloha
 

CISCO

XLDnaute Barbatruc
Bonsoir


Pour ce qui est du VBA, j'apprends (livres, Internet, et ce forum), je comprends, je pratique un peu, un tout petit peu, et puis j'oublie...

@plus
 

CISCO

XLDnaute Barbatruc
Bonjour

Il ni avait pas tant de choses que cela à changer, un "" à remplacer par un 24, et un + .....* 24 à supprimer.
Cela donne le fichier 26.12.2017 1151. J'ai l'impression que c'est bon. J'espère que j'ai traité tous les cas possibles.
On peut même remplacer des "" par des 0 dans les colonnes AM et AN, et regrouper les formules des colonnes AO, AP, AQ et AR dans une seule formule, et on obtient le fichier 26.12.2017 1200, avec moins de colonnes intermédiaires.

@ plus
 

Pièces jointes

  • Feuille annuelle valeurs 26.12.2017 1151.xls
    1.1 MB · Affichages: 8
  • Feuille annuelle valeurs 26.12.2017 1200.xls
    1.1 MB · Affichages: 26
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

Quelques simplifications plus tard...

@plus
 

Pièces jointes

  • Feuille annuelle valeurs 26.12.2017 1200bis.xls
    921 KB · Affichages: 14
  • Feuille annuelle valeurs 26.12.2017 1151bis.xls
    1 MB · Affichages: 12

Aloha

XLDnaute Accro
Bonsoir,
Merci beaucoup!
Tu m'as envoyé 4 versions; je suppose que c'est la dernière (...12bis) la définitive et que je peux ignorer les autres?
Avec cela cette tâche pénible devrait être terminée et je dois me consacrer maintenant au code VBA, ce qui sera dur aussi. J'ai p.ex. enregistré une macro pour l'intégrer dans une macro rédigée à la main, mais il y a des hics que je n'arrive pas à surmonter.
Bonne soirée
Aloha
 

Aloha

XLDnaute Accro
Bonsoir,

Donc il vaut mieux utiliser ce fichier-là.

J'ai dû, pour éviter des erreurs dans les cellules L7, L8, P7, P8, T7, T8, ajouter un SI() qui vérifie s'il y a une valeur >0 dans les cellules contenant la tâche de la 2e et de la 3e période.

Bonne nuit
Aloha
 

Discussions similaires

Réponses
4
Affichages
396
Réponses
9
Affichages
247
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…