Microsoft 365 Gérer automatiquement vacances et jours fériés fiches horaire

pamonnier

XLDnaute Junior
Bonjour,

Je bloque sur la possibilité d'importer et d'intégrer mon tableau de vacances dans mes formules. Je vais essayer de lister ce que j'essaie de faire si on peut m'aider
Le but est d'automatiser la feuille pour les personnes n'ayant pas ou peu de connaissances excel

- Aller chercher le planning des vacances scolaire de la zone A (j'ai créé une nouvelle feuille mais à chaque fois que j'ouvre il me demande la confirmation de téléchargement des données via l'adresse web que j'ai utilisée)
-Donc supprimer la demande de confirmation de connexion à la BDD éduc nat et mettre à jours la BDD des vacs scolaires en arrière plan
- Aller chercher les jours fériés de l'années de la feuille

- Ces 2 données doivent pouvoir être intégrées dans ma formule qui va chercher quelle semaine nous sommes (paire/impaire) / si on est en vacances / si c'est un jour férié / importer les horaires fixes de la page paramètres "10 jours travaillés à renseigner / importer les horaires théoriques .

Voici ma belle formule dans laquelle il faut que je rajoute (modifie) pour intégrer les vacances / Jours fériés

=SIERREUR(SI(EST.IMPAIR(NO.SEMAINE.ISO($A6));(SIERREUR(RECHERCHEX($A6;Paramètres!$A$18:$A$98;Paramètres!B$18:B$98;(RECHERCHEX($A6;Vacances!$A$1:$A$298;Vacances!$B$1:$B$298;SI(RECHERCHEX($B6;Paramètres!$A$2:$A$6;Paramètres!B$2:B$6;0;0;1)=0;"";RECHERCHEX($B6;Paramètres!$A$2:$A$6;Paramètres!B$2:B$6;0;0;1));0;1)));0));(SI(EST.PAIR(NO.SEMAINE.ISO($A6));(SIERREUR(RECHERCHEX($A6;Vacances!$A$1:$A$298;Vacances!$B$1:$B$298;SI(RECHERCHEX($B6;Paramètres!$I$2:$I$6;Paramètres!J$2:J$6;0;0;1)=0;"";RECHERCHEX($B6;Paramètres!$I$2:$I$6;Paramètres!J$2:J$6;0;0;1));0;1);0));"")));"")

je voulais faire avec ça mais ça ne peut pas se faire sur un tableau complet
=SI(ET(F2>=B4;F2<=C4);"Vacances"; "NON")
Je vous partage le fichier en question.

@p56 si jamais ....

Merci d'avance
 

Pièces jointes

  • Fiches Horaires Mai 2022 Avril 2023.xlsm
    134.5 KB · Affichages: 36
Dernière édition:
Solution
Ok pas de pb c'est facile, version du jour avec :

* calendrier vacances "élèves"

* un simple V sur le cadre des vacances avec clic=>intitulé des vacances

* "roulement" de 1 à 4 semaines, c'est même extrêmement simple :
- 4 grilles de 1 à 4 à remplir ou non (on laisse le choix)
- le code prendra en compte 1 2 3 ou 4 semaines en fonction de ce qui est rempli (exemple dans le fichier du jour 3 grilles complétées => roulement de 3 semaines)

pamonnier

XLDnaute Junior
Merci pour ce retour, effectivement c'est pour ça que je pose la question de ne pas rentrer dans une surcharge mais que cette feuille puisse convenir aux différents fonctionnements (si possible)....

Peut on voir pour un point je ne me rends pas compte de la difficulté.
Pour les vacances
-Certains professionnels on 10 jours imposés à faire (demande initiale) qui fonctionne parfaitement !!!!
-Certains ont une semaine à faire mais peuvent poser des RTT..... Le RTT peut être mis dans motif en effaçant le réalisé.
-et le dernier cas de figure d'un service ouvert tout le temps (toujours au moins une personne sur site la journée sur les 2 semaines de vacs) sauf les 2 semaines des vacs noel et environ entre mi-juillet et mi aout.

Je pensais à quelque chose du style :
"si vacances : première semaine travaillée et mettre horaire théorique mais si tableau 10 jours (ou +) spécifique renseigné ne prendre en compte que ces valeurs"

Pour le 3eme cas de figure ......

Ensuite quand on clic sur le mois ça génère le théorique et le théorique réalisé mais si une personne s'est trompée dans son théorique on ne peut plus modifier ces heures qui sont fixes dans la feuille data.

Car il y a ce cas de figure et quand le planning théorique va être actualisé pour un nouveau vers septembre/octobre de l'année suivante il faudra penser à actualiser le théorique avant de générer la feuille octobre par exemple.

Si on modifie les 10 jours imposés après la génération de la première qui sera concernées j'ai bien vu que ça fonctionnait.

Et pour ma question de mettre les vacances et jours fériés sur une page cachées plutôt que sur la droite des feuilles ?
 

pamonnier

XLDnaute Junior
Bonsoir,
Je cherche à identifier la variable qui empêche de remplir automatiquement le théorique ou manuellement sur des vacances scolaires j'ai beau relire je ne l'identifie pas... comme ça j'ai Théo 5 qui reste prioritaire et le reste est rempli par du prévisionnel

Edit: J'ai trouvé ce qui détermine le remplissage maintenant je regarde pour que la zone de dessins reste mais que le prévisionnel s'affiche et Théo (5) prioritaire

La colonne A je vois que les "." font références à la période de vacances donc si j'enlève ceci
VB:
.Range("A" & lg + 5).Value = "."
J'ai bien le prévisio sur les vacs mais plus les horaires imposés qui se trouvent dans le tableau appelé en vba parr Théo 5
je galère avec le fonctionnement car si je comprends bien il fait appel à 2 choses dans le vba Sub Remplir_Prev(Optional x As Byte) et Sub Dessin_ScolR(Optional x As Byte)

Merci
 
Dernière édition:

p56

XLDnaute Occasionnel
Oulà!
La question n'est pas ici dans une variable ni même dans les lignes de code mais dans l'algorithme lui-même.
Reprenons la métaphore précédente :
th.jpg

Décodage : cet entrepreneur a voulu acheter une camionnette pour faire du transport.
Il cherche à placer des charges disproportionnées par rapport à la capacité de sa camionnette => il cours tout droit vers la catastrophe.

En fait il serait mieux pour lui et la sécurité de tous :
* soit de limiter ses transports à des charges prévues pour sa camionnette,
* soit d'acheter un camion à plus grande capacité.

Pour vous, votre choix du moment est équivalent :
* soit vous utilisez le fichier pour ce qu'il a été prévu, strictement.
* soit vous écrivez un tout nouveau fichier en suivant un tout nouvel algorithme pour prendre en compte vos nouveaux besoins. En bref, un camion plus grand (prendre des sangles plus larges n'améliorera pas la tenue de route)

Mon conseil : vous vouliez prendre des cours de programmation, je vous suggère de commencer par prendre des cours d'algorithmique avant de partir dans des projets "ambitieux"
 

pamonnier

XLDnaute Junior
Oulà!
La question n'est pas ici dans une variable ni même dans les lignes de code mais dans l'algorithme lui-même.
Reprenons la métaphore précédente :
Regarde la pièce jointe 1155982
Décodage : cet entrepreneur a voulu acheter une camionnette pour faire du transport.
Il cherche à placer des charges disproportionnées par rapport à la capacité de sa camionnette => il cours tout droit vers la catastrophe.

En fait il serait mieux pour lui et la sécurité de tous :
* soit de limiter ses transports à des charges prévues pour sa camionnette,
* soit d'acheter un camion à plus grande capacité.

Pour vous, votre choix du moment est équivalent :
* soit vous utilisez le fichier pour ce qu'il a été prévu, strictement.
* soit vous écrivez un tout nouveau fichier en suivant un tout nouvel algorithme pour prendre en compte vos nouveaux besoins. En bref, un camion plus grand (prendre des sangles plus larges n'améliorera pas la tenue de route)

Mon conseil : vous vouliez prendre des cours de programmation, je vous suggère de commencer par prendre des cours d'algorithmique avant de partir dans des projets "ambitieux"

Bonjour,

Oui je comprends bien et je me rends compte que de mon projet initial d'avoir une feuille personnel pour mon suivi horaires on est passé par un intérêt venant des collègues sur cette utilisation automatisée.
Et donc on est sorti de mon champ de compétence quand je suis passé de ma feuille excel, avec des formules que je peux gérer modifier ou demander de l'aide facilement, à votre outils, qui est très performant, mais moins accessible pour ma part.

Ceci-dit je pense avoir modifié ce que je souhaite dans le code sans forcément respecter les règles.... J'ai effectivement dans l'idée de me documenter sur le fonctionnement du vba.
J'ai bien conscience que le code a été écrit pour un objectif précis avec un cahier des charges défini je ne pensais pas que j'allais être sollicité pour une utilisation plus étendue....

à vouloir rendre service on se piège....
 
Dernière édition:

pamonnier

XLDnaute Junior
Bonjour,

Je n'arrive pas à solutionner un petit souci. Il y a une erreur (ou je n'ai pas anticipé cette éventualité) si une personne ne travaille pas le lundi matin de la Semaine 1. Il me mets impossible de diviser par 0 et ne reporte pas le prévisionnelle.
Et si une personne sur sa semaine 2/3 ou 4 ne travaille pas le lundi matin ou journée ce sont que les horaires de la semaine 1 qui sont reportés. RAS si un autre jours n'est pas travaillé.
Donc dans le VBA si je comprends le fonctionnement on regarde si le lundi matin est travaillé pour reporter les horaires ?

L'erreur de deboggage me montre cette ligne donc le mod pour la division
Th = ((WorksheetFunction.IsoWeekNum(.Cells(lg, "B").Value) - 1) Mod md) + 1

Merci
 

p56

XLDnaute Occasionnel
Encore un cas non précisé initialement dans le cahier des charges ... et impossible à deviner à l'avance ...
Pour des semaines avec des horaires "manquants", saisir un espace simple à la place pour ne pas laisser la cellule totalement vide.
 

pamonnier

XLDnaute Junior
Bonsoir,
Effectivement ce n'était pas dit de façon explicite mais quand on parle de planning prévisionnel il me semblait que tous les cas de figures pouvaient apparaitre: une journée, une matinée ou un après midi non travaillé.

Bref je ne pensais pas que ça bougerait tout le code et que ça dérangerait.


Merci pour la réponse je vais essayer de trouver une solution du type vba si les autres cellules sont remplies mettre 00:00 dans les cellules vides
bonne soirée
 
Dernière édition:

pamonnier

XLDnaute Junior
Bonsoir @p56 Juste pour info j'ai vu (je pense) un petit beug dans une formule pour le cumul global sur le mois de décembre .
=SOMME.SI.ENS(Tdata[Total jours Réalisés];Tdata[Date];"<1/"&$C$3+1&"/"&$C$2)

Effectivement je pense que le C3+1 génère 13donc 01/13/2022 ce qui pose un souci dans le calcul

Je tente une correction mais non fonctionnelle
=SOMME.SI.ENS(Tdata[Total jours Réalisés];Tdata[Date];"<MOIS.DECALER(B5;1)")
La formule Mois.decaler tout seul m'emmène bien au 01/01/2023
Je n'arrive pas à l'intégrer dans somme.si.ens

Si quelqu'un a une idée
 

Discussions similaires