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: 3
Dernière édition:

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir,
@olivier1984 il me semble avoir déjà vu un fil sur le même sujet (les 3 stations PS07, PS08, PS09 et la "Home" ça me dit quelque chose) était-ce une de tes demandes ou celle d'un de tes collègues ?

Bon en tout cas je rame un peu pour te comprendre, tu parles de 3 stations de travail et dans tes enregistrements je n'en vois que 2 (PS07 et PS08 pas la PS09).

S'agit-il de faire un roulement sur 4 périodes de 60 jours ? (Ton premier tableau indique 109 jours !)

Il y a plus d'ouvriers affectés à une station de travail, que d'ouvriers au repos si on envoie tous les premiers au repos il y aura beaucoup de stations de travail inoccupées.
Ne serait-ce pas plutôt une partie de ces 1er les autres changeant éventuellement de poste ?

Bref j'ai besoin d'éclaircissement pour espérer te proposer quelque chose.

À bientôt
 

TooFatBoy

XLDnaute Barbatruc
Moi non plus... mais tu me rassures, je n'ai pas rêvé !
C'est exactement ce que je me suis dit en voyant ton message en #2. ;)

Du coup j'ai poussé plus loin mes recherches et j'ai trouvé :
 

olivier1984

XLDnaute Junior
Je n'osais le dire... ☹️
Si tu as une solution concernant sa question, n'hésite pas, moi j'ai abandonné l'idée d'avoir une réponse.


Bonne soirée, camarade. 🖖
Bonsoir,
@olivier1984 il me semble avoir déjà vu un fil sur le même sujet (les 3 stations PS07, PS08, PS09 et la "Home" ça me dit quelque chose) était-ce une de tes demandes ou celle d'un de tes collègues ?

Bon en tout cas je rame un peu pour te comprendre, tu parles de 3 stations de travail et dans tes enregistrements je n'en vois que 2 (PS07 et PS08 pas la PS09).

S'agit-il de faire un roulement sur 4 périodes de 60 jours ? (Ton premier tableau indique 109 jours !)

Il y a plus d'ouvriers affectés à une station de travail, que d'ouvriers au repos si on envoie tous les premiers au repos il y aura beaucoup de stations de travail inoccupées.
Ne serait-ce pas plutôt une partie de ces 1er les autres changeant éventuellement de poste ?

Bref j'ai besoin d'éclaircissement pour espérer te proposer quelque chose.

À bientôt
Bonjour

Oui c'était bien moi qui avais posté ça mais je n'avais pas vraiment obtenu de solution d'où j'ai reposté.

Si tu n'as vu que 2 stations c'est juste parce que c'est un fichier test, fictif...

Voici quelques éclaircissements où je vais essayer d'être le plus explicite possible :

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 n'ont 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 mais l'appellation qu'on a donnée à ceux qui ne sont pas de service, j'explique 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 la 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 au repos ("home")

Pour ta préoccupation sur la durée 109 c'était juste une manipulation en réalité c'est 60 jours et cette période est fixe. Au départ c'était 30 jours puis ils ont ramené à 60 jours donc retenons qu'une période de travail sur une station c'est 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 des 60 jours, on procède donc à la rotation et la prochaine période de travail sur 60 jours s'étend alors maintenant du 01 mai 2024 au 30 juin 2024.

Les 52 ouvriers qui étaient sur les différentes stations sont envoyés au repos ("home" ) tandis que les 58 ouvriers qui étaient au repos ("home") sont à leur tour affectés dans les stations à raison de 20 pour la station 1, 20 pour la station 2 et 18 pour la station 3.

À la fin de ces nouveaux 60 jours, on recommence la procédure. C'est-à-dire que les 58 ouvriers qui sont actuellement sur les stations vont aussi rentrer chez eux ("Home") et les 52 qui étaient à la maison ("home") vont une nouvelle fois revenir sur les stations.

NB1. Cependant, un ouvrier peut avoir été affecté à la station 1 la période précédente et être affecté à une autre station à la prochaine affectation.

NB2. La seule chose qui ne change pas ce sont les départements qui sont en réalité les postes de travail. C'est-à-dire que si un ouvrier est au département électricité (c'est un exemple), il ne peut être affecté que dans le département électricité si on l'envoyait dans une autre station et comme je l'ai dit, toutes ces stations ont exactement les mêmes départements, activités etc... La seule chose qui les diffère c'est leur emplacement car elles sont situées dans des villes différentes c'est tout.

J'espère que là c'est assez explicite 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 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 : fichier nommé "Ouvrier 2"
 

Pièces jointes

  • OUVRIER 2.xlsm
    91.5 KB · Affichages: 4

olivier1984

XLDnaute Junior
Pour moi c'est d'avoir un retour de ce que je propose, histoire de savoir si le temps que j'ai passé à chercher une solution a porté ses fruits ou si je me suis trompé quelque part.
Toutes mes excuses si j'avais oublié de vous faire un retour et si c'est le cas c'est juste une omission car je tiens énormément à la gratitude.

Oui effectivement ta proposition avait porté ses fruits dans la mesure où j'avais une liste déroulante qui affichait uniquement les ouvriers qui étaient en repos ("home")
Cependant, la saisie devait être faite manuellement or il y'a au moins 150 ouvriers et c'était devenu très fastidieux c'est pourquoi j'ai abandonné la solution d'une liste déroulante au profit d'un code qui me donnera directement la liste de tous ceux qui doivent aller sur les stations peu importe la station.

Donc voilà un peu ce qui s'était passé et encore une fois de plus toutes mes excuses si j'ai manqué de te faire un retour... Certains détails échappent souvent à l'être humain.

Merci cher expert toofatboy
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @olivier1984

J'ai donc repris ton fichier avec ce que j'ai cru comprendre.
Un bouton"Période suivante" permet comme son titre le dit de passer à la période suivante :
  • La période en cours est archivée dans la feuille "Archives" (Archives cumulatives).
  • Les employés qui étaient sur les stations 1 2 et 3 passe at "Home"
  • Les employés qui étaient at "Home" passe à vide (faute d'avoir une règle pour leur affecter une station). Une règle de validation de données permet de leur affecter une station manuellement.
  • La date de début est remplacée par la date de retour de la période précédente.

J'espère ne pas m'être trop fourvoyé.

À bientôt

EDIT :
Tu as sans doute des règles pour affecter les stations (ne serait-ce que de répartir les compétences équitablement) non ?
 

Pièces jointes

  • Rotation Stations.xlsm
    38.9 KB · Affichages: 6

olivier1984

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

J'ai donc repris ton fichier avec ce que j'ai cru comprendre.
Un bouton"Période suivante" permet comme son titre le dit de passer à la période suivante :
  • La période en cours est archivée dans la feuille "Archives" (Archives cumulatives).
  • Les employés qui étaient sur les stations 1 2 et 3 passe at "Home"
  • Les employés qui étaient at "Home" passe à vide (faute d'avoir une règle pour leur affecter une station). Une règle de validation de données permet de leur affecter une station manuellement.
  • La date de début est remplacée par la date de retour de la période précédente.

J'espère ne pas m'être trop fourvoyé.

À bientôt

EDIT :
Tu as sans doute des règles pour affecter les stations (ne serait-ce que de répartir les compétences équitablement) non ?
Merci pour cette première proposition.
Bonsoir le forum

Quant à l'affection sur les différentes stations il n'est pas toujours évident de les connaître à l'avance car à tout moment on peut déplacer un ouvrier d'une station à une autre c'est pourquoi je n'ai rien mentionné à ce sujet.

Toutefois, il faut noter que ces remplacements bien qu'ils arrivent souvent des fois ne sont pas fréquents et se font généralement lorsqu'il y'a un soucis ou un imprévu qui nécessite donc une improvisation. C'est le constat général que j'ai fait.

En effet, ce n' est pas moi qui donne les règles d'affectation c'est quelqu'un d'autre, moi je me charge juste d'implémenter ce qui a été décidé.
Je me rapprocherai donc du responsable pour avoir plus amples informations à ce sujet.

Je consulte donc le fichier et je te fais un retour au plus vite.

Merci beaucoup
Cordialement
 

olivier1984

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

J'ai donc repris ton fichier avec ce que j'ai cru comprendre.
Un bouton"Période suivante" permet comme son titre le dit de passer à la période suivante :
  • La période en cours est archivée dans la feuille "Archives" (Archives cumulatives).
  • Les employés qui étaient sur les stations 1 2 et 3 passe at "Home"
  • Les employés qui étaient at "Home" passe à vide (faute d'avoir une règle pour leur affecter une station). Une règle de validation de données permet de leur affecter une station manuellement.
  • La date de début est remplacée par la date de retour de la période précédente.

J'espère ne pas m'être trop fourvoyé.

À bientôt

EDIT :
Tu as sans doute des règles pour affecter les stations (ne serait-ce que de répartir les compétences équitablement) non ?
Non tu ne t'es pas fourvoyé du tout au contraire tu as parfaitement compris mon problème.

J'ai testé le fichier et en toute sincérité le travail fait est tellement remarquable et est même au dessus de mes attentes, j'ai tout simplement été impressionné notamment sur la promptitude d'exécution ;) ;)

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 ce qui limite considérablement le rôle de la feuille "Archives"
Bon je suppose que ça t'a juste échappé et que tu n'as certainement pas prêté attention à ce détail là...

En attendant recevoir demain certaines informations sur les règles d'affection chez mon collègue, je pense que le fichier est déjà pratiquement terminé à 95%.

Donc si tu peux déjà essayer de corriger le code afin que les nouvelles données n'ecrasent plus les anciennes ça serait parfait.

Si en plus tu peux insérer un bouton d'impression sur la feuille "Archives" ça m'aiderait énormément car en réalité j'en ai besoin pour pour souvent transmettre la liste des ouvriers aux responsables des différentes stations afin qu'ils sachent qui ils doivent recevoir sur leurs sites respectifs.
Mais pour cela il faudrait que l'impression pdf ne prenne en compte qu'une période à la fois car c'est à chaque début de période que je devrais souvent transmettre ce document.

Merci énormément pour ce travail qui me donne la joie dans mon sommeil ce soir, après plusieurs mois de galères...

À bientôt
 

Discussions similaires

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