Création planning d'astreinte selon contraintes individuelles
Bonjour à tous,
j'ai besoin de l'aide de connaisseurs pour réaliser un planning d'astreinte personnalisé. Merci d'avance pour votre accueil !
En données d'entrée :
- une liste d'individus
- des dates (principalement samedi et dimanche, toute l'année) et des horaires associées à chaque date (ex : samedi 10h / dimanche 10h / dimanche 11h / dimanche 15h) = les astreintes que je souhaite combler
- des rôles : 2 principaux, appelons les rôle A et rôle B : il faut toujours un A et un B sur une astreinte
En sortie attendue :
- une distribution des astreintes rôle A et rôle B sur chaque date
Voici les paramètres que je souhaiterais pouvoir prendre en compte pour faire ce planning aléatoire
- un individu ne peut remplir qu'un des 2 rôles, soit A, soit B (ça c'est pour simplifier...)
- il ne faut qu'un seul rôle A et un seul rôle B pour chaque astreinte, évidemment
- chaque individu a indiqué sa fréquence de disponibilité : ex : 1 fois par mois, 2 fois par mois, 1 fois tous les 2 mois...
- il faut que soit respectée une distribution à peu près équitable entre les personnes (en nombre sur l'année), tenant compte de la disponibilité indiquée
- chaque individu peut indiquer un ou plusieurs créneaux préférentiels (ex samedi 10h), un ou plusieurs créneaux occasionnels (ex dimanche 15h) et un ou plusieurs créneaux non disponible (on est dans de l'associatif !). Ces préférences sont indépendantes des dates, c'est valable pour l'année. Dans ce cas, on peut indiquer une pondération de 3 sur le créneau préférentiel, de 1 sur l'occasionnel (= 3 fois moins de chances d'en faire), et de 0 sur le non dispo.
- si possible, chaque individu peut indiquer des dates annuelles d'absence et donc de non dispo pour l'astreinte.
- une distribution qui évite obligatoirement d'avoir 2 créneaux sur le même week end pour les mêmes personnes dans chaque rôle A et B
- une distribution qui évite si possible d'avoir un créneau 2 week ends (samedi ou dimanche) consécutifs.
Je ne sais pas si ma demande est réaliste ou bien trop complexe, et si l'un de vous aura le temps d'y jeter un oeil...cela ressemble surement à des choses partiellement déjà existantes, mais en tous les cas....merci d'avance pour votre aide !
bonne journée
Salut,
Pas de fichier-modèle, trop de questions à la fois = pas de réponse ??
Fournis-nous un fichier dans lequel tu nous montres ta manière de procéder et - sur cette base - présente le premier problème à résoudre. Fais bien attention d'utiliser les références Excel (cellules, lignes, colonnes, feuilles, etc.) lorsque tu présentes ton soucis.
Cordialement.
Bonjour,
bien sûr, avec un fichier test ce sera plus simple. Merci pour ta réponse.
Voici en PJ, j'ai élagué mais cela contient les principaux paramètres que j'ai besoin de pouvoir utiliser pour remplir la table sur un mode "automatique", sans le faire date après date..
Merci pour ton aide !
Salut,
Je me suis passablement cassé la tête sur ton fichier.
Comme il manque pas mal de monde afin de combler les trous, je n'ai pas tenu compte de tes pondérations 1 et 3 dans les colonnes E à G de la feuille ''Personnes''. Je n''ai considéré que deux possibilités : 0 ou >0. Je n'ai pas non plus tenu compte de 1 fois toutes les 2 semaines, si possible 3, mais uniquement ''toutes les 2 semaines''.
Je te montre deux fichiers différentes avec diverses possibilités. Pour les deux fichiers tu peux simuler avec les 10 personnes que tu m'indiques ou avec 26 personnes, pour voir la différence. Mais tu peux - normalement, éventuellement que je vais devoir modifier une chose ou l'autre - inscrire jusqu'à 100 personnes si vraiment tu as autant de monde à disposition.
Dans le fichier V1 (version 1), je suis parti sur cette idée (ça correspond au bouton ''Répartition A") : On inscrit déjà toutes les personnes pouvant venir chaque 2 semaines, chaque 2 semaines, au hasard selon les possibilités, parfois à l'horaire 1, parfois à l'horaire 2 et parfois à l'horaire 3 ; puis on recommence avec les personnes pouvant venir chaque 4 semaines afin de boucher le maximum de trous ; puis les personnes pouvant venir chaque 6 ; puis chaque 8 semaines. Avec cette variante, il semble que les personnes pouvant venir le moins souvent sont très peu prises car il y a de moins en moins de trous à combler.
J'ai eu alors l'idée de la ''Répartition B" ou l'on fait le contraire : On inscrit déjà toutes les personnes pouvant venir chaque 8 semaines, chaque 8 semaines, au hasard selon les possibilités, parfois à l'horaire 1, parfois à l'horaire 2 et parfois à l'horaire 3 ; puis on recommence avec les personnes pouvant venir chaque 6 semaines afin de boucher le maximum de trous ; puis les personnes pouvant venir chaque 4 ; puis chaque 2 semaines. Mais ça ne semble pas beaucoup mieux.
Dans le fichier V2, je suis parti sur une autre idée. En début de macro, j'inscris de manière invisible dans la colonne M de la feuille ''Personnes'' des disponibilités au 01.01.2022 (à gauche dans l'image ci-dessous) puis je cherche à remplir les colonnes E et F (avec les titres A et B) de la feuille "Dates et horaires" (à droite ci-dessous).
Afin de remplir le samedi du premier weekend, je regarde toutes les personnes qui sont disponibles pour cet horaire pour le rôle A et je leur donne un chiffre aléatoire dans la colonne N (ci-dessous 5354, etc.) et la personne ayant le plus haut score est ainsi choisie au hasard. A cette personne, je corrige la date en colonne M afin d'indiquer sa prochaine disponibilité, selon qu'elle peut venir chaque 2, 4, 6 ou 8 semaines. Je fais la même chose en colonne N pour le rôle B. Mais ou bout d'un moment, plus personne n'est disponible pour un horaire, comme c'est le cas sur l'image ci-dessous pour le rôle B (la colonne O est vide !).
Tel que présenté ci-dessous, on se prépare à remplir l'horaire 19 heures du premier weekend. Tu vois que pour le rôle A, Danièle, Emilie et Gabrielle seraient disponibles (il y a des chiffres en colonne N). De par le tirage au sort, c'est Danièle qui sera prise. Mais pour le rôle B, il n'y a personne de disponible (colonne O vide). On constate également que Françoise qui a été prise pour l'horaire du samedi à 18h30 ne sera plus disponible jusqu'au 15 janvier car elle peut venir chaque 2 semaines, qu'Igor ne sera plus disponible jusqu'au 12 février car il ne peut venir que chaque 6 semaines, etc.
Pour les deux fichiers, j'ai placé des statistiques en fin de macro, mais avec deux systèmes différents. A toi de faire des essais et tes propres constatations.
(Cliquer sur l'image pour mieux la voir)
Avec cette version V2, si tu as peu de personnes à disposition, il y a passablement de trous (d'horaires non comblés), mais les personnes sont utilisées au maximum de leur disponibilité. Si tu as plus de personnes, il y a bien moins de trous, mais les personnes ne sont pas utilisées au maximum de leur disponibilité.
Dans la colonne L de la feuille ''Dates et horaires", les ''Disponibilités'' inscrites sont simplement le nombre de 52 (semaines) divisé par le nombre de semaine indiqué dans la colonne D de la feuille ''Personnes : 52 / 2 = 26 disponibilités.
Lorsqu'il y a plus de personnes à disposition, les personnes pouvant venir le plus souvent sont ''sous-utilisées'' (celles pouvant venir chaque 2 semaines sont prises environ 50 % de leur disponibilités) alors que les personnes pouvant venir le moins souvent sont pratiquement utilisées à 100 % de leur disponibilités. On pourrait imaginer un système qui égaliserait un peu ces ''utilisations'' (par exemple que chacun viennent à peu près le même nombre de % de leur disponibilités).
Je ne vais pas plus loin dans mes recherches sans savoir comment se présente la réalité ; si tu as en fait bien plus de personnes à disposition, si tu dois absolument combler tous les trous, si ces personnes pourraient venir plus souvent, etc.
Mais je pense que c'est absolument en continuant à travailler le fichier V2 qu'on aura le plus de chance d'arriver à un résultat satisfaisant.
A te relire.
Bonjour,
un énorme merci pour le temps passé à travailler sur mon sujet, je regarde cela rapidement !
Bonne journée
Bonjour Yvouille,
merci pour ce gros travail, c'est très prometteur et cela m'aide déjà beaucoup. Je suis donc reparti de la V2
Si tu as encore le temps de m'aider un peu, j'ai 3 questions :
- je n'ai pas bien compris l'usage des boutons 10 personnes / 26 personnes : le nombre de volontaires est variable, évolue tous les ans, pour le moment j'ai simplement complété la liste d'une trentaine de noms environ..et la distribution semble fonctionner lorsque j'utilise le bouton "répartition"
- Dans la distribution faite dans mon fichier, je prends l'exemple de Magdalena et Benoit W, qui ont le même paramétrage de "dispo" à 4, et pourtant Magda est positionnée 4 fois dans le planning , et benoit W 9 fois ! Ce déséquilibre peut-il être résolu ?
- il y a donc 3 créneaux différents, 3 horaires qui sont les 3 colonnes du premier onglet : 18h30 / 10h45 / 19h : te semble-t-il possible que chaque personne puisse être paramétrée sur chacun des 3 horaires ? à minima 2 paramètres possibles : 1-Régulier / 3-indisponible, mais idéalement, 3 paramètres possibles :"1-Régulier / 2-Occasionnel / 3-Indisponible
Selon moi le 2-occasionnel, si tu sais l'intégrer, doit intervenir à peu près 3 fois moins souvent que le 1-Régulier.
Merci d'avance pour tout ce que tu pourras faire en complément !
Bonne journée!
Salut,
Je me donne pas mal de peine à t’expliquer les choses au mieux et à te poser les bonnes questions, ce serait sympa de ta part de bien lire mes informations et de répondre à mes questions en suspens.
Par exemple je t’ai expliqué clairement pourquoi j’ai placé des boutons afin de simuler des résultats avec 10 ou 26 personnes et tu me demandes pourquoi je l’ai fait !!??
Autre exemple : je te demande s’il faut absolument remplir tous les vides sur la feuille ‘’Dates et horaires’’ et tu ne m’en dis rien !!??
Je t’ai expliqué qu’il me semblait très compliqué de tenir compte des ‘’ Disponibilité selon jours et horaires’’ et que j’avais considéré qu’il n’y avait uniquement les possibilités ‘’Dispo’’ ou ‘’Pas dispo’’ en plus des disponibilités chaque x semaines. Pour ce faire, j’ai indiqué dans ma macro – et je te l’ai expliqué dans mon texte – que je tenais compte que des valeurs 0 ou >0 pour les cellules des colonnes E à G de la feuille ‘’Personnes’’. Tu as maintenant indiqué des valeurs complètement autres que 0, 1, 3 dans ces colonnes. Tu y indiques des valeurs ‘’1-Régulier’’, ‘’2-Occasionnel’’, ‘’3-Pas dispo’’ !!! Tout d’abord, comment veux-tu que ma macro y comprenne quelque chose et deuxièmement c’est complétement en contradiction avec tes infos dans les cellules J11:K13 de cette même feuille. Ainsi la macro considère que toutes les valeurs inscrites sont >0 et considère que toutes les personnes sont toujours présentes !!
J’ai maintenant tenté de tenir compte de l’évolution des % de présences en cours d’année et tu verras dans le fichier V3 ci-joint que le déséquilibre entre Magdalena et Benoît n’est plus aussi grand (enfin, il me semble, voir le calcul dans la cellule I35 de la feuille ‘’Dates et horaires’’).
A noter que Geoffroy et Isabelle sont les seules deux personnes à pouvoir prendre le service B de 19:00 et qu’ils ne peuvent venir que chaque 4 semaines. De plus, ils peuvent être pris pour d’autres services, ce qui les rend encore moins disponible pour 19:00 ! Il est alors impossible qu’il n’y ait pas autant de trous pour ce service. Si, en général, tous les autres services sont à 100 %, il arrive parfois que le service B de 18:30 ne le soit qu’à 97-99 % (un fois sur 20 ?).
Mais il reste des ‘’bizarreries’’ telle que le fait que Geoffroy, Loïc et Magdalena sont systématiquement pris plus souvent que, respectivement, Isabelle, Hélier et Benoit (il y a normalement un accent circonflexe sur le i de Benoît). Je serais tenté de comprendre cela, mais tout d’abord je n’ai pas trop de temps avant plusieurs jours et deuxièmement je ne sais pas si ça t’intéresse que je continue dans ce sens-là.
Si tu indiques par exemple que Geoffroy et Isabelle ne peuvent pas faire d'autres services que le service B de 19:00, ce service sera systématiquement couvert à 50 % et le service B de 18:30 sera un peu plus souvent couvert qu'à 97-99%.
Je trouve effectivement que c’est déjà bien assez compliqué de tenir compte des possibilités de chacun quant à la fréquence en semaine sans devoir tenir encore de ton autre paramètre au sujet de "1-Régulier / 2-Occasionnel / 3-Indisponible". Selon moi, une personne qui peut venir chaque deux semaines est déjà une ‘’Régulière’’ ; chaque 4 semaines, une ‘’Moins régulière’’ ; chaque 6 semaines, une ‘’Occasionnelle’’ et chaque 8 semaines, une ‘’Peu disponible’’.
Amicalement.