XL 2019 Générer liste des jours de classe (L-M-J-V) en retirant vacances et jours fériés

FredMa

XLDnaute Nouveau
Bonjour,

Je cherche à générer la liste des jours de classes d'une année scolaire en retirant :
- les mercredis, samedis, dimanches,
- les jours de vacances,
- les jours fériés.
J'arrive avec la formule =SERIE.JOUR.OUVRE à exclure les we et jours fériés...
=SERIE.JOUR.OUVRE(B2;1;A2:A10)
ou la plage A2:A10 correspond à la liste des jours fériés.

Mercredi-Samedi-Dimanche : OU(JOURSEM(H3)=4;JOURSEM(H3)=7;JOURSEM(H3)=1)

Par contre, je ne vois pas comment exclure en plus les mercredis et zones de vacances.
J'avais pensé utiliser JOURSEM() et RECHERCHEV() mais je n'arrive à rien ;(

Un petit fichier pour être plus clair.

Merci de votre aide
Fred
 

Pièces jointes

  • Test.xlsx
    12 KB · Affichages: 14

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir FredMa,
Un essai en PJ en deux steps:
1- Liste globale des jours où on repère les jours à supprimer ( colonne G ) avec :
VB:
=SI(OU(SI(OU(JOURSEM(F2;2)=3;JOURSEM(F2;2)>=6;NB.SI($D$2:$D$32;F2)>0);1;0);SI(OU(ET(F2>=$B$2;F2<=$C$2);ET(F2>=$B$3;F2<=$C$3);ET(F2>=$B$4;F2<=$C$4);ET(F2>=$B$5;F2<=$C$5);ET(F2>=$B$6;F2<=$C$6);ET(F2>=$B$7;F2<=$C$7);ET(F2>=$B$8;F2<=$C$8));1;0))=FAUX;MAX($G$1:G1)+1;"")
2- La liste des jours de classe avec :
Code:
=SIERREUR(INDEX(F:F;EQUIV(LIGNE()-1;G:G;0));"")
 

Pièces jointes

  • Test (3).xlsx
    38.6 KB · Affichages: 3

ALS35

XLDnaute Occasionnel
Bonjour à tous,
Hello sylvanu,
Un essai en développant les listes des vacances scolaires (colonnes D à I) et en utilisant SERIE.JOUR.OUVRE.INTL en M3 :
VB:
=SERIE.JOUR.OUVRE.INTL(M2;1;"0010011";$D$2:$J$17)
et à recopier vers le bas
Cordialement
 

Pièces jointes

  • Test2.xlsx
    13.7 KB · Affichages: 6

FredMa

XLDnaute Nouveau
Merci à vous deux pour ces solutions !
Celle de Sylvanu me semble plus facile à utiliser car pas besoin de développer les listes des vacances.
En tout cas elle devrait plus facilement s'intégrer à ce que je veux faire :
 

FredMa

XLDnaute Nouveau
1- Liste globale des jours où on repère les jours à supprimer ( colonne G ) avec :
VB:
=SI(OU(SI(OU(JOURSEM(F2;2)=3;JOURSEM(F2;2)>=6;NB.SI($D$2:$D$32;F2)>0);1;0);SI(OU(ET(F2>=$B$2;F2<=$C$2);ET(F2>=$B$3;F2<=$C$3);ET(F2>=$B$4;F2<=$C$4);ET(F2>=$B$5;F2<=$C$5);ET(F2>=$B$6;F2<=$C$6);ET(F2>=$B$7;F2<=$C$7);ET(F2>=$B$8;F2<=$C$8));1;0))=FAUX;MAX($G$1:G1)+1;"")
Le test de l'encadrement des vacances se fait ligne à ligne dans ta proposition :
ET(F2>=$B$2;F2<=$C$2)
ET(F2>=$B$3;F2<=$C$3)
ET(F2>=$B$4;F2<=$C$4)
or, ce nombre de lignes peut être important (dates sur plusieurs années) car fichier ical importé.
Y a pas moyen de faire une cherche récurrente jusqu'à trouver une ligne vide (fin des données) ?

Fred
 

Pièces jointes

  • Test4.xlsx
    38.7 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Un essai en PJ. Le nombre de jours fériés, et le nombre de plage de vacances ne sont plus limités.
J'ai conservé le planning global et le planning des jours de classe. Cela permet une vérification.
Le planning est reconstruit par appui sur le bouton.
 

Pièces jointes

  • Test (V2).xlsm
    55.1 KB · Affichages: 5

FredMa

XLDnaute Nouveau
Merci Sylvanu... Je vais essayer de comprendre ta macro.
Cerise sur le gâteau, il faudrait que je puisse définir la valeur la première journée de classe en fonction de l'année scolaire choisie (dans la cellule L2).
La valeur JoursTravail(1, 1) serait alors recherchée sur la ligne "Vacances d'Été (prérentrée Enseignants )" de l'année choisie... Ou alors en 2 étapes pour n'extraire que les dates de vacances correspondant à l'année scolaire choisie.
 

Pièces jointes

  • Test (V2).xlsm
    54.6 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Voir PJ.
Attention au piège. Avec l'import la chaine "Vacances d'Été (prérentrée Enseignants )" est suivi d'un "caractère parasite" qui est CHR(13) ( retour à la ligne ), je m'en suis débarrassé avec :
VB:
If Mid(PlanningVac(i, 1), 1, 40) = TagDébut Then
 

Pièces jointes

  • Test (V3).xlsm
    27.5 KB · Affichages: 4

FredMa

XLDnaute Nouveau
C'est top !
A voir s'il serait possible dans cette macro :
1- de prendre en compte le pont de l'ascension : l'ascension est toujours un jeudi, il faudrait donc supprimer le vendredi d'après. Pas évident ?
2- afficher les jours de classe avec découpage par semaine et période.
(un test dans la macro ConstruitCalendrier pour ajouter une ligne Période x dès que l'on est en fin de vacances ?)
3- regrouper les jours de classe par semaine : pas facile car ne commence pas toujours par un lundi et ne finit pas toujours par un vendredi
4- voir comment afficher les dates de vacances début (colonne B) et reprise des cours (colonne C+1) de l'année scolaire (le point 2 permet peut-être de mettre dans des variables le début et la fin de chaque période et de les exploiter pour le point 4)
- lancer la macro ConstruirePlanning lors du changement d'année : modification de la valeur de la variable An.
(lancement de la macro lors du clic sur le module de contrôle ?)
Voici mes modifs.

Fred
 

Pièces jointes

  • Test4.xlsm
    166.8 KB · Affichages: 12

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 232
Membres
103 161
dernier inscrit
Rogombe bryan