XL 2019 Remplacer des formules par une macro

chich

XLDnaute Occasionnel
Bonjour a tous
Je cherche une macro pour faire le job de toutes les formules et les MFC de la feuil absence dans le fichier joint.
Merci d'avance
 

Pièces jointes

  • GESTABSENCE.xlsm
    44.1 KB · Affichages: 30
Solution
Bonjour à toutes et à tous, bonjour @chich

J'ai profité de ces 2 jours pour faire l'adaptation.
J'ai mis les 2 macros dans un module à part "Actions_Plgn_Hebdo" en laissant la mise à jour des dates et des N° de semaine dans "Worksheet_Change" (pas très cohérent tout ça mais ...)
J'ai commenté un max ...

Code pour la remise à zéro des planning :
VB:
'========================================
'Remise à zéro des plannings hebdomadaire
'========================================
Sub RàZ_SemPlgnHebdo()
    
'Mémorisation des états avant la procédure
     EtatEvénements = Application.EnableEvents
     EtatScreen =...

jm.andryszak

XLDnaute Occasionnel
Bonjour à tous, bonjour chich
Si j'ai bien compris on voudrait remplacer les formules et les MFC par des macros.
Travail fastidieux compte tenu de la complexité de certaines formules.

Si je devais le faire voilà comment je m'y prendrai, sachant qu'il faudrait optimiser le code.
Bon courage chich
Le fichier joint est juste pour donner des pistes, le code me semble bien commenté.
 

Pièces jointes

  • GESTABSENCE.xlsm
    69.4 KB · Affichages: 3

jm.andryszak

XLDnaute Occasionnel
Bonjour
J'ai regardé l'avancement mais je n'ai pas d'accès aux liaisons
nous n'avons pas le même office donc je n'ai pas par exemple la fonction isoWeekNum
Du coup, je ne peux guère tester et ne peut que donner mon impression.
Les 2 macros sont très complexes et difficile à comprendre.
Avec toutes ces déclarations de variables et de zones nommées, comment s'y retrouver, comment allez vous faire si vous voulez revenir sur le code
Je pense qu'i y a des simplifications à faire
Si ça vous intéresse en pj un moyen de mettre en place un calendrier, fonctionne avec selectionchange sur a1, a2 et a3, à adapter.

Sub LireAbsences()
31 variables !!
 

Pièces jointes

  • Classeur2.xlsm
    244.2 KB · Affichages: 2

chich

XLDnaute Occasionnel
Bonjour à toutes & à tous, bonjour @chich & @jm.andryszak
J'ai récupéré mon PC, j'ai une solution pour le planning hebdomadaire, il me reste la mise en forme (sans mise en forme conditionnelles pour rester dans l'esprit du fil).
Il y a un bug dans le planning des astreintes (sur les motifs d'absence)
Je regarde et j'envoie le fichier modifié.
À bientôt
Bonsoir à tous
super merci beaucoup AtTheOne
si possible un commentaire sur chaque ligne pour que je puisse comprendre et adapter si besoin.
 

chich

XLDnaute Occasionnel
Bonjour
J'ai regardé l'avancement mais je n'ai pas d'accès aux liaisons
nous n'avons pas le même office donc je n'ai pas par exemple la fonction isoWeekNum
Du coup, je ne peux guère tester et ne peut que donner mon impression.
Les 2 macros sont très complexes et difficile à comprendre.
Avec toutes ces déclarations de variables et de zones nommées, comment s'y retrouver, comment allez vous faire si vous voulez revenir sur le code
Je pense qu'i y a des simplifications à faire
Si ça vous intéresse en pj un moyen de mettre en place un calendrier, fonctionne avec selectionchange sur a1, a2 et a3, à adapter.

Sub LireAbsences()
31 variables !!
Bonsoir merci pour votre début de proposition très intéressante
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir à toutes et à tous, bonsoir @chich
Voici ce que j'ai pondu 🐣 🐔

en rappelant le contexte :
Bonjour a tous
Je cherche une macro pour faire le job de toutes les formules et les MFC de la feuil absence dans le fichier joint.
Merci d'avance
Donc pas de formules ni de MFC ...
Mais pas mal de noms définis et de lignes de code !

J'ai repris le planning des absences car il y avait un bug (oups ça arrive 🫣)
La macro n'affichait pas toujours le bon motif d'absence, et elle affichait les motifs d'absence les jours fériés et les jours de repos (là c'était normal, il n'y avait pas de jour de repos !)

Il faudrait en améliorer l'ergonomie car avec 15 collaborateurs on ne voit quasiment pas les plages pour poser les absences. J'ai mis un palliatif imparfait qui n'affiche que la plage de saisie du collaborateur sélectionné dans la partie haute du tableau. (voir la procédure Worksheet_SelectionChange). On pourrait aussi masquer dans le haut du tableau les collaborateurs non sélectionnés, en prévoyant un moyen pour les ré-afficher tous.
On pourrait aussi réduire la hauteur de la ligne affichant le nom des collaborateurs d'astreinte (en texte incliné) à une ligne, en fusionnant les cellules de chaque semaine de cette ligne et en n'écrivant qu'une seule fois pour la semaine le nom du collaborateur d'astreinte.
Le tour d'astreinte ne tient compte ni des jours fériés ni des jours de repos

Pour les plannings hebdomadaires, on ne peut choisir que l'année sélectionnée dans le planning des absences plus ou moins 1 an (les jours fériés ne sont calculés que sur cette plage).
Les motifs d'absence ne se superposent pas aux jours non travaillés (pas de congés, de formation etc les jours de repos ni les jours fériés)

J'ai abondamment commenter le code, si des bons samaritains se sentent le courage, ils peuvent le simplifier , je n'en prendrai pas ombrage.

A bientôt
Alain
Edit : orthographe !
 

Pièces jointes

  • GESTABSENCE AtTheOne V4 + Hebdo.xlsm
    126 KB · Affichages: 6
Dernière édition:

chich

XLDnaute Occasionnel
Bonsoir à toutes et à tous, bonsoir @chich
Voici ce que j'ai pondu 🐣 🐔

en rappelant le contexte :

Donc pas de formules ni de MFC ...
Mais pas mal de noms définis et de lignes de code !

J'ai repris le planning des absences car il y avait un bug (oups ça arrive 🫣)
La macro n'affichait pas toujours le bon motif d'absence, et elle afficher les motifs d'absence les jours fériés et les jours de repos (là c'était normal, il n'y avait pas de jour de repos !)

Il faudrait en améliorer l'ergonomie car avec 15 collaborateurs on ne voit quasiment pas les plages pour poser les absences. J'ai mis un palliatif imparfait qui n'affiche que la plage de saisie du collaborateur sélectionné dans la partie haute du tableau. (voir la procédure Worksheet_SelectionChange). On pourrait aussi masquer dans le haut du tableau les collaborateurs non sélectionnés, en prévoyant un moyen pour les ré-afficher tous.
On pourrait aussi réduire la hauteur de la ligne affichant le nom des collaborateurs d'astreinte (en texte incliné) à une ligne, en fusionnant les cellules de chaque semaine de cette ligne et en n'écrivant qu'une seule fois pour la semaine le nom du collaborateur d'astreinte.
Le tour d'astreinte ne tient compte ni des jours fériés ni des jours de repos

Pour les plannings hebdomadaires, on ne peut choisir que l'année sélectionnée dans le planning des absence plus ou moins 1 an (les jours fériés ne sont calculés que sur cette plage).
Les motifs d'absence ne se superpose pas aux jours non travaillés (pas de congés de formation etc les jour de repos ni les jours fériés)

J'ai abondamment commenter le code, si des bons samaritains se sentent le courage, ils peuvent le simplifier , je n'en prendrai pas ombrage.

A bientôt
Alain
Bonsoir AtTheOne merci beaucoup.
Encore une fois très bon travail je suis admiratif
y a juste un point auquel je tiens
je souhaite conserver l'architectures de la feuille Plag deux colonnes par jours du fichier démo fourni pour construire la feuille Plng Hebdo du fichier que tu propose. Car je veux calculer les heures.
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Re-bonsoir,

deux colonnes par jours du fichier
Car je veux calculer les heures.
Peux-tu expliciter un peu en donnant un exemple de tes calculs, j'hésite à modifier la macro.
Il faudrait fusionner les cellules contenant des absences et ne pas fusionner celles contenant un horaire.
Et pour tes calculs, vas-tu utiliser des formules contrairement au reste du projet ?
À bientôt
 

chich

XLDnaute Occasionnel
Re-bonsoir,



Peux-tu expliciter un peu en donnant un exemple de tes calculs, j'hésite à modifier la macro.
Il faudrait fusionner les cellules contenant des absences et ne pas fusionner celles contenant un horaire.
Et pour tes calculs, vas-tu utiliser des formules contrairement au reste du projet ?
À bientôt
Oui tu as bien compris c'est exactement ça fusionner les cellules contenant des absences et ne pas fusionner celles contenant des horaires
Pour les calculs je vais sûrement insérer des formules pour n'en conserves que les résultats
 

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @chich
Heu ... Tu ne donnes pas d'exemple de calcul à faire.
Je te propose cette nouvelle version, qui sans modifier la feuille "Plng Hebdo", te donne les heures de présence dans un tableau sur la feuille BdD.
Il te donne les dates, les N° de semaine, les collaborateurs, les heures d'arrivée et de départ et la durée de la présence.
Ce tableau sera plus facile à exploiter que la feuille "Plng Hebdo" avec des lignes de présentation et des cellules fusionnées ou non.

Je te laisse juge
A bientôt
 

Pièces jointes

  • GESTABSENCE AtTheOne V5.xlsm
    146.6 KB · Affichages: 3

chich

XLDnaute Occasionnel
Bonsoir à toutes & à tous, bonsoir @chich
Heu ... Tu ne donnes pas d'exemple de calcul à faire.
Je te propose cette nouvelle version, qui sans modifier la feuille "Plng Hebdo", te donne les heures de présence dans un tableau sur la feuille BdD.
Il te donne les dates, les N° de semaine, les collaborateurs, les heures d'arrivée et de départ et la durée de la présence.
Ce tableau sera plus facile à exploiter que la feuille "Plng Hebdo" avec des lignes de présentation et des cellules fusionnées ou non.

Je te laisse juge
A bientôt
Bonjour a tout le monde et merci pour votre intérêt pour mon sujet

AtTheOne

Désolé pour le manque de clarté ci joint un fichier dont je tiens à conserver la construction avec des (exemples) sur les 5 premiers collaborateurs de se que je souhaite pouvoirs faire et modifier manuellement les divers horaires.
Merci a bientôt
 

Pièces jointes

  • Prevision.xlsm
    35.3 KB · Affichages: 2
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm