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:

olivier1984

XLDnaute Junior
Bonjour à toute & à tous, bonjour @olivier1984.
Merci du retour.

Alors marque le comme solution à ta question (regarde ma signature) : vas sur le post #27 et coche la case dans la colonne de droite.

À bientôt
Je venais de télécharger la version 7 (la dernière).

Permets moi stp de la tester pas à pas en suivant minutieusement toutes les nouvelles explications que tu venais de donner.
Et juste après ça je viens ici confirmer et je le marque comme solution à ma question.

À bientôt.
 

olivier1984

XLDnaute Junior
Re,
Pas de problème, à te lire je croyais que tu avais validé cette dernière version.
À bientôt
Re
Effectivement j'ai validé cette dernière version mais en théorie selon tes explications.

Or il se pourrait que dans la pratique ce ne soit pas totalement ça d'où j'ai dit dans mon précédent message sous réserve de confirmation

Je te reviens au plus vite je n'ai pas encore vraiment eu le temps de le tester.

Merci
 

olivier1984

XLDnaute Junior
Bonjour à toute & à tous, bonjour @olivier1984.
Merci du retour.

Alors marque le comme solution à ta question (regarde ma signature) : vas sur le post #27 et coche la case dans la colonne de droite.

À bientôt
Bonsoir forum
Bonsoir AtTheOne

Je viens de marquer ton post 27 comme solution à mon problème.

J'ai un peu mis du temps car je voulais tout tester d'abord avant de venir confirmer.
J'ose croire et espérer que ce fichier en servira à plus d'une personne à l'avenir.

Merci pour tout, ce travail est le tien à pratiquement 100%.

Cependant j'ai une petite préoccupation : si jamais la durée sur une station est différente de celle passée à la maison ("home") comment le fichier va fonctionner ou sera adapté dans ce cas ?
(j'anticipe juste quelques hypothèses qui peuvent devenir réelles à court ou à moyen terme).

Merci beaucoup AtTheOne

À bientôt.
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonne nuit à toutes & à tous, bonne nuit @olivier1984
Merci pour le retour.

si jamais la durée sur une station est différente de celle passée à la maison
Et bien il faudra ajouter une colonne "durée à la maison" dans la table tbStatuts et utiliser les 2 durées dans le code pour le calcul de la date de retour : Si c'est un départ pour une station, la durée pour la station ; si c'est un départ pour la maison, la durée pour la maison.
Ça ne le paraît pas trop difficile à mettre en œuvre.
À bientôt
 

olivier1984

XLDnaute Junior
Bonne nuit à toutes & à tous, bonne nuit @olivier1984
Merci pour le retour.


Et bien il faudra ajouter une colonne "durée à la maison" dans la table tbStatuts et utiliser les 2 durées dans le code pour le calcul de la date de retour : Si c'est un départ pour une station, la durée pour la station ; si c'est un départ pour la maison, la durée pour la maison.
Ça ne le paraît pas trop difficile à mettre en œuvre.
À bientôt
Bonjour à tout le monde et à AtTheOne

Merci pour tout et je crois que comme on le dit souvent : tout est bien qui finit bien.

Ta proposition par rapport à mon inquiétude à propos de la variation de la durée est effectivement correcte et cohérente.
J'essaierai de l'appliquer si besoin sera.

À bientôt et peu être prochainement pour un nouveau sujet (je n'en manque pas souvent ☺️☺️).
 

Discussions similaires

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

Statistiques des forums

Discussions
314 863
Messages
2 113 646
Membres
111 930
dernier inscrit
fab_met