Excel VBA - Aide Planning

Bonsoir à tous,

Etant novice en Excel je galère, j'ai besoin de vos lumières.

J'ai fais un planning Excel que je vous met en pj.
il y a un onglet pour chaque mois et un onglet ADMIN
le calendrier et automatique ainsi que les noms pas de soucis.

Je cherche à automatiser certaines taches:

je souhaite dans l'exemple onglet JAN, utiliser un usform (que j'ai crée mais qui ne fonctionne pas), avec un choix de jours de télétravail, je souhaite que l'utilisateur de l'équipe prérempli son tableau en fonction du choix.
exemple: il sélectionne son nom dans une liste afin d'identifier le nom (colonne B) dans la feuille ADMIN, il choisi la journée et en validant cela remplira dans la même
feuille ADMIN la colonne D correspondant au nom saisie précédemment.

ensuite je sais pas si c'est réalisable avec le nom et la journée je souhaite que sur toute les feuilles a la ligne correspondant au nom et la journée inscrire dans les cellules "TLT" (exemple : mettre "TLT" dans toute les cellules correspondant à Nom = AA MARI , journée = mercredi)

Cela est il réalisable ? je trouve pas et ca fais un moment je cherche
un grand merci par avance à celui qui pourra m'aider ou m'aiguiller.

Bonjour,

Des plannings, ici on sait faire. Ce que vous demandez est probablement faisable. Questions :

  • un gars fixe son jour TLT le jeudi => quelle est la règle à appliquer quand un jeudi est férié? (11nov par exemple)
  • et est-ce que votre entreprise a des périodes de congés fixes pour tous (genre noël, mois d'août, ...)

Si personne ne répond avant, je pourrais probablement vous faire une proposition dans la journée ou demain.

Pierre

Re-Bonjour,

Alors voici déjà un essai. Je me suis permis de faire des modifs à partir du fichier proposé.

demo tlt

Descriptif en qqs points :

  • il n'y a plus qu'une seule feuille pour le planning, c'est bien suffisant et ça allège.
  • sur cet onglet, il y a 12 pseudo onglets pour les 12 mois de l'année
  • le jour TLT peut se choisir soit directement dans "ADMIN" colonne D via liste déroulante, soit via l'userform.
  • ce jour est indiqué sur le planning depuis la date d'aujourd'hui jusqu'à la fin de l'année en cours.
  • la mention "TLT" ne s'enregistre pas sur les jours fériés
  • les info s'enregistrent dans la feuille "Bdd" masquée
  • le bouton "Réinitialiser" est fonctionnel, une confirmation est demandée. Rq : ne pas hésiter à faire régulièrement des copies de sauvegarde ...
  • il n'y a plus de cellules fusionnées (à éviter autant que possible)
  • les formules ont été simplifiées, tant pour les calculs mensuels que pour le bilan annuel
  • Je n'ai rien fait pour la colonne "nb de jours TLT restants" : quel est le calcul souhaité? il y a un forfait annuel?
  • avec mes tests, ça me semble fonctionnel, mais il reste probablement des défauts => à tester avant utilisation dans la vraie vie.

Souhaitant que ce début convienne

Pierre

155planing-tlt.xlsm (70.22 Ko)

Re

Alors il y avait 2 détails qui me gênaient => donc corrigés dans cette version "b" :

  • temps de traitement lors de l'enregistrement des TLT => largement accéléré
  • liste des noms dans l'userform => affichage uniquement des gars qui n'ont pas encore choisi de jour de TLT (pour éviter qu'un gars puisse avoir plus d'1j/s de TLT)

Pierre

46planing-tlt-b.xlsm (69.32 Ko)

Bonsoir,

je viens de voir est de faire des tests c'est nettement plus fonctionnel et c'est effectivement ça que je voulais .

c'est parfait!

concernant la colonne "nb de jours TLT restants", le but étant d'indiquer sur une année le solde restants en fonction des jours non pris exemple j'ai choisi ma journée TLT le vendredi, je prend en novembre tout mes vendredi en congé "C" du coup il me restera 4 jours a positionner manuellement ailleurs (lundi ou mercredi)

du coup est il possible d'avoir également un useform afin d'indiquer les périodes de congés en remplissage automatique "C" (en excluant les week-end, jours feriés et jour de recup )?

Mais vraiment un grand merci.

j'ai fais quelques test

la modification de l'année dans la feuille admin ne fonctionne plus.

du coup vue que c'est sauvegarder sur une BDD , est il possible de conserver l'historique sur 2ans ou cela va t'il ralentir le chargement ? et en fonction de l'année remettre les stats a jours sur la synthèse annuels ?

concernant le userfom sur le choix jours TLT, le première utilisateur "AA MARI" reste toujours même ayant une journée déjà défini.

Ok, pour le compte des TLT restants je pense avoir compris.

Sinon voici des corrections =>

  • l'année se change automatiquement via la "toupie" de la feuille "Planning" en haut à gauche
  • liste choix TLT => corrigé
demo tlt 3
  • Pour les congés, voici ce que je propose : on sélectionne directement sur le planning sur une ligne une période de temps avec ou sans week-end.
  • Les "C" sont positionnés sur les jours de semaine et au cas ou un TLT est indiqué la case "TLT restant" à droite est incrémentée (il s'agit là du cumul annuel depuis la réinitialisation des données)
demo tlt 2

Pour l'utilisation, faudra voir à l'usage. S'il y a des ralentissements, une réinitialisation annuelle s'imposera.

Pierre

54planing-tlt-c.xlsm (80.21 Ko)

Ok parfait pour la fonction des congés.

Concernant la case "nb de jours TLT restants" est il possible d'inclure les jours qui n'ont pu être pris car jours férié ou recup . dans le même fonctionnement que les congés. et après c'est parfait .

j'ai vue il y a une case bouton1 sur la feuille admin, elle donne rien ?

merci encore

Bonjour CrissR,

Alors pour ce matin une version avec qq modifs :

  • suppression du "bouton1" inutile (il m'avait juste servi à faire des tests de calculs)
  • la case "TLT restants" inclus les jours si férié ou récup
  • la case "TLT restants" est décrémentée si saisie "manuelle" d'un TLT hors jour programmé
  • la case "TLT restants" n'est pas effacée lors de la réinitialisation des données pour garder le compte restant d'une année sur l'autre ( donc à effacer manuellement si besoin)
  • + qq corrections de code

Avec cette version, on devrait pas être loin de la mise en production, non?

Pierre

34planing-tlt-d.xlsm (78.50 Ko)

Bonsoir Pierrep56,

Effectivement je viens de voir les dernières modifications nous arrivons sur la fin.

Une dernière précisions , j'ai vue qu'il y a un "debogage" lorsque l'on fait glissé pour mettre les congés et que ca déborde sur le tableau synthèse a droite.

d'ailleurs ma question est la suivant n'est il pas possible de protéger la feuille le classeur tout en pouvant continuer de l'alimenté.

Ou mieux sur la feuille ADMIN il y a une colonne "Nom PC" je voulais mettre le nom des utilisateurs et en fonction je voulais utiliser une formule nom=envion("username") et si ca correspond au nom d'une personne dans la liste de l'identifier directement au lieu d'une liste déroulante dans l'usform "choix jours TLT" , mais aussi afin de bloquer la saisie sur le tableau en dehors de la ligne correspondante, afin de limité les erreurs de saisies(en gros protéger le classeur et si le nom correspond libérer la ligne du nom et faire une sorte de surbrillance sur l'identification de la personne) et si le nom ne correspond pas de laisser l'accès que en consultation pas en saisie.

Bonjour CrissR,

Alors au chapitre "sécurité", dans la version du jour plusieurs points :

  • blocage saisie si sélection "hors limites" du mois en cours
  • saisie uniquement sur ligne correspondant à son "Username" indiqué en colonne C de ADMIN
  • userform TLT directement avec le nom correspondant à son "Username" (il n'y a plus de liste de choix)
  • userform TLT ne s'ouvre plus si le choix est déjà fait (avec message d'info)
  • onglet "ADMIN" masqué. Pour l'afficher clic droit sur l'onglet "Planning", menu "Afficher"
  • onglet "BDD" sur-masqué : n'apparait plus dans la liste de ce menu "Afficher"

Pour afficher l'onglet "BDD" :

  • ouvrir la fenêtre du code
  • module "Graphe", tout à la fin, remplacer les 2 valeurs par true
  • revenir sur le planning
  • afficher l'onglet "ADMIN", puis revenir sur "Planning"

Pour remettre cette protection, remettre les 2 valeurs à xlHidden ou à xlVeryHidden comme c'est le mieux pour vous

Autre protection supplémentaire possible par dessus celle-ci : verrouillage du code dans la fenêtre du code :

"Outils/Propriété de VBA Project", onglet "Protection", et mettre un mot de passe de votre choix pour l'affichage des propriétés du projet

De cette façon il sera plus difficile à l'utilisateur mal intentionné de faire de la bidouille dans le code.

Malgré tout on évitera jamais les mauvaises manip non voulues donc comme toujours la bonne pratique c'est la sauvegarde régulière du fichier (mensuelle ou même hebdo) sur une clé USB ou autre support de votre choix.

Il me semble qu'avec tout ça il y a élastique, ceinture et bretelles!

Et je pourrais pas être tenu comme responsable de vos conflits sociaux relatifs au temps de travail!

Pierre

27planing-tlt-e.xlsm (75.60 Ko)

Bonjour ,

je viens de tester c'est vraiment bien ! un grand merci

j'ai juste encore quelques soucis, si aucun nom d'utilisateur ne correspond il y un débogage lorsque l'on choisi le jours tlt dans le choix, est il possible d'éviter le debogage, mettre une info "choix impossible utilisateur non identifié" (normalement chaque personne qui utilisera le fichier sera identifié, mais sait-on jamais)

et aussi bloquer la saisie du fichier si non identifié, si c'est possible.

par ailleurs j'ai essayé de protéger la feuille excel concernant les colonnes A et de AK à AQ, (avec les formules NOM et les méthode de calculs pour éviter une erreur de suppression) mais ensuite si je bloque la macro ne fonctionne plus y' a t'il une solution ?

merci encore pour votre temps.

Parfait.

Alors version "f" avec 2 protections supplémentaires :

  • si utilisateur non référencé, il ne pourra pas ouvrir l'usf
  • et pour les autres : feuille protégée sauf la zone des jours

NB : ici la feuille est protégée sans mot de passe. Si vous voulez ajouter un mdp, il sera nécessaire de l'indiquer dans le code à plusieurs endroits : à chaque ligne avec .protect ou .unprotect vous ajoutez à la suite Password:="MDP" avec le MDP de votre choix après avoir déprotégé puis re-protégé la feuille avec ce même MDP

+ protection "pas-de-bras-pas-de-chocolat" :

A l'ouverture du fichier un message l'alarme s'affichera probablement avec menace de fermeture :

  • validez sans peur ... la fermeture automatique n'est pas encore activée
  • allez dans "ADMIN" et renseigner votre environ("username") en C
  • ensuite allez dans le module "ThisWorkbook" et décocher la ligne 'ThisWorkbook.Close

/!\ PRUDENCE : à la prochaine utilisation si aucun "username" n'est correct, on ne pourra plus accéder au fichier ... (ni moi non plus...)

=> donc sauvegarde sans et sauvegarde avec, au cas où

Mais résultat : si utilisateur non référencé, il ne pourra pas ouvrir le fichier

Pour ma part, je n'aime pas trop ces contraintes car en cas de bug, y'en a qui ont eu des problèmes ...

A tester encore

Pierre

35planing-tlt-f.xlsm (80.76 Ko)

Re bonjour,

top niveau protection sans nécessité de mettre la fermeture automatique si utilisateur non reconnu.

je viens de faire d'autres tests, si je complète mes conges avant le choix du TLT, celui ci supprime le congé et le remplace par TLT.

et au niveau du compteur jours restant TLT si je m'amuse a faire sur une même case je met un "TLT" puis encore TLT sur la meme case ... le compteur jours restant TLT le prend en compte et le cumul comme une nouvelle journée TLT.

j'ai fais une modif aussi en mettant la date du jours au 01/01/2021 afin de faire une simulation complète du positionnements des cases TLT, je crois il ne prend pas en compte le vendredi 1er janvier en journée tlt restant.

Et après tout ca je pense tout sera bon

Oui, mais ... la logique est qu'en début d'année on fixe les jours TLT (ici depuis la date d'aujourd'hui jusqu'à la fin d'année civile), et seulement dans un second temps on indique ses vacances.

Et n'oubliez pas qu'en cas d'erreur de saisie, vous avez toujours la possibilité d'afficher l'onglet "Bdd" pour corriger des données obsolètes.

Sinon voici une version "g" :

  • suppression sécurité à l'ouverture (bon choix)
  • 2 fois TLT => ok corrigé
  • de mon côté : simulation avec date du jour au 1/01/2021, TLT les vendredi => les jours TLT s'affichent sur tous les vendredi de 2021 sauf 3 :
  • vendredi 1 janv 2021 car férié
  • vendredi 7 mai 2021 car "récup"
  • vendredi 24 dec 2021 car "récup"

et dans la case "nb jours TLT restants " s'affiche 3 , soit comportement conforme à ce que j'ai compris de la demande, mais j'ai peut être mal compris?

Et n'oubliez pas qu'en cas d'erreur, vous pouvez toujours déprotéger la feuille pour une saisie "à la main" (et en passant en mode "création")

Pour en revenir au 1er point, on pourrait probablement envisager le cas où des congés (ou autre info) soient indiqués avant les TLT. Mais je ne suis pas chaud car probablement complexe à coder avec source d'instabilité potentielle si on a oublié un cas de figure. Je suggère de s'en tenir à fixer TLT puis congés si vous êtes ok.

Souhaitant que ça convienne

Pierre

35planing-tlt-g.xlsm (76.09 Ko)

Bonjour,

En voyant l'animation de pierrep56, je découvre le fil et ...inspiré d'ici --> https://www.excel-pratique.com/fr/telechargements/plannings/planning-conges-missions-no556

Transformé par pierrep56 comme il se doit !

Cordialement

OK pas de soucis effectivement saisir les congés après.

sinon pour le calcul jours TLT restant en prenant la date au 01/01/2021

férié = Vendredi 01 Janvier

Récup = vendredi 30 Avril , 7 mai , et 24 Décembre

du coup il m'affiche bien 3 au lieu de 4

Mais sinon c'est TOP merci encore pour votre aide

Got it!!

Erreur repérée, fixée en version "h" (1 cas de figure oublié). Bravo pour les tests!

@Dan => désolé je ne connaissais pas l'origine du fichier => ajout mention dans le code (module "Accueil")

48planing-tlt-h.xlsm (80.14 Ko)

Pierre

Bonjour à tous,

Hum, encore un défaut à corriger : dans le module "Accueil", procédure Sub Ajout_TLT il faut modifier la limite de la loop, soit :

Loop Until Year(dt) > Year(Date)

Pierre

@pierrep56 :

@Dan => désolé je ne connaissais pas l'origine du fichier => ajout mention dans le code (module "Accueil")

Aucun souci cela améliore le projet avec tes connaissances sur les plannings

Rechercher des sujets similaires à "vba aide planning"