Besoin d'astuces pour planification

Y compris Power BI, Power Query et toute autre question en lien avec Excel
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 24 septembre 2016, 12:02

Bonjour,

A l'examen, deux options principales apparaissent pour faire fonctionner ton classeur : une option formules qui tout en étant relativement lourde pourrait présenter quelques avantages (du fait que certaines fonctions à utiliser ne peuvent l'être en VBA...) mais a surtout l'inconvénient que les formules étant permanentes les modifications que tu envisages seraient répercutées sur tout le planning (autrement dit, à un moment donné modifieraient le passé, ce qui est à éviter). Il faudrait donc un dispositif pour y pallier qui nous ramènerait à introduire du VBA.
L'option VBA, elle, conduit à automatiser l'ensemble du processus, dès l'établissement du planning.
Ce qu'il faut savoir dans ce cadre, c'est si les plannings antérieurs doivent être conservés ou peuvent être écrasés lors de l'établissement d'un nouveau planning. Le cas échéant, on aurait donc à prévoir une sauvegarde de l'ancien planning, voir un archivage...

L'établissement du nouveau planning s'initialiserait donc à partir du précédent : recueil de la date de fin du planning précédent, du dernier nom utilisé à cette date respectivement pour les jours ouvrés et les jours non ouvrés.
A partir de là, le nouveau planning pour 6 mois peut être établi : on dispose du calendrier sur lequel on peut définir les jours fériés, les samedis et les dimanches, on dispose de la liste sur laquelle on peut établir à partir de quels noms (jours ouvrés et jours non ouvrés) on la défile.
Une fois établi le planning initial, restera à prendre en compte les changements : soit un nom disparaît de la liste, soit un nom y est ajouté. L'utilisateur devra donc fournir le nom à ajouter ou retirer et la date à laquelle cette opération intervient. Le programme pourra alors modifier la liste, et modifier le planning enconséquence à partir de la date indiquée.

S'il y a des éléments que je n'ai pas pris en compte et qui doivent l'être, me le signaler...

Cordialement.
m
mont25
Jeune membre
Jeune membre
Messages : 33
Inscrit le : 22 septembre 2016
Version d'Excel : 2016

Message par mont25 » 24 septembre 2016, 12:39

Bonjour,
Tout cela me semble complexe, sachant que mon language excel est assez limitée.
Je pense que tout a expliqué et tu a très bien compris ce que je voulais, je n'ai rien d'autre à ajouter.
Il faudra simplement que tu m'explique le fonctionnement du VBA une fois le planning fini.
Je te remercie bcp pour ton aide.
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 25 septembre 2016, 03:27

VBA est transparent pour l'utilisateur... Il n'a plus besoin de se préoccuper du comment faire telle ou telle opération, il actionne le programme (à partir de boutons ou autres déclencheurs) et ce dernier opère et si des choix sont à faire et lui incombent, il le questionne...

Un dernière question de mise au point, la périodicité du planning. Tu parlais de 6 mois. S'agit-il d'un cycle régulier et immuable :
1er novembre/30 avril et 1er mai/31 octobre.
Ou y a-t-il des variations possibles et dans quelles proportions ?
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 25 septembre 2016, 14:45

J'ai aussi un 'cas de conscience' concernant les mises à jour...
Je vais essayer d'expliquer la problématique :

On va supposer qu'on procède à la constitution du planning du 1er novembre au 30 avril, à partir du planning précédent.
Au moment de son établissement, je prélève sur l'ancien planning les références qui seront prises en compte pour l'établissement du nouveau, soit la situation au dernier jour du planning précédent, le 31 octobre, et je mémorise qui était le dernier requis à cette date pour les jours ouvrés, et qui pour les jours non ouvrés.
Lors de l'établissement du planning, on doit pouvoir, s'il y a lieu, mettre simultanément la liste à jour. Le fait que les noms que j'ai mémorisé pour démarrer la répartition au 1er novembre puissent éventuellement être alors ôtés de la liste n'a aucune incidence : pour démarrer au 1er novembre, je cherche à quelle ligne de la liste en remontant le nom devient inférieur à celui noté pour jours ouvrés, et à quelle ligne en descendant le nom devient supérieur à celui noté pour jours non ouvrés (la liste étant trié par ordre alpha).

Pas de problème particulier à ce stade, c'est lors de mises à jour ultérieures de la liste, affectant le planning en cours à compter d'une date d'effet de la mise à jour que des problèmes peuvent survenir.
Mon premier réflexe était de jouer sur les références enregistrées : par exemple une mise à jour intervient à partir du 10 décembre, je récupère de nouvelles références à la date du 9 décembre, je mets la liste à jour (ajouts et/ou suppression de noms), je la retrie, et je recompose le planning à partir du 10 décembre sur la nouvelle liste.

Cela paraît logique... mais... Au départ : établissement du nouveau planning au 1er novembre, aucune mise à jour ultérieure ne pourra plus remonter avant cette date du 1er novembre. Si on procède comme j'ai indiqué pour une mise à jour le 10 décembre, aucune mise à jour ultérieure ne pourra plus avoir d'effet antérieur au 10 décembre, soit les mises à jour successives devront nécessairement se succéder dans le temps.
Or, il n'est pas garanti (en l'état des informations dont je dispose) que cela puisse toujours être le cas.
Supposons, nous sommes en novembre, j'ai des mises à jours qui doivent prendre effet le 15 février, rien ne s'oppose à ce que j'y procède, je le fais donc et le planning est recomposé à partir du 15 février. Mais peu de temps après survient un cas imprévu, un nom que je dois ajouter ou enlever à partir du 10 décembre. Impossible alors de le faire : remonter au-delà du 15 février fausserait le planning mis à jour pour cette date...

J'ai donc pensé à un dispositif complémentaire qui serait pour les ajouts ou retraits (pour chacun) de calculer quelle date d'effet antériorisée dans le planning aurait le même effet réel que la date d'effet prévue... Outre que cela allongerait assez fortement les calculs, si cela limiterait les cas d'impossibilité ultérieurs, cela ne les éliminerait pas complètement.

Un autre dispositif serait d'enregistrer les mises à jour à opérer (avec leur date d'effet) et à ne l'opérer qu'au jour prévu. Cela aurait aussi des inconvénient : on ne pourrait remonter au-delà de la date actuelle pour opérer une rectification (il faudrait donc être assuré que pour toute date passée, les données consignées dans le planning sont bien celles qui ont été appliquées), et cela entacherait la consultation prévisionnelle du planning.

Je laisse décanter en attendant ton avis sur ces différents aspects.
Cordialement.
m
mont25
Jeune membre
Jeune membre
Messages : 33
Inscrit le : 22 septembre 2016
Version d'Excel : 2016

Message par mont25 » 26 septembre 2016, 09:30

bonjour,
Pour répondre à ta première question concernant la périodicité du planning, c'est un cycle régulier et immuable !!
Je pense que le deuxième dispositif serait plus simple, puisque en réalité le planning n'est qu'une embauche et on organise une réunion ou les noms (en rouge) sont remplacés par d'autres noms étant donné que ce sont des noms volontaire
Je pense que le mieux c'est de faire au plus simple, après cette "réunion" beaucoup de noms changent des médecins donnent leurs gardes à leurs noms à d'autres médecins qui le souhaitent. Le tableau établi après la réunion n'a donc plus d'ordre alphabétique.

Mais à la date du 31 avril ce même tableau par ordre alphabétique cette fois devra de nouveau être utilisé en suivant l'ordre établi par l'ancien.

J'espère avoir répondu à ton questionnement
Cordialement
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 26 septembre 2016, 10:20

Bonjour,

Le caractère immuable va permettre de simplifier... Pour les entrées et sorties de la liste durant une période, après réflexion décantée, il va suffire de noter la date d'effet (entrée ou sortie), ainsi lorsque lors de la constitution on tombe sur un nom entré ou sorti on compare la date atteinte à la date d'effet notée : si entré et date d'effet égale ou antérieure on le prend, sinon on le saute, si sorti et date d'effet égale ou antérieure on le saute, sinon on le prend.

Pour ce qui est des non-volontaires, si tu es en mesure de le signaler lors de l'ajout, ou ensuite, on peut conserver l'information et les mettre en rouge lors de la constitution du planning...

Je vois les modifications à apporter à ce que j'ai déjà fait, puis à compléter... ne t'impatiente pas, j'ai pas mal d'autres choses...
A+
m
mont25
Jeune membre
Jeune membre
Messages : 33
Inscrit le : 22 septembre 2016
Version d'Excel : 2016

Message par mont25 » 26 septembre 2016, 10:31

D'accord, il m'est impossible de te signaler les non-volontaires cela change à chaque fois.
Pas de soucis, j'attend.
Merci
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 30 septembre 2016, 00:24

Bonsoir,

Je ne t'oublie pas, mais je suis en déplacement... A bientôt.
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 8 novembre 2016, 05:29

Bonjour,

Désolé (un peu ! :D ) pour le délai... le code était écrit début octobre, un premier test vers le 20 et un second le 31 octobre, mais je n'ai pas trouvé le temps de faire des tests plus approfondis et je ne suis pas suffisamment disponible en ce moment, donc... à toi de me dire si des difficultés apparaissent.

Pour ce qui est de la présentation, la coloration des fériés, samedis et dimanches a été basculée en MFC. De même, la coloration en rouge des non volontaires : en l'absence de critères particuliers c'est la mention "n" portée en colonne G qui déclenche cette coloration.
J'ai aussi autant que possible homogénéisé les formats qui présentaient quelques irrégularités (sous réserve d'oublis possibles).

Côté feuille LISTE, la liste de noms se trouve en colonne A. La plage est nommée ListeA, nom dynamique qui s'adapte à la taille de la liste. Les colonnes B et C sont réservées aux mises à jour en cours de période (qui sont effacées lors de la réinitialisation de la répartition.
Actuellement la répartition est initialisée sur la période 1er nov.-30 avr., et les colonnes B et C sont vides.

La liste des fériés se trouvent en colonne F. Elle est mise à jour par formules : l'année en F1 suit l'année de la date de début de période (1er nov. ou 1er mai), et au-dessous les dates des fériés se calculent sur 2 ans (l'année en cours et l'année suivante).

En J2:J3 sont mémorisées les dates bornes du planning en cours (soit 01/11/2016 et 30/04/2016).
En L2:L4, les éléments référentiels pris en compte lors de la réinitialisation périodique, soit les derniers noms affectés lors de la période précédente pour les jours ouvrés et les jours non ouvrés, à la date de référence du 31 oct. 2016.
En L5:L7, des mentions équivalentes sont portées lors de mises à jour, elles peuvent varier à chaque mise à jour, la date de référence correspond à la veille du jour de départ d'une révision de la répartition avec les derniers noms affectés à cette date de référence.

Toutes ces mentions sont portées automatiquement, lors de la réinitialisation périodique ou lors de mise à jour. La mise à jour de la liste est également réalisée automatiquement (à partir de saisie sur un formulaire). Et les fériés se calculent d'eux-mêmes. Il n'y a donc pas lieu à intervenir manuellement sur cette feuille.

Deux boutons figurent sur la feuille REPARTITION : le premier pour réinitialiser la répartition sur une nouvelle période, le second pour introduire des mises à jour de la liste.
Le programme exécutant les opérations lancées au moyen de ces deux boutons est constitué par une vingtaine de procédures que l'on trouvera dans le Module1, complétées par 2 Userforms (le formulaire de mise à jour de la liste et un formulaire additionnel pour le cas où un nom à sortir de la liste n'est pas trouvé : il est alors demandé à l'utilisateur de le sélectionner dans une liste déroulante).

La réinitialisation périodique -
Au lancement de cette opération, l'utilisateur est averti préalablement que le calendrier en cours sera conservé pour information mais cessera d'être le calendrier actif (à partir duquel s'opèrent les mises à jour). Si l'utilisateur souhaite poursuivre l'opération, le calendrier en cours est dupliqué, les boutons en sont supprimés (il pourra être conservé dans le classeur, déplacé dans un autre ou détruit selon choix...).
Les références initiales de la nouvelle période (noms à la fin de la période en cours...) sont définies avant effacement du calendrier sur la feuille REPARTITION.
Le nouveau calendrier de période est alors listé (col. A, B, C). On passe alors à l'épuration de la liste sur la feuille LISTE : les sortis au cours de la période précédente en sont supprimés, et les mentions d'entrées et sorties effacées. On peut alors passer à la répartition proprement dite (remplissage du calendrier, col. D).

Les mises à jour -
L'action sur le bouton concerné ouvre un formulaire de mise à jour de la liste.
Des mises à jour peuvent intervenir à n'importe quel moment. L'utilisateur dispose pour ce faire d'une zone de saisie du Nom, entrant ou sortant, d'une zone destinée à recueillir la date d'effet de l'entrée ou de la sortie, que l'utilisateur ajuste au moyen d'un bouton-toupie (lequel est destiné à limiter la date d'effet à la période en cours, elle ne peut être antérieure au début de la période, ni postérieure à la fin de la période).
Ces deux informations saisies, il les valide en actionnant un bouton Ajouter ou Retirer, selon qu'il s'agit d'une entrée ou d'une sortie.
Cette validation n'est pas définitive, elle ajoute le nom à une liste d'ajouts ou une liste de retraits selon le cas.
Cela permet à l'utilisateur de vérifier ses modifications, en cas d'erreur, un simple clic dans l'une ou l'autre des listes efface le nom cliqué... Lorsqu'il s'agit d'un retrait, une vérification est opérée : si le nom n'est pas trouvé, un autre formulaire s'ouvre pour lui présenter une liste déroulante dans laquelle sélectionner le nom à retirer.
Une fois ses mises à jour établies, il valide l'ensemble par le bouton Valider.

Les modifications sont alors introduites dans la liste : ajouts des noms, mentions d'entrées ou sorties portées en regard, tri de la liste.
A partir des dates d'effets, une date à partir de laquelle la répartition doit être révisée est déterminée. Les références à utiliser sont également extraites, et la révision est effectuée. Les informations afférentes aux entrées et sorties sont conservées toute la durée de la période.

Cordialement.
mont25_PROJET_REPARTITION_SECTEURS_CMG_.xlsm
(69.11 Kio) Téléchargé 34 fois
m
mont25
Jeune membre
Jeune membre
Messages : 33
Inscrit le : 22 septembre 2016
Version d'Excel : 2016

Message par mont25 » 17 novembre 2016, 16:31

Bonjour,

Que dire !!! C'est parfait !!

Je te remercie beaucoup pour ton aide, tes explications sont très claires. Et le tableau est parfait !! J'aurais jamais su faire ça.
malheureusement pour le moment le tableau que j'ai fait (en attentant le tien ) et déjà construit jusqu'au mois de mai 2017.

Je reviendrai sur ton tableau en apportant des modifications en fonction des dates courant avril 2017. Si à ce moment là j'ai quelques difficultés je me permettrai de revenir vers toi.

Excuse moi le retard dans ma réponse avec le boulot pas évident .


Merci beaucoup
Cordialement
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message