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 =...

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir @chich
En regardant le nombre de vues (74 jusqu'à présent) et le nombre de réponses (0), je me dis qu'il y a un problème, pas toi ?
J'ai regardé ton fichier, et les formules qu'il contient, ça manque vraiment d'explications.
Peux-tu mieux expliciter ton besoin, avec des phrases simples, plutôt que de nous laisser nous plonger dans des formules illisibles ?
Je veux bien essayer de t'aider, mais fais un effort pour exprimer ton besoin.
Bon courage
 

chich

XLDnaute Occasionnel
Bonjour,
J'espère être suffisamment explicite .
En B9 il y a la formule qui récupère les dates des périodes d'absentéismes dans les plages
_ B13:AE13 et B20:AE20 pour le motif de l'absence en A13
_ B14:AE14 et B21:AE21 pour le motif de l'absence en A14
_ B15:AE15 et B22:AE22 pour le motif de l'absence en A15
_ B16:AE16 et B23:AE23 pour le motif de l'absence en A16
_ B17:AE17 et B24:AE24 pour le motif de l'absence en A17
_ B18:AE18 et B25:AE25 pour le motif de l'absence en A18

pour le collaborateur en A9 si la date en B1 et incluse dans l'une des périodes d'absentéismes
et cette formule est copier dans les cellules de B9a AP9.

En B10 il y a la formule qui récupère les dates des périodes d'absentéismes dans les plages
_ B27:AE27 et B34:AE34 pour le motif de l'absence en A13
_ B28:AE28 et B35:AE35 pour le motif de l'absence en A14
_ B29:AE29 et B36:AE36 pour le motif de l'absence en A15
_ B30:AE30 et B37:AE37 pour le motif de l'absence en A16
_ B31:AE31 et B38:AE38 pour le motif de l'absence en A17
_ B32:AE32 et B39:AE39 pour le motif de l'absence en A18

pour le collaborateur en A10 si la date en B1 et incluse dans l'une des périodes d'absentéismes
et cette formule est copier dans les cellules de B10a AP10.

En B11 il y a la formule qui récupère les dates des périodes d'absentéismes dans les plages
_ B41:AE41 et B48:AE48 pour le motif de l'absence en A13
_ B42:AE42 et B49:AE49 pour le motif de l'absence en A14
_ B43:AE43 et B50:AE50 pour le motif de l'absence en A15
_ B44:AE44 et B51:AE51 pour le motif de l'absence en A16
_ B45:AE45 et B52:AE52 pour le motif de l'absence en A17
_ B46:AE46 et B53:AE53 pour le motif de l'absence en A18

pour le collaborateur en A11 si la date en B1 et incluse dans l'une des périodes d'absentéismes
et cette formule est copier dans les cellules de B11a AP11.

En B11 il y a la formule qui recherche les motif d'absentéismes dans la plage B6;B8 pour chaque
collaborateur A6;A8 pour le jour en B1 et faire un toure de responsable d'astreinte sur septe jours si
le collaborateur na pas de motif d'absence et en fonction du nombre collaborateurs qui peuvent être responsable en A6
et cette formule est copier dans les cellules de B6a AP6.
merci d'avance bien cordialement
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

En B9 il y a la formule qui récupère les dates des périodes d'absentéismes dans les plages
_ B13:AE13 et B20:AE20 pour le motif de l'absence en A13
_ B14:AE14 et B21:AE21 pour le motif de l'absence en A14
_ B15:AE15 et B22:AE22 pour le motif de l'absence en A15
_ B16:AE16 et B23:AE23 pour le motif de l'absence en A16
_ B17:AE17 et B24:AE24 pour le motif de l'absence en A17
_ B18:AE18 et B25:AE25 pour le motif de l'absence en A18

pour le collaborateur en A9 si la date en B1 et incluse dans l'une des périodes d'absentéismes
et cette formule est copier dans les cellules de B9a AP9.
Je crois bien que ta formule actuelle ne s'arrête pas à A18, mais va jusqu'à A25, si j'en crois cette capture d'écran.
Capture2023-03-30_06-18-16.png

Code:
=SI(OU(ET(B$1>=$B13;B$1<=$E13);ET(B$1>=$G13;B$1<=$J13);ET(B$1>=$L13;B$1<=$O13);ET(B$1>=$Q13;B$1<=$T13);ET(B$1>=$V13;B$1<=$Y13);ET(B$1>=$AA13;B$1<=$AD13));$A$13;SI(OU(ET(B$1>=$B14;B$1<=$E14);ET(B$1>=$G14;B$1<=$J14);ET(B$1>=$L14;B$1<=$O14);ET(B$1>=$Q14;B$1<=$T14);ET(B$1>=$V14;B$1<=$Y14);ET(B$1>=$AA14;B$1<=$AD14));$A$14;SI(OU(ET(B$1>=$B15;B$1<=$E15);ET(B$1>=$G15;B$1<=$J15);ET(B$1>=$L15;B$1<=$O15);ET(B$1>=$Q15;B$1<=$T15);ET(B$1>=$V15;B$1<=$Y15);ET(B$1>=$AA15;B$1<=$AD15));$A$15;SI(OU(ET(B$1>=$B16;B$1<=$E16);ET(B$1>=$G16;B$1<=$J16);ET(B$1>=$L16;B$1<=$O16);ET(B$1>=$Q16;B$1<=$T16);ET(B$1>=$V16;B$1<=$Y16);ET(B$1>=$AA16;B$1<=$AD16));$A$16;SI(OU(ET(B$1>=$B17;B$1<=$E17);ET(B$1>=$G17;B$1<=$J17);ET(B$1>=$L17;B$1<=$O17);ET(B$1>=$Q17;B$1<=$T17);ET(B$1>=$V17;B$1<=$Y17);ET(B$1>=$AA17;B$1<=$AD17));$A$17;SI(OU(ET(B$1>=$B18;B$1<=$E18);ET(B$1>=$G18;B$1<=$J18);ET(B$1>=$L18;B$1<=$O18);ET(B$1>=$Q18;B$1<=$T18);ET(B$1>=$V18;B$1<=$Y18);ET(B$1>=$AA18;B$1<=$AD18));$A$18;SI(OU(ET(B$1>=$B20;B$1<=$E20);ET(B$1>=$G20;B$1<=$J20);ET(B$1>=$L20;B$1<=$O20);ET(B$1>=$Q20;B$1<=$T20);ET(B$1>=$V20;B$1<=$Y20);ET(B$1>=$AA20;B$1<=$AD20));$A$20;SI(OU(ET(B$1>=$B21;B$1<=$E21);ET(B$1>=$G21;B$1<=$J21);ET(B$1>=$L21;B$1<=$O21);ET(B$1>=$Q21;B$1<=$T21);ET(B$1>=$V21;B$1<=$Y21);ET(B$1>=$AA21;B$1<=$AD21));$A$21;SI(OU(ET(B$1>=$B22;B$1<=$E22);ET(B$1>=$G22;B$1<=$J22);ET(B$1>=$L22;B$1<=$O22);ET(B$1>=$Q22;B$1<=$T22);ET(B$1>=$V22;B$1<=$Y22);ET(B$1>=$AA22;B$1<=$AD22));$A$22;SI(OU(ET(B$1>=$B23;B$1<=$E23);ET(B$1>=$G23;B$1<=$J23);ET(B$1>=$L23;B$1<=$O23);ET(B$1>=$Q23;B$1<=$T23);ET(B$1>=$V23;B$1<=$Y23);ET(B$1>=$AA23;B$1<=$AD23));$A$23;SI(OU(ET(B$1>=$B24;B$1<=$E24);ET(B$1>=$G24;B$1<=$J24);ET(B$1>=$L24;B$1<=$O24);ET(B$1>=$Q24;B$1<=$T24);ET(B$1>=$V24;B$1<=$Y24);ET(B$1>=$AA24;B$1<=$AD24));$A$24;SI(OU(ET(B$1>=$B25;B$1<=$E25);ET(B$1>=$G25;B$1<=$J25);ET(B$1>=$L25;B$1<=$O25);ET(B$1>=$Q25;B$1<=$T25);ET(B$1>=$V25;B$1<=$Y25);ET(B$1>=$AA25;B$1<=$AD25));$A$25;""))))))))))))
C'est la première fois que je vois une formule comme ça !

Excel n'arrive même pas à colorier (mettre en évidence) les cellules utilisées dans la formule. :oops:
A moins que ce soit juste mon bon vieux PC qui sature ???
 
Dernière édition:

chich

XLDnaute Occasionnel
Bonjour,


Je crois bien que ta formule actuelle ne s'arrête pas à A18, mais va jusqu'à A25, si j'en crois cette capture d'écran.
Regarde la pièce jointe 1167103

Code:
=SI(OU(ET(B$1>=$B13;B$1<=$E13);ET(B$1>=$G13;B$1<=$J13);ET(B$1>=$L13;B$1<=$O13);ET(B$1>=$Q13;B$1<=$T13);ET(B$1>=$V13;B$1<=$Y13);ET(B$1>=$AA13;B$1<=$AD13));$A$13;SI(OU(ET(B$1>=$B14;B$1<=$E14);ET(B$1>=$G14;B$1<=$J14);ET(B$1>=$L14;B$1<=$O14);ET(B$1>=$Q14;B$1<=$T14);ET(B$1>=$V14;B$1<=$Y14);ET(B$1>=$AA14;B$1<=$AD14));$A$14;SI(OU(ET(B$1>=$B15;B$1<=$E15);ET(B$1>=$G15;B$1<=$J15);ET(B$1>=$L15;B$1<=$O15);ET(B$1>=$Q15;B$1<=$T15);ET(B$1>=$V15;B$1<=$Y15);ET(B$1>=$AA15;B$1<=$AD15));$A$15;SI(OU(ET(B$1>=$B16;B$1<=$E16);ET(B$1>=$G16;B$1<=$J16);ET(B$1>=$L16;B$1<=$O16);ET(B$1>=$Q16;B$1<=$T16);ET(B$1>=$V16;B$1<=$Y16);ET(B$1>=$AA16;B$1<=$AD16));$A$16;SI(OU(ET(B$1>=$B17;B$1<=$E17);ET(B$1>=$G17;B$1<=$J17);ET(B$1>=$L17;B$1<=$O17);ET(B$1>=$Q17;B$1<=$T17);ET(B$1>=$V17;B$1<=$Y17);ET(B$1>=$AA17;B$1<=$AD17));$A$17;SI(OU(ET(B$1>=$B18;B$1<=$E18);ET(B$1>=$G18;B$1<=$J18);ET(B$1>=$L18;B$1<=$O18);ET(B$1>=$Q18;B$1<=$T18);ET(B$1>=$V18;B$1<=$Y18);ET(B$1>=$AA18;B$1<=$AD18));$A$18;SI(OU(ET(B$1>=$B20;B$1<=$E20);ET(B$1>=$G20;B$1<=$J20);ET(B$1>=$L20;B$1<=$O20);ET(B$1>=$Q20;B$1<=$T20);ET(B$1>=$V20;B$1<=$Y20);ET(B$1>=$AA20;B$1<=$AD20));$A$20;SI(OU(ET(B$1>=$B21;B$1<=$E21);ET(B$1>=$G21;B$1<=$J21);ET(B$1>=$L21;B$1<=$O21);ET(B$1>=$Q21;B$1<=$T21);ET(B$1>=$V21;B$1<=$Y21);ET(B$1>=$AA21;B$1<=$AD21));$A$21;SI(OU(ET(B$1>=$B22;B$1<=$E22);ET(B$1>=$G22;B$1<=$J22);ET(B$1>=$L22;B$1<=$O22);ET(B$1>=$Q22;B$1<=$T22);ET(B$1>=$V22;B$1<=$Y22);ET(B$1>=$AA22;B$1<=$AD22));$A$22;SI(OU(ET(B$1>=$B23;B$1<=$E23);ET(B$1>=$G23;B$1<=$J23);ET(B$1>=$L23;B$1<=$O23);ET(B$1>=$Q23;B$1<=$T23);ET(B$1>=$V23;B$1<=$Y23);ET(B$1>=$AA23;B$1<=$AD23));$A$23;SI(OU(ET(B$1>=$B24;B$1<=$E24);ET(B$1>=$G24;B$1<=$J24);ET(B$1>=$L24;B$1<=$O24);ET(B$1>=$Q24;B$1<=$T24);ET(B$1>=$V24;B$1<=$Y24);ET(B$1>=$AA24;B$1<=$AD24));$A$24;SI(OU(ET(B$1>=$B25;B$1<=$E25);ET(B$1>=$G25;B$1<=$J25);ET(B$1>=$L25;B$1<=$O25);ET(B$1>=$Q25;B$1<=$T25);ET(B$1>=$V25;B$1<=$Y25);ET(B$1>=$AA25;B$1<=$AD25));$A$25;""))))))))))))
C'est la première fois que je vois une formule comme ça !

Excel n'arrive même pas à colorier (mettre en évidence) les cellules utilisées dans la formule. :oops:
A moins que ce soit juste mon bon vieux PC qui sature ???
Bonjour et merci pour ton interet
oui je te confirme la formule va jusqu'à A25 et je comprend que tu sois surpris par ma formule j'ai fais comme j'ai pu mais ca fonctionne
et les mises formes conditionnels fonctionne chez moi
 

chich

XLDnaute Occasionnel
Bonjour à toutes & à tous,
bonjour @chich
Merci pour tes éclaircissements.
Est-ce que je laisse la main à @TooFatBoy ou est-ce que je me penche sur ton problème ?
Tiens-tu à la façon dont tu saisis les absences ? Car ce serait plus simple avec une liste collaborateur, début et fin d'absence, motif ...
A bientôt
Re
Oui j'y tiens car j'y suis habituai mais je suis curieux et ouvert a toutes optimisation
Si tu veux bien te penché sur mon problème merci d'avance
A bientôt
 

Efgé

XLDnaute Barbatruc
Bonjour à tous et toutes
Est-ce que je laisse la main à @TooFatBoy ou est-ce que je me penche sur ton problème ?
Rien que cette remarque est une négation du principe d'XLD.
Les multiples interventions sur un fil peuvent, et souvent réussissent, à trouver de nouvelles idées...

C'est pour ce genre de réaction , et pour une certaine suffisance d'autres participants, que je me retire du forum.

A+ à toutes et tous...

Cordialement
 

TooFatBoy

XLDnaute Barbatruc
Les multiples interventions sur un fil peuvent, et souvent réussissent, à trouver de nouvelles idées...
Chacun a sa façon personnelle de voir les choses.

Certains ne veulent pas travailler pour rien, donc refusent de faire une proposition s'il y a déjà quelqu'un qui aide le demandeur.
D'autres au contraire prennent une autre proposition que la leur comme un affront.

Les deux visions me semblent respectables.
 

Discussions similaires

Statistiques des forums

Discussions
312 076
Messages
2 085 084
Membres
102 772
dernier inscrit
bluetesteur