XL 2019 Code VBA pour automatiser la programmation des rotations des ouvriers qui travaillent à temps partiel et se relaient par période de temps constante.

olivier1984

XLDnaute Junior
Bonjour le forum des experts !

Je reviens vers vous avec ce même problème que j'avais déjà posé ici il y'a des mois mais dont je n'ai pas véritablement trouvé de solution.

La fois précédente il y'a eu un soucis en ce que ceux qui s'étaient essayé n'avaient pas bien compris mon problème d'où je reviens en essayant cette fois être très explicite. Je dis quand-même merci à tous ceux là qui m'avaient proposé quelque chose.


Voici les explications nécessaires pour travailler sur le fichier :

La société dispose de plus d'une centaine d'ouvriers.

À propos des stations :

Il y'a 3 stations de travail (station 1, station 2 et station 3) et toutes ces stations ont exactement les mêmes activités d'où les mêmes départements se retrouvent dans toutes ces stations.
Il n'y a donc pas un problème de sur effectif ou de sous effectif car les stations bien qu'ayant les mêmes activités n'ont pas la même taille.

Cependant, la station "home" n'est pas véritablement une station de travail mais c'est l'appellation qu'on a donnée à ceux qui ne sont pas de service, j'expliquerai plus bas.

Le principe de rotation :

Une partie des ouvriers va sur les stations et y restent pendant une période de 60 jours tandis que tous les autres restent à la maison (chacun chez soi) pendant cette même période, c'est à eux qu'on attribue alors ladite station "home" qui signifie qu'ils sont de repos.

À la fin des 60 jours, les ouvriers qui étaient de repos ("home") sont envoyés à leur tour sur les différentes stations tandis que ceux qui y étaient sont envoyés à leur tour au repos ("home")

Les périodes de travail :

Au départ c'était 30 jours de travail pour chaque vague et une vague ne travaillaient pas pendant deux mois consécutifs. C'était 30 jours sur une station, puis les 30 jours qui suivent à la maison et ainsi de suite...

Puis la direction a fait passer la période de travail de 30 jours à 60 jours et c'est ça qui est en vigueur jusqu'à ce jour.

Retenons donc qu'une période de travail sur une station c'est 60 jours et de même, la période de repos est également de 60 jours.

Exemple pratique :
La société dispose par exemple de 110 ouvriers.
Période de travail : 60 jours soit du 01 mars 2024 au 30 avril 2024.

Affectation des ouvriers : 15 ouvriers pour la station 1, 22 ouvriers pour la station 2 et 15 ouvriers pour la station 3 ce qui nous fait un total de 52 ouvriers sur les différentes stations.

S'il y'a 55 ouvriers sur les stations ça signifie qu'il y'a 110-52 = 58 ouvriers au repos.

NB. Le nombre pair ou impair des ouvriers ne pose aucun problème du tout.

À la fin de ces 60 jours, on recommence la procédure.

La Nouvelle période de travail est toujours de 60 jours et s'étend alors du 01 Mai 2024 au 30 Juin 2024.

Ici, les 55 ouvriers qui sont actuellement sur les stations vont aussi rentrer chez eux ("Home") et les 58 qui étaient à la maison ("home") vont venir les remplacer sur les stations.

NB1. Un ouvrier peut être affecté dans n'importe quelle station mais toujours dans le même département (car on ne change pas de poste du jour au lendemain).

NB. Cette manœuvre est faite continuellement chaque 60 jours et ce, de manière indéfinie...

J'espère que les explications sont assez explicites cette fois ci.

Mon problème : je cherche comment mettre sur pieds un système qui me permettra de faire ces affectations de façon automatique avec possibilité de sauvegarder les anciennes affectations (soit dans de nouvelles feuilles soit dans un fichier pdf) qui pourraient servir à régler des soucis, problèmes ou faire des contrôles.

Sans oublier que c'est une opération qui se répétera tous les 60 jours. Et aussi que la période de rotation de 60 jours pourrait aussi varier dans le temps puisqu'au départ c'était 30 jours et c'est monté à 60 jours mais pour l'instant on retient 60 jours.

Pour donc éviter toute embrouille, j'ai supprimé tout ce qui avait déjà été fait et j'ai laissé uniquement les données utiles.

Sentez-vous libre de modifier la structure du fichier si cela est nécessaire, ma conception est peut-être limitée pour obtenir ce résultat que je cherche;
l'important pour moi est que ça puisse fonctionner.

Pièce jointe : "Ouvrier 2"
 

Pièces jointes

  • OUVRIER 2.xlsm
    91.5 KB · Affichages: 1
Dernière édition:

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour à toutes & à tous, bonjour @olivier1984
Seulement, sur la feuille archivage, j'ai remarqué que les données ne sont pas stockées de façon cumulative, au contraire les données les plus récentes viennent écraser les anciennes données qui sont alors perdues définitivement
Heu, si fais un filtre et tu verras qu'il y a plusieurs dates de début ...
Je vais trier dans le sens chronologique inverse pour avoir les dates les plus récentes en tête, ajouter le fitre sur la dernière période, adapter l'entête pour avoir les dates de la période sélectionnée (si tu dois imprimer l'archive), revoir la mise en page.
Pour le bouton, tu attiges un peu, une fois la mise en page faite, demander l'impression n'est quand même pas très compliqué !
Enfin je vais te le rajouter.
À bientôt
 

olivier1984

XLDnaute Junior
Bonjour à toutes & à tous, bonjour @olivier1984

Heu, si fais un filtre et tu verras qu'il y a plusieurs dates de début ...
Je vais trier dans le sens chronologique inverse pour avoir les dates les plus récentes en tête, ajouter le fitre sur la dernière période, adapter l'entête pour avoir les dates de la période sélectionnée (si tu dois imprimer l'archive), revoir la mise en page.
Pour le bouton, tu attiges un peu, une fois la mise en page faite, demander l'impression n'est quand même pas très compliqué !
Enfin je vais te le rajouter.
À bientôt
Ah bon je n'ai pas prêté attention je vais alors regarder pour voir ce que je n'ai pas pu voir précédemment.
Merci beaucoup pour les améliorations à venir.

J' ai cependant une grosse inquiétude, en effet, il se pourrait que d'ici quelques semaines la période de travail et où de repos ne sera plus fixé pour tous les ouvriers comme c'est le cas actuellement (c'est-à-dire 60 jours pour tous).
Certains ouvriers au sein d'une même station pourraient avoir 20 jours, d'autres 40, d'autres 60 etc... Selon les besoins de la société et les profils de chacun et vise versa pour les périodes de repos.

Je dirais même que la probabilité que cette nouvelle règle devienne une effectivité est très élevée (plus de 90%).
C'est l'information que j'ai reçu ce matin de mon collègue qui s'occupe des affectations lorsque j'étais allé le voir pour lui demander plus d'informations sur les règles d'affection des ouvriers dont on parlait hier soir.

Est ce que ce fichier qui marche déjà à merveille grâce évidemment à ton expertise pourrait encore fonctionner dans ce cas ?

Sinon pouvons nous anticiper cela en mettant une nouvelle configuration qui tient compte de ces nouveautés ?

Merci
Cordialement
 

AtTheOne

XLDnaute Accro
Supporter XLD
Re,
Voici en pièce jointe le fichier modifié.
Certains ouvriers au sein d'une même station pourraient avoir 20 jours, d'autres 40, d'autres 60 etc... Selon les besoins de la société et les profils de chacun et vise versa pour les périodes de repos.
Dans ce cas c'est dans la table des employés qu'il faudra mettre cette information avec SN, Matricule, Nom, département.
Et il faudra adapter le code pour faire les rotations sur les dates de retours et non plus sur les durées, la formule des durées se faisant avec un RECHERCHEV comme les Noms et les Départements.
Moi de mon coté j'attends d'en savoir plus pour bouger !!
À bientôt
 

Pièces jointes

  • Rotation Stations AtTheOne 2.xlsm
    40.7 KB · Affichages: 3

olivier1984

XLDnaute Junior
Re,
Voici en pièce jointe le fichier modifié.

Dans ce cas c'est dans la table des employés qu'il faudra mettre cette information avec SN, Matricule, Nom, département.
Et il faudra adapter le code pour faire les rotations sur les dates de retours et non plus sur les durées, la formule des durées se faisant avec un RECHERCHEV comme les Noms et les Départements.
Moi de mon coté j'attends d'en savoir plus pour bouger !!
À bientôt
Merci pour les nouvelles modifications apportées.

Par rapport à la dernière modification de la société sur la durée de la période sur les stations ou de repos, c'est finalement confirmé mais ça prendra effet progressivement dès la prochaine vague de rotation prévue pour pour début décembre. Ceci est dû au fait qu'il y'a eu de nouvelles recrues avec des profils de :
* Agents d'appui
* Pré-emploi
* Stagiaires
* des périodes d'essai

Donc ce n'est plus une probabilité mais une confirmation que je viens de recevoir de la part de mon collègue responsable de ce département.

J'aimerais donc humblement te demander d'apporter toutes les modifications dont tu as parlées afin que le fichier puisse continuer à fonctionner puisque c'est de ça qu'il s'agit présentement.

Merci d'avance pour la diligence, l'expertise et le coup de main.

En attendant, je jette rapidement un coup d'œil sur le nouveau fichier et je te fais un retour rapide.

On se dit alors Incessamment...
 

olivier1984

XLDnaute Junior
Re,
Voici en pièce jointe le fichier modifié.

Dans ce cas c'est dans la table des employés qu'il faudra mettre cette information avec SN, Matricule, Nom, département.
Et il faudra adapter le code pour faire les rotations sur les dates de retours et non plus sur les durées, la formule des durées se faisant avec un RECHERCHEV comme les Noms et les Départements.
Moi de mon coté j'attends d'en savoir plus pour bouger !!
À bientôt
Je viens de tester le nouveau fichier mais ça ne fonctionne pas ça bug.

Pièce jointe : images du bug

Merci
 

Pièces jointes

  • BUG 2.png
    BUG 2.png
    102.8 KB · Affichages: 5
  • BUG 1.png
    BUG 1.png
    92.8 KB · Affichages: 4

AtTheOne

XLDnaute Accro
Supporter XLD
re
J'aimerais donc humblement te demander d'apporter toutes les modifications dont tu as parlées afin que le fichier puisse continuer à fonctionner puisque c'est de ça qu'il s'agit présentement.
Bon, il faut en savoir un peu plus sur les règles à respecter pour ces durées "variables".
Changeront-elles au fil du temps pour une même personne ?
Seront-elles liées au statut de cette personne ? (auquel cas on ajoute une table Statut avec les différents statuts et les durées associées, et dans la tables Employés on indique le statut et non plus la durée.)
Faudra-t-il dorénavant faire une rotation dès la 1ère fin de période du tableau ?

Je viens de tester le nouveau fichier mais ça ne fonctionne pas ça bug.
Oui comme tu n'as pas une version d'excel avec formules matricielles dynamiques (2021, 2024, 365) j'ai utilisé ma vieille version 2007 pour le développement, il y a quelques différences de fonctionnement avec 2019 d'où pas de bug chez moi mais bug chez toi.
Voilà une version qui devrait fonctionner (archives cumulatives et filtres) sur ta version (qui, entre nous, au vu de ta capture d'écran, ne me semble pas très orthodoxe. ;)
À bientôt
 

Pièces jointes

  • Rotation AtTheOne 3.xlsm
    38.3 KB · Affichages: 2

olivier1984

XLDnaute Junior
re

Bon, il faut en savoir un peu plus sur les règles à respecter pour ces durées "variables".
Changeront-elles au fil du temps pour une même personne ?
Seront-elles liées au statut de cette personne ? (auquel cas on ajoute une table Statut avec les différents statuts et les durées associées, et dans la tables Employés on indique le statut et non plus la durée.)
Faudra-t-il dorénavant faire une rotation dès la 1ère fin de période du tableau ?


Oui comme tu n'as pas une version d'excel avec formules matricielles dynamiques (2021, 2024, 365) j'ai utilisé ma vieille version 2007 pour le développement, il y a quelques différences de fonctionnement avec 2019 d'où pas de bug chez moi mais bug chez toi.
Voilà une version qui devrait fonctionner (archives cumulatives et filtres) sur ta version (qui, entre nous, au vu de ta capture d'écran, ne me semble pas très orthodoxe. ;)
À bientôt
Déjà pour ma version d'excel qui est 2019 j'ignorais qu'il y'a des fausses ou des imitations... Si oui comment faire pour le savoir ? Puis-je avoir une astuce ?
Sinon je croyais que la version 2019 prenait en compte les formules matricielles donc je me trompais ?

Pour revenir sur ton commentaire sur ma version qui ne serait pas très orthodoxe, j'ai en effet un souci depuis près d'un mois avec mon menu vbe qui a totalement disparu. Plusieurs solutions m'ont été proposées ici pour réparer le problème mais aucune n'a fonctionné jusqu'ici, même le fameux regit. Donc si tu as une solution à me proposer je suis à l'écoute... Peu être aussi c'est même justement l'affichage de mon vbe qui t'a fait douté de ma version qui sait ? ☺️☺️

Pour ce qui est des informations sur les règles sur les durées et toutes les informations dont tu as besoin, laisse moi te revenir le temps pour moi de rassembler les bonnes informations.

En attendant, je m'en vais tester cette dernière version que tu as envoyée.

À bientôt et merci encore pour tout. 👍
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour les matinaux (ou les noctambules !)
Bonjour @olivier1984

Bon j'ai quand même planché sur ton problème avec l'hypothèse suivante :
"la durée des périodes est liée à un statut"

J'ai donc créé une nouvelle table "TbStatuts" avec différents statut et les durées correspondantes.
J'ai ajouté une colonne "Statut" à la table des employés avec une validation des données pointant vers les Statut. Ces statuts seront à saisir manuellement

Comme il finira par y avoir plusieurs dates de départ, plusieurs durées et plusieurs dates de retour dans le tableau des affectations, j'ai remplacé dans le tableau les formules relatives à ces 3 données par des valeurs.
J'ai supprimé la Date de départ, la Durée et j'ai mis une formule qui recherche la plus petite date de retour en tête du tableau d'affectation.
La macro maintenant fait la rotation pour les lignes avec cette plus petite date de départ, les autres restant inchangées puisque les employés ne bougent pas à cette date.
Par exemple s'il n'y a que vingt personnes partantes (en Station ou at Home) la rotation se fait entre ces vingt personnes

Il faudra préciser les critères de tri pour le tableau d'affectations et le tableau d'archives, j'ai fait des choix qui ne sont pas forcément ceux que tu veux adopter.

Jette un œil et muris ta réflexion en fonction des informations que tu glaneras.

À bientôt
 

Pièces jointes

  • Rotation AtTheOne 4.xlsm
    40.4 KB · Affichages: 3

olivier1984

XLDnaute Junior
Bonjour les matinaux (ou les noctambules !)
Bonjour @olivier1984

Bon j'ai quand même planché sur ton problème avec l'hypothèse suivante :
"la durée des périodes est liée à un statut"

J'ai donc créé une nouvelle table "TbStatuts" avec différents statut et les durées correspondantes.
J'ai ajouté une colonne "Statut" à la table des employés avec une validation des données pointant vers les Statut. Ces statuts seront à saisir manuellement

Comme il finira par y avoir plusieurs dates de départ, plusieurs durées et plusieurs dates de retour dans le tableau des affectations, j'ai remplacé dans le tableau les formules relatives à ces 3 données par des valeurs.
J'ai supprimé la Date de départ, la Durée et j'ai mis une formule qui recherche la plus petite date de retour en tête du tableau d'affectation.
La macro maintenant fait la rotation pour les lignes avec cette plus petite date de départ, les autres restant inchangées puisque les employés ne bougent pas à cette date.
Par exemple s'il n'y a que vingt personnes partantes (en Station ou at Home) la rotation se fait entre ces vingt personnes

Il faudra préciser les critères de tri pour le tableau d'affectations et le tableau d'archives, j'ai fait des choix qui ne sont pas forcément ceux que tu veux adopter.

Jette un œil et muris ta réflexion en fonction des informations que tu glaneras.

À bientôt
Bonjour le forum
Bonjour AtTheOne

En réalité je venais te faire un retour sur ton précédent message et je tombe sur celui-ci auquel je ne m'y attendais pas.

Voici donc quelques observations sur le précédent fichier ainsi que les informations dont tu avais besoin pour continuer le travail :

Normalement la durée pour tous les ouvriers est de 35 jours.
Mais à cause d'un problème d'insuffisance de bus, certains se voient en train de faire 60 jours au lieu des 35 normalement prévus.

Sous réserve donc de certains ajustements ultérieurs (acquisition et gestion des bus), voici ce qui est actuellement arrêté.
Selon la durée sur les stations, Il y'a deux groupes :
* Un groupe qui fait 35 jours.
* Un groupe qui fait 60 jours.

NB. La durée sur une station ne dépend en rien du statut de l'ouvrier.

Par rapport au dernier fichier que tu m'as envoyé en pièce jointe, j'ai remarqué que ça fonctionne déjà en faisant le cumul, j'ai aussi testé les différents filtres qui fonctionnent aussi parfaitement.
Cependant, lorsque je clique sur le bouton période suivante, le code VBA fait un bug (exactement comme la dernière fois) mais ce qui me surprend c'est que malgré ce bug, quand je clic sur "fin", le code VBA s'exécute normalement sur la feuille "archives". je ne comprends donc pas comment un code VBA bug tout en exécutant la tâche qu'on lui a demandé.

C'est la petite remarque que je voulais faire à ce niveau.

Maintenant par rapport à ce nouveau fichier que tu viens d'envoyer, je pense que ton anticipation a été excellente puisque de toute façon les dates de départ et les durées ne seront plus les mêmes pour tous les ouvriers.

Je pense donc que tu as bien fait de créer des durées qui dépendront des statuts que j'aurais définis, et mieux encore, tu as mis une liste déroulante depuis laquelle je pourrais tout simplement choisir le statut et le code récupèrera automatiquement la durée équivalente à ce statut (si j'ai bien compris ta pensée bien-sûr).

J'ai donc essayé d'insérer des formules pour gérer automatiquement la durée et la date retour (je n'ai pas osé insérer une colonne ce qui est l'idéal pour ne pas perturber la macro, j'ai mis à la place une formule Si) . Sauf que quand je lance la macro, Au niveau de la feuille "archives", la macro enregistre uniquement les données des salariés dont la durée sur la station est la plus courte. Et elle ne tient pas compte des autres données or elle le devrait normalement, selon moi... Tu pourras donc regarder le fichier ci joint ainsi que les images du bug.

Bon pour le reste, comme tu l'as proposé, je préfère d'abord jeter un œil et ensuite mûrir la réflexion si jamais je trouve un besoin d'adaptation.

Très bon week-end à toi et certainement en début de semaine je te ferais un retour.

Merci
 

Pièces jointes

  • Rotation AtTheOne 5.xlsm
    50.9 KB · Affichages: 1
  • filter2.png
    filter2.png
    79.4 KB · Affichages: 4
  • FILTER.png
    FILTER.png
    88.5 KB · Affichages: 4
Dernière édition:

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @olivier1984
Sauf que quand je lance la macro, Au niveau de la feuille "archives", la macro enregistre uniquement les données des salariés dont la durée sur la station est la plus courte.
Non, la macro n'enregistre dans l'archive que les ouvriers concernés par la date de retour la plus proche =MIN(TbAffectations[Date de retour]), c'est à dire ceux qui vont effectuer une rotation au moment où l'on lance la macro.
Car ce sont les seuls dont l'affectation change, pour les autres, ni la date de départ, ni la date de retour ne change donc ces lignes ne sont pas archivées. Elle le seront lorsque leur date de retour sera la plus petite de toutes.
J'ai donc essayé d'insérer des formules pour gérer automatiquement la durée et la date retour (je n'ai pas osé insérer une colonne ce qui est l'idéal pour ne pas perturber la macro, j'ai mis à la place une formule Si)
Il n'y a plus lieu d'y avoir des formules pour la Durée ni pour la Date de retour, la macro les stocke sous forme de valeur, lue dans les tables ou calculée au moment du mouvement :
Ces données doivent être transformée en valeurs à moins que une fois parti, la date de retour puisse changer avant la date de retour planifiée au moment du départ. Mais à ce moment là il faudrait rééditer le tableau d'affectation et le rediffusé aux différentes stations concernées.
Moi je suis parti sur l'hypothèse que une fois l'ouvrier affecté et parti sa date de retour est figée. tout changement de durée, n'interviendra qu'à sa prochaine rotation.
D'où l'absence de formule pour les 2 dernières colonnes

Pour le bug sur le filtre, essaie cette dernière version (j'active le tableau [TbArchives avant d'appliquer le filtre)
Note que avec les version 2007 et 2014 il n'y a aucun problème !)

À Bientôt
 

Pièces jointes

  • Rotation AtTheOne 6.xlsm
    40.6 KB · Affichages: 2

olivier1984

XLDnaute Junior
Bonsoir à toutes & à tous, bonsoir @olivier1984

Non, la macro n'enregistre dans l'archive que les ouvriers concernés par la date de retour la plus proche =MIN(TbAffectations[Date de retour]), c'est à dire ceux qui vont effectuer une rotation au moment où l'on lance la macro.
Car ce sont les seuls dont l'affectation change, pour les autres, ni la date de départ, ni la date de retour ne change donc ces lignes ne sont pas archivées. Elle le seront lorsque leur date de retour sera la plus petite de toutes.

Il n'y a plus lieu d'y avoir des formules pour la Durée ni pour la Date de retour, la macro les stocke sous forme de valeur, lue dans les tables ou calculée au moment du mouvement :
Ces données doivent être transformée en valeurs à moins que une fois parti, la date de retour puisse changer avant la date de retour planifiée au moment du départ. Mais à ce moment là il faudrait rééditer le tableau d'affectation et le rediffusé aux différentes stations concernées.
Moi je suis parti sur l'hypothèse que une fois l'ouvrier affecté et parti sa date de retour est figée. tout changement de durée, n'interviendra qu'à sa prochaine rotation.
D'où l'absence de formule pour les 2 dernières colonnes

Pour le bug sur le filtre, essaie cette dernière version (j'active le tableau [TbArchives avant d'appliquer le filtre)
Note que avec les version 2007 et 2014 il n'y a aucun problème !)

À Bientôt
Bonjour le forum
Bonjour AtTheOne

J'étais hors ligne depuis le week-end d'où mon retour tardif.
Ok j'ai testé à nouveau le fichier et effectivement ça fonctionne bien c'est moi qui n'avais pas prêté attention sur les différentes dates.

Ceci dit j'ai un petit soucis, (le logiciel fonctionne parfaitement je suis d'accord), dans l'état actuel des choses, puisque c'est la macro qui met à jour sur la table des affectations les durées et les Date retour, ça a tendance à m'embrouiller un peu dans la mesure où les données inscrites sur le tableau ne sont actualisées qu'après avoir archivé les données.
Par conséquent, on a l'impression de ne pas avoir les données réelles devant soi.

Exemple : l'employé 1 a une durée de 30 jours sur les stations, la date départ est 01/05/2024 et donc la date retour est le 31/05/2024.
Lorsqu'on arrivera à la date du 31/05/2024, les données seront bien archivées dans la feuille archive. Cependant, sur la table des affectations, pour l'employé 1, on aura toujours les mêmes données qu'avant l'archivage c'est-à-dire :
Durée : 30 jours
Date départ : 01/05/2024
Date retour : 31/05/2024

Au lieu d'avoir les données suivantes (en supposant logiquement qu'il a aussi 30 jours de repos) :
Durée : 30 jours
Date départ : 01/07/2024
Date retour : 31/07/2024

NB. Par mesure de prudence, on pourra laisser la date de départ sans formule vu qu'avec les durées différentes, il y aura des moments où elle pourrait décaler (c'est ce que je me suis dit dans mon esprit en tout cas)

Je ne sais pas s'il y'a un moyen de mettre à jour la table de rotation avant de déclencher l'archivage des données Afin que les données soient plus réelles et créent moins de confusion dans mon esprit ?

Maintenant concernant le fichier que tu as mis en pièce jointe où tu as corrigé le bug du filtre, on dirait que tu as fait une confusion de version... En effet, tu m'as envoyé l'ancienne version qui ne prenait pas en compte la variation des durées selon les différents statuts que tu as créés. Tu as plutôt corrigé le bug sur la version précédente et non sur la dernière version qui permet de gérer plusieurs durées différentes (et c'est cette version là que je m'attendais à recevoir). ☺️☺️

Puis-je avoir la version avec les durées (60, 40, 35, 20 et 10) et les statuts (statut1,statut2, statut3, statut4 et statut5) avec le bug sur le filtre corrigé ? Et si possible en tenant compte de mes remarques ci dessus 🙏

Merci beaucoup pour tout le travail fait et je ne le redirais jamais assez.
 

AtTheOne

XLDnaute Accro
Supporter XLD
bonsoir à toutes & à tous, bonsoir @olivier1984
J'ai bugué dans l'enregistrement de ma dernière version (celle du post #25 "Rotation AtTheOne 6.xlsm"), c'est une ancienne version) mais pour celle du post #23 (avec ton bug sur les filtres "Rotation AtTheOne 4.xlsm") voici mes remarques :
Tu écris :
Exemple : l'employé 1 a une durée de 30 jours sur les stations, la date départ est 01/05/2024 et donc la date retour est le 31/05/2024.
Lorsqu'on arrivera à la date du 31/05/2024, les données seront bien archivées dans la feuille archive. Cependant, sur la table des affectations, pour l'employé 1, on aura toujours les mêmes données qu'avant l'archivage c'est-à-dire :
Durée : 30 jours
Date départ : 01/05/2024
Date retour : 31/05/2024

Au lieu d'avoir les données suivantes (en supposant logiquement qu'il a aussi 30 jours de repos) :
Durée : 30 jours
Date départ : 01/07/2024
Date retour : 31/07/2024
Mais non, lorsque tu arriveras au 31/05/2024, la date minimale de retour sera le 31/05/2024 et tous les enregistrements de ta table des affectations dont la date de retour est le 31/05/2024 seront mis à jour par la macro, leur nouvelle date de départ sera le 31/05/2024 et leur nouvelle date de retour dépendra de la durée associée à chaque personne.

Pour ton exemple,
  • Si l'affectation était une station de travail, il sera affecté à "Home" pour 30 jours avec une date d'arrivée 31/05/2024 et une date de retour 30/06/2024. (et non pas comme tu l'écris 01/07/2024 et 31/07/2024)
  • S'il y a un employé qui était affecté à "Home" avec aussi une date de retour le 31/05/2024 mais une durée associée de 20 jours il sera affectable à une station de travail (manuellement) avec une date de départ aussi égale au 31/05/2024 mais une date de retour égale au 20/06/2024.
  • Par contre pour tous les employés dont la date de retour est postérieure au 31/05/2024, rien ne sera modifier dans la table d'affectation tant que leur date de retour ne seras pas la date minimale de retour indiqué à en haut de la feuille ("Prochaine date de retour")

Donc je te joins la version du post #23 avec la correction sur le bug du filtre (J'active simplement la plage à filtrer avant d'effectuer le filtre).
Dans ce fichier j'ai affecté au hasard des durées pour le personnel, la date de départ est restée au 1/8/2024 donc les premiers concernés par une rotation sont ceux qui ont une durée de 10 jours et l'on a comme Prochaine date re retour le 11/08/24 (dans l'exemple 20 personnes).
Si tu fais une rotation seules ces 20 personnes verront leurs dates modifiées, date de départ 11/08/2024 et date de retour 10 jours plus tard soit le 21/08/24.

Là tu te retrouves avec une prochaine date de retour au 21/08/24 et tu as les 20 personnes ci-dessus plus 25 personnes dont la durée est de 20 jours.
Si tu fais une nouvelles rotation, seules ces 45 personnes sont concernées, leur date de départ sera le 21/08/24 et leur date de retour, pour les 20 personnes à 10 jours le 31/8/24 et pour les 25 personnes à 20 jours le 10/09/24.
Etc ...

Je ne vois pas d'autres façons de procéder.
Pour pouvoir te projeter plus facilement j'ai ajouté la liste des dates de retour à venir (mise à jour lors de chaque rotation. (et j'ai modifié le texte du bouton : Effectuer la rotation)


À bientôt

PS si ce post te conviens regarde ma signature et marque le comme solution.
 

Pièces jointes

  • Rotation AtTheOne 7.xlsm
    70.2 KB · Affichages: 1
Dernière édition:

olivier1984

XLDnaute Junior
bonsoir à toutes & à tous, bonsoir @olivier1984
J'ai bugué dans l'enregistrement de ma dernière version (celle du post #25 "Rotation AtTheOne 6.xlsm"), c'est une ancienne version) mais pour celle du post #23 (avec ton bug sur les filtres "Rotation AtTheOne 4.xlsm") voici mes remarques :
Tu écris :

Mais non, lorsque tu arriveras au 31/05/2024, la date minimale de retour sera le 31/05/2024 et tous les enregistrements de ta table des affectations dont la date de retour est le 31/05/2024 seront mis à jour par la macro, leur nouvelle date de départ sera le 31/05/2024 et leur nouvelle date de retour dépendra de la durée associée à chaque personne.

Pour ton exemple,
  • Si l'affectation était une station de travail, il sera affecté à "Home" pour 30 jours avec une date d'arrivée 31/05/2024 et une date de retour 30/06/2024. (et non pas comme tu l'écris 01/07/2024 et 31/07/2024)
  • S'il y a un employé qui était affecté à "Home" avec aussi une date de retour le 31/05/2024 mais une durée associée de 20 jours il sera affectable à une station de travail (manuellement) avec une date de départ aussi égale au 31/05/2024 mais une date de retour égale au 20/06/2024.
  • Par contre pour tous les employés dont la date de retour est postérieure au 31/05/2024, rien ne sera modifier dans la table d'affectation tant que leur date de retour ne seras pas la date minimale de retour indiqué à en haut de la feuille ("Prochaine date de retour")

Donc je te joins la version du post #23 avec la correction sur le bug du filtre (J'active simplement la plage à filtrer avant d'effectuer le filtre).
Dans ce fichier j'ai affecté au hasard des durées pour le personnel, la date de départ est restée au 1/8/2024 donc les premiers concernés par une rotation sont ceux qui ont une durée de 10 jours et l'on a comme Prochaine date re retour le 11/08/24 (dans l'exemple 20 personnes).
Si tu fais une rotation seules ces 20 personnes verront leurs dates modifiées, date de départ 11/08/2024 et date de retour 10 jours plus tard soit le 21/08/24.

Là tu te retrouves avec une prochaine date de retour au 21/08/24 et tu as les 20 personnes ci-dessus plus 25 personnes dont la durée est de 20 jours.
Si tu fais une nouvelles rotation, seules ces 45 personnes sont concernées, leur date de départ sera le 21/08/24 et leur date de retour, pour les 20 personnes à 10 jours le 31/8/24 et pour les 25 personnes à 20 jours le 10/09/24.
Etc ...

Je ne vois pas d'autres façons de procéder.
Pour pouvoir te projeter plus facilement j'ai ajouté la liste des dates de retour à venir (mise à jour lors de chaque rotation. (et j'ai modifié le texte du bouton : Effectuer la rotation)


À bientôt

PS si ce post te conviens regarde ma signature et marque le comme solution.
Bonjour le forum
Bonjour spécial AtTheOne

Je constate que c'est moi qui depuis le début n'avait pas bien compris le fonctionnement du fichier (vu que c'est pas moi qui l'ai conçu), ceci est certainement dû au fait que je n'avais pas toutes ces dernières explications qui sont plus que explicites et c'est grâce à ces nouvelles explications que je finis par comprendre qu'en réalité le fichier (hors mis le bug) était déjà fonctionnel.

Sous réserve de confirmation de toutes tes explications, je peux déjà dire (sans même avoir testé) que cette version (j'espère la version finale) est la solution à mon problème.

Je ne sais pas comment vous faites pour répondre à une partie spécifique d'un message...
En fait pour répondre à ton dernier par rapport au tout dernier paragraphe de ton message, je n'ai pas compris ce que tu appelles "ma signature"

Pour finir et pour te répondre par rapport à ce dernier paragraphe, je dis : OUI CE POST ME CONVIENT et je le marque comme SOLUTION.

À bientôt et incessamment...
Merci
 

Discussions similaires

Réponses
10
Affichages
1 K
Réponses
46
Affichages
2 K

Statistiques des forums

Discussions
314 898
Messages
2 114 011
Membres
112 073
dernier inscrit
dimakhadra