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

Tes derniers fichiers me paraissent plus simples que les fichiers initiaux, mais je ne vois pas trop le lien avec le travail initial : on connait le nombre d'heures effectuées par la personne chaque jour, mais pas l'heure de début ni l'heure de fin de son travail. Résultat, on ne peut pas déterminer précisément les temps de pause, ce que l'on faisait avec les premiers fichiers.

Alors, quelques questions :
* Quels fichiers te donnent la macro ? Est-ce que tu as fait des modifications sur ces derniers fichiers ?
* Qu'est-ce qu'il faut faire exactement ?

@ plus
 

Aloha

XLDnaute Accro
Re,

(Ne t’effraye pas si les fonctions que tu trouveras ci-dessous sont en allemand ; j’ai un Excel allemand sur l’ordinateur ; ignore les mots allemands : ce sont les références qui importent ici pour expliquer.)

Ces fichiers n'ont rien avoir avec la tâche réelle. Je les ai établis seulement pour montrer que, si je veux faire le 1.2. une opération avec une formule qui a besoin d'informations du mois de janvier je dois sauvegarder ces infos dans la BD pour pouvoir y accéder.

C'est exactement cela qu'il faut faire.

Les macros sont contenues dans le fichier qui comprend

* une fiche par service avec tous les employés et toutes les données personnelles (date naissance, début contrat de travail, tâche hebdom. etc) données personnelles de tous les salariés

* une feuille avec la base de données

* d'autres feuilles sans incidence sur la tâche actuelle

Le principe inébranlable est qu'il n'y a aucun lien direct (seulement par le biais de la BD) entre les fichiers des différents mois et qu'il faut trouver un moyen de mettre à disposition de février les données parvenant de janvier et requises dans les formules de février.

Voici les formules en question de la ligne 73 :

FH73:
=WENNFEHLER(KKLEINSTE(WENN(ISTZAHL(VERGLEICH(F73:AC73;FW$4:FW$13;0));SPALTE(F73:AC73)-6);1+ISTZAHL(VERGLEICH(AC65;FW$4:FW$13;0))*ISTZAHL(VERGLEICH(F73;FW$4:FW$13;0))*WENN(FI65<>"";FI65;0));"")


FI73:
=WENNFEHLER(WENN(ISTZAHL(VERGLEICH(AC73;FW$4:FW$13;0))*ISTZAHL(VERGLEICH(F74;FW$4:FW$13;0));MIN(WENN(F74:AC74="";SPALTE(F74:AC74)-6));WENN((SUMME(ISTZAHL(VERGLEICH(F73:AC73;FW$4:FW$13;0))*1)<>(ISTZAHL(VERGLEICH(AC65;FW$4:FW$13;0))*ISTZAHL(VERGLEICH(F73;FW$4:FW$13;0))*WENN(FI65="";0;FI65)));MAX(WENN(ISTZAHL(VERGLEICH(F73:AC73;FW$4:FW$13;0));SPALTE(F73:AC73)-5));""));"")

FL73:
=WENN(FJ73="";"";FJ73-INDEX(FK$5:FK65;VERGLEICH(9^9;FK$5:FK65;1)))

FM73:
=WENN(SUMME(ISTZAHL(VERGLEICH(F65:AC$271;FW$4:FW$13;0))*1)=0;"";WENN(REST(ZEILE()-4;7)=1;A73+WENN(FH73="";0;FH73)/24;FM65))

FN73:
=WENN(FM74="";"";WENN((FM73<>FM74)*(FH73="");FM74-INDEX(FK$5:FK65;VERGLEICH(9^9;FK$5:FK65;1));WENN(FM73=FM65;WENN(FJ73="";"";FJ73-MAX(FM$5:FM65;INDEX(FK$5:FK65;VERGLEICH(9^9;FK$5:FK65;1))));0)))

FP73:
=GANZZAHL(SUMME(FO$7:FO73)/8)-SUMME(FP$5:FP65)

J'ai modifié la formule en FH73 (voir fichier joint):

WENNFEHLER(KKLEINSTE(WENN(ISTZAHL(VERGLEICH(F73:AC73;FW$4:FW$13;0));

SPALTE(F73:AC73)-6);1+ISTZAHL(VERGLEICH(FH69;FW$4:FW$13;0))*ISTZAHL(VERGLEICH(F73;FW$4:FW$13;0))*WENN(FI69<>"";FI69;0));"")

J'ai remplacé les références vers janvier par les valeurs recueillies dans la base de données (je les ai introduites manuellement dans la ligne 69, mais normalement elles le sont par formule allant les chercher dans la BD.

Ainsi j'ai remplacé AC65 par FH69, contenant la valeur de AC65, recueillie en FH67 copiée dans la BD et récupérée dans la BD par la formule en FH69; idem pour FI65 qui a été recueillie dans FI67, copiée dans la BD et récupérée en FI69.

De cette façon on dispose au mois de février, pour la formule en question, des références vers janvier requises.

A remarquer encore qu'en réalité la référence à une valeur bien spécifique inscrite dans une cellule ne doit pas nécessairement être recueillie dans la ligne 65 mais peut être prise directement par la macro dans les cellules d'origine (AC65 et FI65) pour être fixées dans la BD. Je l'ai fait pour illustrer ce que je veux dire.
Le problème c'est les autres références, mais là les choses se compliquent, lorsque le renvoi ne va pas à une seule cellule mais à un ensemble de cellules situées au mois précédent (FL73 : …..FK$5 :FK65….), ou s’étirant même sur toute l’année (FM73 : …F5 :AC$271…) ; cette dernière formule ne peut évidemment de toute façon pas fonctionner dans l’environnement mensuel .

Cependant, la formule suivante est toujours le plus grand mystère pour moi:

FK73=WENNFEHLER(WENN((AC73="X")*(F74="X");A74;A73)+FI73/24;"")

La formule cherche après les X mais elle compte aussi les M, les A, etc. Comment est-ce possible?

A+
Aloha
 

Pièces jointes

  • Formule modifiée avec réf. janvier.xls
    436.5 KB · Affichages: 21

CISCO

XLDnaute Barbatruc
Bonsoir

Re,

Cependant, la formule suivante est toujours le plus grand mystère pour moi:

FK73=WENNFEHLER(WENN((AC73="X")*(F74="X");A74;A73)+FI73/24;"")

La formule cherche après les X mais elle compte aussi les M, les A, etc. Comment est-ce possible?

A+
Aloha


J'ai fait 4 années d'allemand mais j'étais et je suis toujours nul dans ce domaine.... Grrr.

J'essaye de t'expliquer ça ce soir, mais je ne te promets rien... Je suis trop occupé pour le moment....

@ plus
 

CISCO

XLDnaute Barbatruc
Bonsoir

Re,
Cependant, la formule suivante est toujours le plus grand mystère pour moi:
FK73=SIERREUR(SI((AC73="X")*(F74="X");A74;A73)+FI73/24;"")
Aloha


Cette formule signifie qu'on doit écrire dans FK73 :

Si la personne travaille de 23 à 24 le 01/02/2017 et de 0 à 1 h le 02/02/2017, prendre la date dans A74, donc 02/02/2017, sinon prendre la valeur dans A73, donc le 01/02/2017.
A cette valeur ajouter la valeur dans FI73/24. Excel utilise comme unité de temps le jours, donc 1 h --> 1/24. Pour traduire FI73 qui est un nombre entier en heure, il faut utiliser FI73/24.

Autrement dit, cela revient à faire la somme date + heure de la fin du travail, en utilisant comme date le lendemain si la personne travaille après minuit, le jour même si elle finit à minuit au plus tard.


Pour être plus rigoureux, il faudrait peut être faire avec =SIERREUR(SI(ESTNUM(EQUIV(AC73=FW$4:FW$13;0))*ESTNUM(EQUIV(F74=FW$4:FW$13;0));A74;A73)+FI73/24;"") qui ne prend pas uniquement en compte les X de 23 à 24 h et de 0 à 1 h, mais toutes les lettres contenues dans la plage FW4:FW13.

En gardant la première possibilité avec uniquement les X, j'ai supposé que la personne en formation ne le serait jamais jusqu'à minuit, que celle malade ne recommencerait pas à 0 h...

@ plus

P.S : Dans un test, SI((condition 1)*(condition 2); donne la même chose que SI(ET(condition 1; condition 2); Le * remplace un ET car VRAI * VRAI = 1 * 1 = 1, tous les autres produits contenant un FAUX donnant 0.
 

Aloha

XLDnaute Accro
Bonjour,

Bien compliqué tout ça! Tu es un vrais virtuose en Excel! Excel est ton violon et tu produis de la belle musique s'exprimant dans tes formules. Dans le temps je pensais être pas mal en Excel, mais je n'étais jamais capable de produire des formules comme les tiennes dont j'ai même beaucoup de mal à comprendre le fonctionnement.

Je viens de remarquer qu'il n'y a pas seulement des références vers le mois précédent mais aussi vers le mois suivant, ce qui complique les choses davantage encore parce que fin janvier les codes pour février ne sont pas encore saisis. Ainsi, dans la formule du dernier jour du mois en FI65 il y a une référence vers le premier jour du mois prochain.

Crois-tu qu'une solution mensuelle est possible malgré tous ces problèmes "intermensuels"? Sinon il me reste deux alternatives: abandonner et compter manuellement ou alors copier tous les codes saisis mois par mois dans une feuille par salarié (donc plus de 100 feuilles), ce qui donnerait donc le même fichier que mon fichier annuel initial, exécuter tous les calculs dans cette feuille (ce que tes formules font déjà), et copier les résultats importants (cycles de 7 jours complets, cycles commencés, jours de congé supplémentaire) par formules dans le fichier mensuel; la conséquence en serait que les données seront toujours en retard d'un mois, ce qui somme toute ne serait pas si grave.

Cependant, une solution mensuelle serait évidemment préférable.

Bonne journée

Aloha
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonsoir
Effectivement, c'est bien compliqué...

Pour chaque date, il faut :
1) aller chercher des infos sur la ligne précédente, de 23 à 24 h, et sur la ligne en cours, de 0 à 1 h, pour savoir si la personne a travaillé plus tard que minuit le jour précédent.
2) aller chercher des infos sur la ligne en cours (normal)
3) aller chercher des infos sur la ligne en cours de 23 à 24 h et sur la ligne suivante de 0 à 1 h pour savoir si la personne à travaillé plus tard que minuit le jour en cours.

Rien qu'avec cela on a :
* un problème pour faire les calculs pour le premier jour du mois car, pour les faire, il faut connaitre l'emploi du temps de la personne concernée le dernier jour du mois précédent. On peut essayer de résoudre ce problème en utilisant des informations transmises dans les cellules vertes.
* un problème pour faire les calculs pour le dernier jour du mois, car, pour les faire, il nous faut connaitre l'emploi du temps de la personne concernée le premier jour du mois suivant.

Mais en réalité, pour chaque date, c'est plus compliqué que cela, car, il faut, en plus :
4) Connaitre la dernière date+heure de fin de travail, ce qui nécessite l'utilisation d'une plage commençant sur la ligne de la première date du fichier, avec un INDEX(...;EQUIV(....;1)) ou avec un MAX. Cette information n'est pas forcément sur la ligne précédent la ligne en cours.
5) Connaitre le nombre de périodes de 7 jours ne comprenant pas de repos >= 44 h avant la date précédente pour continuer ce calcul....
6)...

Il ne faut pas trop s’inquiéter au sujet des parties utilisant des plages allant jusqu'à la dernière ligne du tableau. Si je me souviens bien, elles ne sont là que pour ne pas obtenir les #VALEUR à la fin du tableau. Je ne pouvais pas mettre un test uniquement sur la présence d'une ligne vide sur la ligne suivante, car il existe des lignes vides dans le tableau. Donc, j'ai mis un test sur tout le bas du tableau : lorsqu'il est vide, c'est qu'il ne faut plus faire de calcul, donc afficher "" au lieu de #VALEUR. Si on travaille avec une grande feuille comprenant avec tous les mois présentés comme tu l'as fait, il faut faire autrement en fin de mois.

Hier, j'ai commencé à modifier les formules pour qu'elles soient facilement copiables-collables d'un mois vers le suivant, sans avoir, si possible de modification à faire, ou le mois possible, à chaque fois, et à remplir correctement la dernière ligne verte du mois. Mais j'ai un problème avec les divers cas possibles lors du dernier jour du mois, problème que je n'arrive pas à résoudre pour le moment.

C'est certainement faisable de faire tout cela avec des lignes vertes, mais je trouve que cela complique beaucoup les choses de procéder ainsi, en séparant les données de chaque mois avec des lignes vides et des lignes vertes, du moins avec ce que je comprend de ton besoin et de tes possibilités matérielles.

Personnellement, ne connaissant pas exactement le dossier, je ne comprend pas tout :
1) Je n'ai toujours pas compris pourquoi il te faut deux lignes vertes, une en fin de mois, et une autre en début du mois suivant. Pour moi, ces deux lignes ne devraient faire qu'une : les infos qu'on regroupent à la fin du premier mois sont celles dont on a besoin pour débuter les calculs du mois suivant. Donc, on a les mêmes informations dans ces deux lignes vertes. Autant n'en mettre qu'une.
2) J'irai même plus loin : Cela serait beaucoup plus simple sans interruption entre chaque mois. Je m'explique :
Début février, la macro importe les données du mois de janvier sur la plage A5:AC35. Les formules font les calculs dans la plage FH5:FP35. Tu connais le nombre de jour qu'il fallait attribuer ce mois de janvier à la personne concernée, donc, tu le signale au service concerné, qui lui attribue.
Début mars, la macro importe les données du mois de février et les colle à partir de la cellule A36. Les formules font les calculs à partir de la cellule FH36, tant qu'il y a des données dans les lignes en dessous. Tu connais le nombre de jours de congé qu'il fallait attribuer ce mois de février à la personne concernée, en tenant compte du reliquat du mois de janvier, s'il y en a un...
Défauts du système :
* Tu ne sais que début février les jours de congé qu'il fallait attribuer en janvier, début mars ceux de février, début avril, ceux de mars, et ainsi de suite. Pour ne pas avoir ce problème, il faudrait faire un bilan plus souvent, par exemple une fois par semaine.
* Il faut garder une feuille par personne, ou un fichier par personne, puisque début mars tu vas compléter ce qui a déjà été fait début février (et qu'il ne faut pas effacer, perdre).
Si tu as 100 employés, au bout d'une année, tu auras un fichier avec 100 feuilles d'environ 365 lignes, ou 100 fichiers d'une feuille d'environ 365 lignes. Pas si énorme que cela.
Si tu tiens à avoir un résumé à la fin de chaque mois, c'est tout à fait faisable, mais pas en le glissant entre chaque mois, mais plutôt en le mettant soit dans des colonnes à droite de la colonne FP, soit sur une autre feuille.

@ plus
 

Aloha

XLDnaute Accro
Bonsoir,
Je dois avouer que je me sens mal à l'aise de te faire te casser la tête à tel point et je me demande s'il ne serait pas plus simple de copier tous les mois dans un fichier par personne.
Pour répondre à tes questions:
ad 1:
Les mois se trouvent dans des fichiers séparés!
Au début de chaque mois nous produisons un fichier par service contenant une feuille par salarié. Prenons p.ex. le fichier de février qui s'appellera Février 2017 Service A.
Au fil des jours de février les salariés mettent leurs X et autres codes et à la fin du mois le fichier est renvoyé à l'administration qui en extraie les données importantes qui sont rassemblées dans la base de données.
Ensuite est produit le fichier pour mars.
Donc: les tableaux pour février et mars se trouvent dans des fichiers différents. C'est pour cela j'ai séparé dans mon exemple les deux mois. Et par les cellules vertes je voulais montrer qu'il faut garder de février les données (références) nécessaires pour pouvoir commencer correctement les calculs en mars, mais vu le type de formules c'est difficilement possible parce qu'il ne s'agit pas de simples valeurs qui pourraient être collectées dans les cellules vertes pour être copiées avec les autres données importantes dans la BD et recueillies depuis la BD dans le fichier de mars.

Il n'y a aucun lien entre les jours de février et ceux de mars; ils sont dans des fichiers différents.

ad 2:
Il est impossible de garder les mois ensemble; les fichiers séparés sont une donne incontournable: ce système fonctionne depuis plus de 10 ans.
Mais tu as raison qu'il faut que lkes mois se suivent pour arriver à calculer correctement.
La seule solution c'est de copier chaque mois (par VBA) l'aire entière où les gens font leurs saisies dans un fichier par personne. La conséquence en est que les informations parviendront avec un mois de retard aux salariés, ce qui est ok.
Je ne mettrais pas tous les salariés dans le même fichier, mais je m'orienterais d'après le système des fichiers mensuels: un fichier annuel par service dans lequel chaque salarié du service a sa feuille dans laquelle VBA copie les X et autres codes (et les dates) mois par mois.

Malheureusement, je ne me connais pas tellement en VBA; j'arrive à enregistrer des macros et aussi à les modifier, mais je ne suis pas capable de modifier le code de telle sorte qu'il prenne service par service et salarié par salarié; je devrais multiplier le code pour avoir le même code pour chaque service, ce qui va encore, mais le problème est que le nombre de salariés varie d'un service à l'autre et qu'il peut varier.

Cet après-midi j'ai étudié la solution VBA: elle est praticable; il n'y a que le code qui manque! ;)
Les formules sont prêtes!

Une pareille solution (que j'ai déjà pratiquée) n'est pas réellement élégante non plus: le même code doit savoir manier les deux variables: les services et les salariés du service.
A+
Aloha
 

CISCO

XLDnaute Barbatruc
Bonsoir

Donc, en fait, tu n'as pas de fichier annuel ayant la forme de tes derniers fichiers, avec les mois les uns en dessous des autres. OK, dans ce cas là, il faut :

* soit passer par deux lignes vertes :
- une au début du mois, avec les données du mois précédent nécessaires pour les calculs du mois en cours, remplie par la macro,
- une en fin, avec les données en fin de mois, nécessaires pour le mois suivant, à transmettre à l'aide de la macro. Mais dans ce cas, il faut trouver les formules remplissant la dernière ligne verte, sans rien oublier... et transformer les autres formules pour que cela tourne correctement en utilisant la première ligne verte comme départ.
Comme j'ai déjà dit, j'ai commencé dans cette voie. J'ai un problème pour que cela fonctionne correctement dans tous les cas pour la dernière ligne, mais je vais y jeter un œil. Surtout que maintenant, en réalité, en dessous de la dernière ligne, de la dernière date du mois, il y a rien, ou une ligne verte en dessous.

* soit faire une macro qui regroupe, met bout à bout les données de chaque mois, sans laisser de ligne vide entre chaque mois, dans un nouveau fichier excel. Actuellement, sous quelle forme recueilles tu les données de chaque mois ? Est-ce dans un fichier excel ? Si oui, est-ce que tu pourrais en mettre un en pièce jointe après avoir remplacé les noms importants, de personne, d'entreprise... par des noms bidons ?

@ plus
 

Aloha

XLDnaute Accro
Re,
la base de données dans laquelle les données mensuelles sont collectées a une architecture toute simple:
A: Mois, B: Nom, C: Service; D: Heures travaillées, E: Heures de maladie, F: Heures de congé 2017, G: Heures de congé 2016 etc. etc. La BD va jusqu'à la colonne BN. Et si une solution par seuls fichiers mensuels pouvait fonctionner les données des cellules vertes en-dessous du mois seraient ajoutées dans les colonnes suivantes et y seraient reprises pour la confection du fichier mensuel suivant.

Les bases de données individuelles recueillant tous les symboles saisis seront exactement comme celle de mon exemple contenant tous les mois et que tu as dotée des formules.
A+
Aloha
 

Aloha

XLDnaute Accro
Bonjour,

Après mure réflexion et vu les difficultés que tu as relatées pour faire fonctionner un système purement mensuel, je laisse tomber cette solution et je passe par le biais d‘une solution qui rassemble toutes les saisies mensuelles dans une fiche annuel par salarié.

Pour cela il me faut du code VBA. Je vais déjà commencer par l‘enregistrement d‘une macro enregistrant l‘opération pour un salarié.
Seulement, j‘ai besoin d‘aide pour rendre le code „flexible“, c.-à-d. applicable à tous les services et tous les salariés, et créer une fiche pour les nouveaux salariés dans le fichier mensuel.

En attendant, j’ai effacé les colonnes inutiles.
Lorsque j‘efface celle à droite de l‘aire de saisie, les formules s‘adaptent comme il faut. Par contre, lorsque j‘efface celles entre la date et l‘aire de saisie, les heures de début et de fin sont fausses et je n‘arrive pas à en détecter la cause.

Voir le fichier ci-attaché.

Pour le reste, j'ai réussi à faire fonctionner tes formules dans le fichier annuel.

Bonne journée
Aloha
 

Pièces jointes

  • Résultats divergents.xls
    696 KB · Affichages: 29
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

Comme j'ai compris les choses, je pense qu'on peut faire avec une feuille modèle avec deux lignes vertes, une au début du mois, avec les valeurs indispensables provenant du mois précédent, et transmises par la macro d'importation, et une à la fin, avec les données indispensables pour les calculs du mois suivant, à exporter pour être réutilisées un mois plus tard.

Je te fais ça incessamment sous peu.

@ plus
 

CISCO

XLDnaute Barbatruc
Bonjour

Cf. en pièce jointe une possibilité à vérifier, bien sûr.

J'ai modifié pas mal de formules, pour essayer de faire plus simple (on peut parfois faire avec un MAX(plage) plutôt qu'avec un INDEX(plage;EQUIV(9^9;plage;1)) puis que les dates sont forcément classées dans l'ordre croissant dans les plages considérées).

Le principe : Tu changes le numéro du mois dans A1.

La macro vient coller les données dans AC6:FO6 et dans F7:AC37. Dans la colonne FP, tu vois si la personne en question a le droit ou pas à un jour en plus.

Les valeurs dans la plage AC39:FO39 doivent être mémorisées quelque part.

Le mois suivant, tu réimportes les données de la ligne 39 en ligne 6 et tu colles les nouvelles valeurs dans la plage F7:AC37.

Dans la pratique, cela pose problème, il me semble, si la personne travaille "à cheval" sur deux mois, du 31/01 au 1er/02 par ex. Le mieux serait de ne faire ce genre de calculs que le 3 ou le 4, en les recommençant à chaque fois à partir du 1er du mois précédent. Si tu optes pour cette solution, il faudra rajouter quelques lignes à ce fichier.

Les lignes en dessous de la ligne 39 ne sont là que pour vérifier si l'enchainement entre les deux mois pris en exemple se fait bien. A toi de tester davantage cela, surtout en regardant les cas avec arrêt à cheval sur les deux mois, et en faisant varier la position de la première période avec la cellule FM6

@ plus
 

Pièces jointes

  • Formule modifiée avec réf. mois.xls
    201 KB · Affichages: 42

Aloha

XLDnaute Accro
Bonsoir,
Merci beaucoup pour tout ce travail!
Je n‘ose presque pas faire la remarque qu‘on est sur deux systèmes différents à présent: tu as retravaillé la solution mensuelle et moi je m‘étais „résigné“ (entre guillemets parce qu‘en réalité j‘avais commencé à sympathiser avec solution, plus simple.
Cependant, si tu as réussi à trouver une solution mensuelle, pourquoi pas. Il ne faut pas un code VBA supplémentaire, je n‘ai qu‘à ajouter quelques lignes pour sauvegarder les données dans la BD.
Ce que je ne comprends pas dans tes xplications: que veux-tu dire par „tu colles les nouvelles valeurs dans la plage F7:AC37“, puisque dans cette plage les salariés saisissent, une par une, les heures en rapport avec leur travail?

Es-tu sûr du renvoi de la formule en FI72, qui renvoie à une date qui n'existe pas?

Les valeurs copiées du mois précédent dans la base de données sont d‘ailleurs importées le mois prochain non pas par macro mais par des formules figées par après dans leurs valeurs pour les garder.

As-tu eu le temps de regarder mon fichier joint -la solution annuelle justement- qui ne fonctionne plus correctement lorsque j‘efface les colonnes superflues à gauche de la plage de saisie?

A plus tard
Aloha
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

Bonsoir,
Merci beaucoup pour tout ce travail!
.... que veux-tu dire par „tu colles les nouvelles valeurs dans la plage F7:AC37“, puisque dans cette plage les salariés saisissent, une par une, les heures en rapport avec leur travail?

Je ne savais pas que c'était les salariés qui remplissait les colonnes F à AC. Je pensais que tu obtenais cela par paquet, par l'intermédiaire d'une BD, que ces valeurs étaient relevées soit par un responsable de service, soit à l'aide d'une badgeuse... D'ailleurs, pourquoi est-ce que vous ne faites pas directement en inscrivant les valeurs début et fin des colonnes FJ et FK, avec une colonne indiquant l'activité du jour correspondant, X, M, F...? Cela serait plus simple.

Es-tu sûr du renvoi de la formule en FI72, qui renvoie à une date qui n'existe pas?

La seconde partie, à partir de la ligne 40, n'est là que pour voir si l'enchainement entre les deux mois, janvier et février dans l'exemple en pièce jointe, se fait correctement. Et pour voir si cet enchainement se fait bien, on n'a pas besoin du bas de ce second tableau, il suffit juste de regarder les premières lignes, la première période de 7 j.
Dans la pratique, il faudrait complètement supprimer ce second tableau, mis là provisoirement.
Aloha[/QUOTE]
 

Aloha

XLDnaute Accro
Bonjour,

"pourquoi est-ce que vous ne faites pas directement en inscrivant les valeurs début et fin des colonnes FJ et FK, avec une colonne indiquant l'activité du jour correspondant, X, M, F...?"

Je ne peux pas changer le système actuel; ce serait le changer fondamentalement, une petite révolution.
A ta dernière solution il manque la double ligne, qui est une donne inévitable aussi.
Je ne comprends pas comment un cycle peut être complété le 1.1.

Idem pour le 31.1., puisqu'il y en a déjà un quelques jours plus tôt.
Le 15.1. il ne peut pas y avoir 1, puisque la période de 7 jours commence par 1 jour libre, 4 jours travaillés suivis de 2 jours libres: donc >44h de libre.

A+
Aloha
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
396
Réponses
9
Affichages
247

Membres actuellement en ligne

Statistiques des forums

Discussions
314 761
Messages
2 112 585
Membres
111 609
dernier inscrit
Bilal-06