Planning Hebdomadaire VBA

Bonsoir @Pierre

Je comprends que le boulot passe avant tout mais merci pour ce retour. Merci d'avoir pris le temps malgré tout de faire cette animation claire. Effectivement je comprends mieux comment ça se passe. Ce qui veut dire alors qu'en programmation il faut connaître le nom de chaque case que l'on trouve en propriété pour pouvoir leur attribuer une variable d'un tableau défini en VBA. i.e 208 cases (26 x 8) plus les 26 cases du total sans compter les cases des noms à indexées. Bref pas simple quand même !

Ok ds l'attente du 1er point.

Bonne soirée

Gaële

Bonjour le forum, et merci pour ce travail PierreP56

Une de mes collègue m'a demandé de faire une "bidouille" sur un fichier qu'elle avait téléchargé elle ne savait plus où. Et bien moi j'ai tout de suite su

Je suis responsable d'un établissement médico-social dans lequel nous avons bien des outils de suivi des heures, mais il n'y a rien sur le suivi des activités, des pro mais surtout des enfants. Qu'est ce qu'ils font, avec qui, quand et où. Et quand on doit le faire pour une petite centaine de loulous, et dans cela devient un vrai tohu-bohu ! Donc oh espoir grâce à Pierre d'avoir un outil intuitif et dynamique selon les besoins.

Ça demande était d'afficher le planning de pro en plus de celui des enfants. Puis la demande s'est aiguisée. Non content de faire un filtre il fallait afficher dans les formes les noms des participants, puis si possible de faire un affichage par groupe et peut-être par lieu aussi. Bref j'ai donc bidouillé mais mes limites se sont repointées
Je me suis dis que j'aurai pu adapter la version croisièreV0.7, mais il me manque encore un peu (beaucoup) de logique SQL

J'ai joint à ce post le fichier que j'ai tenté d’adapter. J'y ai ajouté un ou deux onglets pour illustrer mes propos. J'ai mis en forme 4 tables : Enfants, pro, activités et lieu. L'idée serait de faire comme dans la version croisière et que l'on puisse savoir pour telle activité qui y participent: enfants (max 8), encadrant(s) (max 2) et où à lieu cette activité. Ce qui serait top c'est qu'en choisissant le lieu on puisse savoir qui l'utilise et combien de temps un peu comme pour les bateaux.

Je suis preneur d'une assistance pour progresser.

Merci

Leakim

43sandrine-f.zip (326.66 Ko)

Bonjour à tous,

@Gaëlle : ok voici donc une proposition pour le contrôle de chevauchement lors d'une copie de semaine.

En fait, il y a 2 points d'attention :

  • une plage semaine "source" peut chevaucher une ou plusieurs plages de la semaine "cible", exemple on peut vouloir copier un 10h-13h alors qu'il y a déjà un 9h-11h ET un 12h-14h pour une même personne.
  • l'utilisateur peut vouloir garder les plages de la source OU celles de la cible.

Alors dans cette version si chevauchement : affichage d'une fenêtre de choix avec à gauche la plage source, à droite la-ou-les plages cibles et 2 boutons pour valider l'un ou l'autre (et donc effacer l'autre ou l'un).

capture dupliquer

Est-ce que ça répond à la question?

Et comme d'habitude ... à tester ...

@Leakim : je vais regarder ton besoin, mais à la louche ça me parait être un peu usine à gaz ...

Sans garantie de suite ...

Pierre

Bonjour à tous,

En premier lieu, Merci merci beaucoup à pierrep56 pour son super boulot.1 an que j'essaye de gerer simplement l'agenda d'une de mes équipes...C'est quasi un miracle :-))))

Je suis responsable d'une petite structure prenant en charge 10 enfants avec quelques professionnels et cela va me changer la vie !

J'ai un peu regarder toutes les versions, et la version Activités_4juillet2020 est celle qui est la plus adaptée ( avec notamment le choix du nombre d'"opérateurs" apparaissant dans le planning global, et aussi la fonction "dupliquer")

Restent quelques petits détails que je ne sais pas corriger ( bon je reconnais que je pourrais me plonger dans le VBA...mais comment dire...:-(

Dans cette version, il est question de Qualif/seuil ( pour les diplômés, ope). Je n'en ai absolument pas besoin. Je crois même que cela vient bloquer un fonctionnement sans filtre ( je ne suis pas certaine de la terminologie)

-De plus la barre de couleur correspondant à l'activité n'apparait pas ( constamment en couleur grise) D'ailleurs, je n'ai pas besoin en version partiellement terminée mais plutot constamment à 100% ( mais ceci est un détail).

Je vais toutefois utiliser le fichier tel quel, mais si vous pouvez me résoudre cela, cela facilitera la vie du medecin hospitalier multitâche que je suis.

Merci encore de nous faire profiter à tous de vos qualités en VBA

Doc77

oups.....j'ai oublié....JE suis confuse

Une plage horaire de 8H30 à 18h est largement suffisante !

Je m'en vais de ce pas terminer de remplir le premier fichier.

Encore Merci pour tout ce que vous faites

Doc77

Bonjour à tous,

@Doc77 : bel enthousiasme!

Sans faire compliqué :

  • Horaire de journée : il suffit de modifier la case D7 "7:00" par "8:00" ou "8:30" comme on veut. On peut aussi éventuellement masquer les colonnes non utilisées en fin de journée (via Affichage/Entête, et masquer de AV jusqu'à BD par exemple)
  • Qualifications/seuils : pour ne pas être gêné par cette fonction, il suffit de lister les diverses qualif en H (puer/psychomot/kiné/...) et de mettre les seuils à 0 (ou 1) en I
  • Couleur de la barre d'activité : là en effet un défaut corrigé dans la version du jour. Sinon, si le "réalisé" est à 0%, cette barre de couleur est visible sous la forme d'un carré minimum au début de l'histogramme
  • Enfin pour rappel, il est possible de modifier vous même les intitulés de "Cfg" : "Opérateur/Activités/Client/Commande" par ce que vous voulez "Soignant/Soin/Patient/Pathologie" par exemple

Et merci à nos soignants!

Pierre

PS : pour ceux qui voudrait faire la correction du jour de la couleur de la barre des activités, dans le module "Dessin", procédure "Statut", le bon code au début est le suivant :

    With Sheets("Cfg")
        T_Act = .Range("D2:D" & .Cells(Rows.Count, "D").End(xlUp).Row)
        idx = Idx_T2D(T_Act, Nom, 1) + 1
        clr = .Range("D" & idx).Interior.Color
    End With

(fait référence à la colonne D et non à C du fait de l'insertion de la colonne Qualif en C)

@Doc77 : en complément, si vous voulez que la barre des activités soit visible à 100% par défaut :

  • dans les modules des feuilles Feuil2(Global) et Feuil3(Individuel) il y a la ligne Tg(1, 9) = 0 il suffit de modifier le zéro par 100 : Tg(1, 9) = 100

Pierre

@Leakim : je vais regarder ton besoin, mais à la louche ça me parait être un peu usine à gaz ...

Sans garantie de suite ...

Pierre

Bonjour,

Je persiste, mais je bug.

J'ai repris le fichier croisièreV0.7 et j'ai interverti les bateaux en lieux car c'est finalement là que j'ai un groupe dans lequel j'ai converti les capitaines en pro et les marins en enfants. J'ai me suis donc appliqué à changer les "Btx" en "Grp" par exemple les "Cap" en pro, etc. Le transfert sur les Bdd se passent bien mais j'ai un bug à la confirmation la forme disparaît

Un petit coup pouce ?

20activites-v0-7.zip (274.78 Ko)

Bonsoir @Pierre,

Merci encore une fois

* oui ça ne m'a l'air pas mal comme proposition de chevauchement.

Juste comme ça, sans l'avoir testé est-ce que ça ne risque pas d'être un peu long de valider 1 par 1 les plages d’activité qui risquent d'être nombreuses (n personnes x n jours x n activités) ?

Supposons mes 7 personnes pour 5 jours (hors WE) à raison de 2 activités par jour (1 matin et 1 le soir) on est déjà à 70 validations

Mais ce n’est peut-être pas facile à faire différemment et à programmer ?

Bien sûr je vais tester et reviens pour commenter.

* Une remarque technique, tjs ds l’idée de gérer mes Vacances et tps de récupération, suggestion pouvant faire l’objet d’une nouvelle version (c.f votre réponse du 22/06) je souhaitais en attendant faire une petite modif en ajoutant des colonnes ds « Bdd » qui me seraient utiles.

J’ai donc essayé pour un test exemple d’ajouter la col « Durée1 » (tps fin – tps début)

Résultat lors de la création d’une activité ou absence ds « Global » ou « Individuel », la suppression d’activité ou absence => pas de pb je crée bien qqc ds cette colonne « Durée1 »

col bdd

En revanche il me faut traiter la duplication et là j’ai un gros souci.. J’ai beau avoir modifié le pgm de la fonction Select_Db (module Sql) en ajoutant en dur 11 (même plus our voir) ds la boucle J (de ce que j’ai compris la boucle J serait la boucle des colonnes, la boucle i celle du nb de lignes à dupliquer de « Bdd ») et bien je ne comprends pas pourquoi ds ce bout de code on ne va que jusqu’à la colonne 10 (Absence), je quitte cette boucle tjs à 10 !!! peut-être à cause de la dimension ou Redimention du tableau Rcd ???

routine

Bref où se trouve mon erreur et sûrement incompréhension ? pourrais-je avoir de l’aide car je suis à 2 doigts d’y arriver et ça me rendrait service pour l’utilisation de données supplémentaires ds « Bdd » ds ma gestion des Vcs et Récup, etc..

J’espère avoir été claire ds mes explications. Sinon à dispo pour plus d’info et précision.

Merci encore pour votre éclairage, j’en ai besoin

Bonne soirée.

Gaëlle

Bonjour à tous :

@Gaëlle : OULA!!!! DON'T TOUCH "Select_Db"!!! NEVER !!! Crazy Gawelle!! NEVER EVER!!!

Besoin d'ajouter une 11ème colonne de donnée =>

  • module "Accueil" au tout début => Public Const C_Bdd = 11 ' au lieu de = 10
  • module "Sql" au tout début => Public Const Tbl_Bdd = "[Bdd$A:K]" ' au lieu de = "[Bdd$A:J]"

* validation si chevauchement => n'est demandée QUE SI chevauchement.
Maintenant à quoi ça sert de dupliquer une semaine si la semaine "cible" est déjà remplie???
Cette logique m'échappe! Il me semblait que ce contrôle ne sert que si 1 ou 2 rdv ont éventuellement été saisis à l'avance.

@leakim : j'ai rapidement regardé ta 1ère demande, mais j'avoue que je ne suis pas inspiré par ton projet ... (et j'en ai pas trop le temps en ce moment)

Là dessus après avoir déjeuné devant l'ordi le sandwich d'une main et la souris de l'autre, j'y retourne...

Pierre

@leakim : j'ai rapidement regardé ta 1ère demande, mais j'avoue que je ne suis pas inspiré par ton projet ... (et j'en ai pas trop le temps en ce moment)

Là dessus après avoir déjeuné devant l'ordi le sandwich d'une main et la souris de l'autre, j'y retourne...

Pierre

Je prends !

Merci d'avance.

@leakim : A l'évidence, je me suis mal fait comprendre. Je voulais dire que je retournais ... à mes activités, et là je rentre juste de ma journée. [mode MyLife=off]
Je ne vais pas donner suite à ta demande, à c't'heure j'en ai plus le courage.
Est-ce que j'ai été plus clair?
Pierre

Bonsoir @Pierrre,

Ok I'll no longer touch this procedure "Select_Db" again.

Je testerai la solution communiquée.

Sur le 2ème point :

* validation si chevauchement => n'est demandée QUE SI chevauchement.

Maintenant à quoi ça sert de dupliquer une semaine si la semaine "cible" est déjà remplie???

Cette logique m'échappe! Il me semblait que ce contrôle ne sert que si 1 ou 2 rdv ont éventuellement été saisis à l'avance.

Je suis d'accord que ça ne sert à rien de dupliquer une semaine si la semaine "cible" est déjà remplie mais je parle de duplication par erreur car on n'a qu'une fenêtre de vue qui est la semaine donc les erreurs sont possibles

Ce que je veux dire c'est que l'on peut se tromper (ça m'est arrivé plusieurs fois) et avoir dupliqué toute une semaine sur une ou des semaines futures (+1,2,3,4) Sauf qu'on l'a oublié et que si on revient sur des semaines antérieures et que l'on duplique à nouveau on crée des items en doubles ds "Bdd" et il y a superposition d’activités sur les plannings.

Je suis désolée mais à moins de n'avoir pas tout compris ,ds ce cas, même s'il ne s'agit que de 2 mises à jour, on passe quand même en revue chaque activité de toute la semaine pour déterminer si on garde la source ou la cible, donc ds le cas donné en exemple ds mon précédent message 70 validations à faire.

Il faudrait pouvoir montrer que les différences et demander si on souhaite faire la MAJ et pour tout ce qui est identique ne pas écraser (ou écraser ce qui revient au même) ou un truc ds ce genre là. Mais ce n'est sûrement pas facile à faire et ds ce cas la solution proposée ira bien il suffira de faire attention.

Bonne soirée,

Gaëlle

Bonsoir,

Ok, oui c'est limpide et je t'en remercie.

Belle continuation,

Leakim

Bonjour à tous,

@Gaëlle : ok je comprends mieux.
Alors ce qu'on peut faire c'est afficher un message indiquant le nb d'événements existants sur la semaine cible (si>0) et demander confirmation

Pour upgrader une version déjà utilisée, copier/coller les quelques lignes au début de la procédure "Dupliquer" (module "Accueil")

Bonne soirée
Pierre

Bonsoir @Pierre,

merci pour ce bout de code qui fait gagner du temps si on ne souhaite pas modifier. C'est déjà ça. Je redoute quand même le jour où je voudrais modifier 1 ou 2 activités, le fait de passer en revue toutes les activités pour lesquelles je ne fais aucune modif. En moyenne 70 clics à faire.

Cela dit l'application commence vraiment à être très sympa et ce, grâce aux talents de programmation et de créativité pour trouver des solutions du grand Maître Pierre.

Vraiment merci pour l'astuce du UserForm Usf_Cpte qui permet d'avoir la vision du nb de personnes par tranche horaire. Super

Juste une remarque, j'ai noté que souvent quand je clique sur une journée avec des activités renseignées apparaît le UserForm mais sans décompte à l'intérieur des cases. Il suffit de cliquer sur l'onglet "Individuel" de revenir sur "Global" puis cliquer à nouveau sur la journée en question pour que le décompte se fasse bien. J'ai tenté un "Actualiser tout" mais rien y fait. Je dois faire ce que j'ai décrit juste avant. Bizarre !!!

Encore merci et bonne soirée

Gaëlle

Bonjour à tous,

@Gaëlle-testeur-officiel : encore bien vu! Alors voici la version du jour =>

  • détail pour un "bon" décompte corrigé (une simple initialisation oubliée)
  • fonction dupliquer => ignore les événements strictement équivalents en 'personne+début+fin' (adieu les 70 clics ... je ne saurais être responsable de tendinite d'index des utilisateurs)

Pierre

Bjr @Pierre,

eh oui la testeur (euse ) officiel(le) est de retour. Merci Pierrepour la modif je vais tester. Merci pour les tendinites de l'index auxquelles j’échappe. Pour upgrader une version déjà utilisée j'ai pu (je pense ) localiser le bout de code de "Dupliquer" à ajouter sur la version déjà utilisée.

En revanche où se trouve précisément le code (initialisation oubliée) pour le décompte corrigé je souhaite faire la même chose et ajouter ce code sur la version utilisée ?

détail pour un "bon" décompte corrigé (une simple initialisation oubliée)

Merci encore

Gaëlle

Ah oui, au début de la fonction T_Cpte_J du module "Sql", il suffit d'ajouter une ligne, un mot, très simple : Init_Sql avant la 1ere boucle for, c'est tout

Pierre

...

Je me permets donc de vous demander une énième amélioration de l'un de vos plannings très récemment mis à jour, à savoir le classeur "Activités-10juil2020.xlsm", que je trouve plutôt réussi, intuitif et convivial.

Mais pour moi, il manque cruellement un affichage des "qualifications" (onglet "Cfg", colonne C), un peu comme les séries des classeurs "Congés_Plus_v1.2f.xlsm" ou encore "Planning_Activités_v1.2b.xlsm" ou l'on a le choix d'afficher soit les noms, soit les fonctions.

Ce serait génial de combiner ce visuel avec la possibilité de rajouter ou enlever des lignes(boutons + et -); une amélioration notoire.

...

Cordialement.

AL

Bonjour à tous,

Pour répondre au MP de AL (ci-dessus) voici la version du jour avec affichage des qualifications de chacun et filtre sur ces qualif.

demo activites qualif

Pour info : l'insertion d'une colonne d'affichage a conduit à modifier trop de détails dans le code, un upgrade d'une version antérieure est alors moins facile.

A noter : c'est encore une version de test, il y a des détails dont je ne suis pas encore sûr à 100%

Enfin, j'invite AL à poster ici ses futures remarques ou rapport d'erreur, ça peut servir à d'autres

Pierre

Rechercher des sujets similaires à "planning hebdomadaire vba"