Remplissage d'une grille d'emploi du temps
Bonjour à tous
je n'arrive pas à trouver sur le net, que ce soit sur des forums ou sur des tutos, quelque chose qui ressemble au problème que j'essaie de résoudre :
Je souhaite remplir une grille d'emploi du temps pour un petit collège selon le modèle ci-joint : le tableau est à triple entrée (en colonne les jours, en ligne les classes, et chaque bloc de 8 cases représente les 8 créneaux horaires de la journée, une ligne matin, une ligne après-midi). L'idée est de savoir si Excel est capable de remplir, en respectant certaines contraintes, les 180 cellules de ce tableau avec 180 cellules prédéfinies qui correspondent chacune à une heure de cours pour un prof X dans une classe Y (parmi les 6 classes). Très concrètement, je fais pour le moment cela à la main, en patafixant des petits papiers sur un grand tableau cartonné au mur, et à force d'essayer plein de possibilités, on finit par trouver une solution qui répond aux contraintes, mais après beaucoup de stress et de cerveaux qui fument. Je me dis que l'informatique pourrait certainement nous aider.
Les contraintes sont multiples : parfois il y a des blocs de 2 ou 3 cellules inséparables, des créneaux horaires sur lesquels certaines classes travaillent ensemble en "modules" (donc des cellules nécessairement égales d'une classe à l'autre), des cellules sur lesquelles 2 enseignants sont couplés sur des demi-groupes, il y a des demi-journées ou tel ou tel enseignant ne doit pas être présent, et surtout il faut s'assurer qu'un enseignant ne soit pas à deux endroits en même temps (sauf sur les modules).
En gros, c'est un peu comme un sudoku géant, mais en plus complexe...
Sachant que le fonctionnement de notre établissement est différent des collèges classiques, et que les logiciels d'EDT classiques ne parviennent pas à prendre en charge nos emplois du temps.
Je ne sais pas si j'ai été très clair, désolé...
Avant de rentrer dans les détails des contraintes, j'aimerais déjà savoir si Excel pourrait aider sur ce genre de problèmes, ou si je ne tape pas du tout à la bonne porte.
Merci beaucoup par avance à ceux qui sauraient me conseiller.
Bonsoir,
je me permet de vous orienter vers une application de h2so4 ici.
C'est une application de planning avec astreintes !
Il est encore actif au niveau du site (modérateur), si vous avez des questions il pourra peut-être vous renseigner, pour cela ouvrez un sujet au sujet de son planning en mettant son pseudo dans le titre par exemple. Mieux vaut peut-être éviter les MP
@ bientôt
LouReeD
Merci du tuyau ! J'ai répondu sur le sujet qu'il avait ouvert à propos de son application.
Merci beaucoup
Pourquoi est-ce supprimé ?
re,
je suppose que vous utiliserez l'app de h2so4, donc je me mets en pause.
Ah d'accord ! Je lui ai écrit sur le fil de discussion de son application, pour le moment pas de réponse, je reviendrai vers vous si jamais je dois chercher d'autres pistes. Merci !
juste curiosité ...
pouvez-vous déjà donner les constraintes ? Par exemple, le nombre d'heures par professeur par classe par semaine
Merci de votre intérêt.
En fait c'est variable, cela peut aller de 1 à 4 par classe, mais il y a aussi des heures de demi-groupes, des modules (mélange de niveaux 6è/5è, 5è/4è, etc.) impliquant 4 profs en même temps, des créneaux de 3h impliquant deux profs en même temps, .... Beaucoup d'originalités qui déconcertent un peu les logiciels d'EDT classiques. Alors qu'en fait, ce n'est qu'une permutation de 180 cellules pleines dans 180 cellules vides, mais parmi les 180! permutations possibles, il y a une majorité de solutions impossibles, car les contraintes font qu'énormément de possibilités sont éliminées d'office.
L'idée est que 180 cellules (qui peuvent être remplies dans un onglet) doivent être dispatchées dans les 180 cellules du tableau vierge, mais selon certaines contraintes. Les cellules ressemblent à : "Mr X 6è" , "Mme Y 5è1", etc. Donc le nombre d'heures par prof et par classe est donné par les cellules prédéfinies dans l'onglet contenant tous les " petits papiers à patafixer sur le grand tableau" dans ce que nous faisons à la main.
Pour donner toutes les contraintes précisément, il faudrait beaucoup d'explications, beaucoup d'allers retours, d'essais / erreurs, avec des contraintes qui apparaitraient surement au fur et à mesure, et c'est pour cela que je me disais qu'il était plus judicieux de voir déjà si ce type de problème était résolvable par Excel.
Je précise d'ailleurs que c'est vous @BsAlv qui avez travaillé (avec @Optimix) sur mon autre problème l'année dernière, et que je suis toujours impressionné par la puissance de votre programme ! Je m'en suis servi cette année encore à la rentrée, une solution parfaite a été trouvée en un clic ! Donc je vous remercie encore une fois grandement !!
re,
je vois que h2so4 est abscent depuis quelque jours, donc ici un essai.
Feuille "parametres", on a ces tableaux avec les noms de classes, des professeurs et puis le nombre d'heures par professeur par classe.
Puis on a ces 3 plages avec calculations, de nouveau le nombre d'heures par professeur par classe comme dans le tableau, puis le nombre d'heures déjà assignées dans le planning (de la feuille suivante) et le solde de ces heures, qui devrait être 0 t certainement pas négatif.
Feuille "Planning", on a ce plage avec ce "grille fixe", donc les heures libres (=X) mais par exemple aussi des heures que vous bloquez déjà pour certains professeurs. Je suppose que vous pouvez y mettre votre combinaisons spéciales là-dedans, par exemple. Puis vous lancez la macro et vous attendez le résultat.
J'ai pour le moment un exemple avec le "prof3" le lundi matin première heure présent dans 3 classes en même temps. Dans la plage D32:U41, on compte les doublons des professeurs, normallement des infractions, mais comme celles sont obligatoires, c'est permis.
Vous voyez pour les moment aussi que quelque profs sont souslignés, parce qu'ils ont 2 heures consécutives. Je ne sais pas si cela est un désavantage ? Mais comme vous ditez qu'un prof n'a que 3-4 heures, vous aurez moins de cette sorte de situations.
Que pensez-vous ?
C'est plus facile de fixer vos combinaisons spéciales dans ce grille et puis de remplir les trous.
Bonsoir
Bravo et merci infiniment !
Je vais certainement mettre du temps à vous répondre car je vais prendre le temps de comprendre ce "premier jet", qui comporte déjà plein de choses super intéressantes, et je vais taper sur excel l'emploi du temps de cette année pour pouvoir vous faire comprendre toutes les particularités, et voir s'il est possible de paramétrer toutes ces contraintes.
Je reviens vers vous !
Merci mille fois.
Bonjour !
J'ai pris le temps de mettre en forme sur Excel l'emploi du temps que nous avons obtenu cette année après bien des noeuds au cerveau, et qui fonctionne. Vous le trouverez ci-joint, et il vous permettra de comprendre un peu mieux toutes les particularités.
J’ai un peu modifié la grille en 8 classes au lieu de 6. Ma grille ne contenait que 6 lignes car en fait les deux 6è ne sont que deux « demi-groupes » d’une même classe, de même pour les 4è, mais je pense que pour l’algorithme, cela revient au même que si ce sont deux classes distinctes, donc ce sera sûrement plus simple de présenter cela en 8 lignes. Suivant les niveaux de classe (et ce ne sont pas toujours les mêmes d’une année sur l’autre), le niveau entier se réunit pour le projet, la LV2 et pour certaines matières (par exemple Prof1, Prof4 et Prof8 prennent les 6è au complet sur certaines heures, ce qui explique qu’ils apparaissent deux fois sur le même créneau horaire).
Comme vous pouvez le constater, il y a quelques trous en 6è et en 5è. Les trous de fin ou début de journée ne posent aucun problème. Seul le trou en H6 nous a embêtés mais nous n’avons pas réussi à faire mieux, et nous y avons casé une heure de soutien, ce qui finalement convient tout à fait. C’est donc un cas de figure pas idéal mais acceptable.
Vous voyez également les « modules » qui synchronisent 4 profs (voire 5), et deux niveaux de classe (pour le module CM2/6è, la 4è prof est une enseignante de primaire qui n’intervient pas dans le reste de l’EDT c’est pour cela que je n’en ai mis que 3). Il y a également les « projets » qui regroupent tous les enfants d’un même niveau de classe, et font intervenir 2 profs. Il en est de même pour la LV2. Enfin, petite particularité en cellule L15 et L17, car les 3è ont ces deux enseignants une semaine sur deux (une semaine Prof4 en 3è1 et Prof8 en 3è2, et la semaine suivante le contraire), ces deux cellules doivent donc nécessairement être sur le même créneau horaire.
L’idée générale du programme, s’il est réalisable, est donc de placer toutes ces cellules « en vrac » dans un onglet (elles varient d’une année à l’autre, donc je remets à jour à chaque début d’année cette base), et de renseigner les contraintes dans un autre onglet pour qu’Excel dispatche toutes les cellules correctement dans la grille. Mais comment exprimer ces contraintes à Excel pour qu’il « comprenne » ?
L’idéal serait d’avoir toutes les grilles « gagnantes » pour pouvoir garder la meilleure en fonction de contraintes que l’on n’aurait pas forcément su spécifier dans le programme.
Lorsque nous travaillons à la main, nous plaçons toujours les créneaux du Prof11 en premier (c’est le prof d’EPS et ses créneaux sont donnés par les installations de la ville).
La LV2 est également fixée au départ (car ces profs sont sur deux établissements), mais tout de même mobile sur leurs demi-journées quant à l’ordre des classes et éventuellement possibilité d’une heure de trou.
Ensuite, nous plaçons les modules et les projets.
Puis tout le reste.
Les contraintes principales sont qu’il n’y ait pas trop d’heures de trous pour les profs, et surtout qu’il n’y ait pas d’heures de trou pour les enfants. Egalement, les enseignants demandent à ne pas être en cours sur telles ou telles demi-journées. Il faut pouvoir spécifier « tel prof ne doit pas être sur telles cellules » ou « tel prof doit nécessairement être uniquement sur telles cellules ».
Egalement, une particularité un peu plus embêtante : Prof 2 et Prof10 enseignent chacun deux disciplines (Prof2 musique et SVT, et Prof10 Physique et Informatique). Et la physique et la SVT ne peuvent pas avoir lieu en même temps car ils utilisent la même salle de sciences. Pensez-vous qu'il faille spécifier cela au programme, ou que c'est le genre de contraintes qu'on éliminerait "à la main" lorsqu'on obtiendrait plusieurs grilles gagnantes à trier... ?
Votre idée était excellente de placer d’abord « à la main » certaines contraintes imposées. Peut-être peut-on envisager de faire avancer le programme par étapes pour voir d’abord toutes les possibilités avec LV2, Prof11, Projets, Modules, puis lancer le reste ?
N’hésitez pas à me dire si mon projet vous semble irréalisable, ou si je n'ai pas été clair…
Merci infiniment si jamais vous prenez le temps de vous pencher dessus !
re,
juste pour m'amuser, j'ai essayé à remplir une grille comme le vôtre avec ses données. Pour le moment, sans efforts spéciaux, j réussis à assigner la majorité des profs.
dans le tableau de la feuille "BDD", les lignes noires sont fixe (voir colonne priorite), puis on a les combinaisons (Comb et Child) dont on utilise les "Comb" et les "children" suivent. Et puis on a les leçons "Free". La macro arrête entre chaque catégorie de leçons.
Vous pouvez utiliser le raccoursi "CTRL+MAJ+P"
Impressionnant !!
J'ai pris le temps de comprendre votre tableau BDD, qui est déjà bien complexe...
J'ai compris Fix, Free, Comb et Child.
J'ai tenté de mettre sur "Fix" toutes les heures du Prof11, mais une fois la macro lancée, les cellules correspondantes du Prof 11 ne se sont pas pour autant fixées dans la grille...Et dans la feuille BDD toutes les petites flèches en haut des colonnes qui permettaient de sélectionner les valeurs dans chaque colonne ont disparu ... bizarre. Et de plus, le tableau de droite listant les heures Fix est resté inchangé, et enfin les Comb et les Child ont disparu, et les Fix que je venais de rajouter sont repassées en Free...
J'ai également essayé de mettre les 2 heures Prof4/Prof8 de 3è en Comb et child, mais ça n'a pas non plus fonctionné... (ces deux heures doivent nécessairement être sur le même créneau...)
De plus, pour le moment, il y a des profs non assignés, mais j'imagine que c'est parce que c'est un premier jet, le programme doit sans doute être affiné...
J'ai quelques questions :
- pourrait-il y avoir un onglet où on listerait en début d'année toutes les "cases" sans les mettre en face d'un jour ou d'une heure spécifique ? Du moins pour toutes les heures Free...
- est-ce que les heures Fix de module ou projet qui vont par 2 ou par 3 pourraient être rendues Free mais rester quand même groupées ? (afin d'essayer en début d'année différentes dispositions pour les modules et les projets...)
- Y a t il une possibilité de spécifier « tel prof ne doit pas être sur telles cellules » ou « tel prof doit nécessairement être uniquement sur telles cellules » ? (c'est à dire des Free mais qui seraient "free" uniquement sur certaines cellules spécifiées...). Par exemple, sur un onglet avec une grille vierge, est-ce qu'on pourrait cocher par exemple Prof1 et sélectionner les cellules où il peut (ou ne peut pas) être affecté, et de même pour les autres profs ? A vrai dire, nous, quand on le fait à la main, on se fixe le fait que chaque enseignant doit avoir au minimum 2 demi-journées sans cours, mais ça me parait peut-être complexe de le spécifier au programme de cette manière...
Au vu de ce que vous avez déjà réussi à produire sur un premier jet, je suis vraiment très impressionné !! J'espère que vous serez d'accord pour continuer d'affiner ce projet avec moi...
Je vous remercie infiniment du temps que vous y avez consacré, et que vous pourriez encore y consacrer !!
Bonne soirée !
re,
il y a qulque part une toute petite faute avec de concéquences ..., donc pour le moment, je n'y arrive pas.J'ai trop de trous.
La semaine prochaine ....
Avez-vous une grille plus réaliste ?
re, maintenant je vérifie sur la page "BDD" à partir de la colonne T le nombre des profs
Bonjour
merci pour vos réponses, désolé je n'avais pas accès à internet ce week-end.
Je vais regarder votre nouveau fichier, merci beaucoup !!
Qu'entendez-vous par "une grille plus réaliste" ? La grille que je vous ai envoyée est la grille réelle de l'année, et malheureusement, elle n'est pas plus simple les autres années, les contraintes sont telles que je l'ai écrit, et il y en a même davantage, mais qui peuvent peut-être être triées "à la main" ensuite...A voir en fonction de la difficulté, je ne me rends pas trop compte de ce qui serait programmable ou pas dans les contraintes que j'ai écrites.
Avec ce fichier, je peux changer les Fix, Comb, Child, et faire tourner la macro pour changer la grille en fonction de cela ?
Merci encore !!
Pardon j'ai répondu avant d'ouvrir le fichier mais je vois qu'il a déjà bien changé !!
Quelle complexité, c'est impressionnant.
J'essaie de comprendre, mais il y a énormément de choses dans ce fichier...
Je vois qu'il y a un onglet paramètres, c'est peut-être celui-ci qui permettra d'imposer que tel prof n'est pas présent sur telle demi-journée ? (si on distingue les demi-journées au lieu des journées complètes...)
Sur quelles grilles puis-je essayer de modifier des paramètres pour faire tourner la macro et voir ce que ça donne ? J'ai l'impression que l'utilisateur doit agir sur la grille "a faire", mais pas sur les deux autres de l'onglet BDD c'est bien ça ? Et on peut aussi agir sur l'onglet paramètres je pense. Et l'onglet Aux est modifiable ou il vient juste en réponse après la macro ?
Autre petite question : que signifie local x ?
Une petite erreur que je n'arrive pas à comprendre : il y a des heures en 4è qui sont apparues sur le samedi après midi, alors que dans la grille "à faire" il y a bien écrit en Fix ces heures-là avec X. Voyez-vous d'où vient le problème ?
Et j'y pense à l'instant en m'inspirant de votre travail : je pense qu'il serait très utile de créer une grille à double entrée dans l'onglet BDD, avec en lignes les profs et le combinaisons de profs, et en colonnes les classes 6è, 6è1, 6è2, 5è, 5è1, etc... où il apparaitrait dans chaque cellule le nombre d'heures correspondantes ? Cela serait surement beaucoup plus simple pour vous. Puis-je la rajouter à droite dans l'onglet BDD et vous renvoyer le fichier ? (un peu à l'image de votre grille la plus à droite dans BDD, mais non pas avec les jours, mais avec les relations profs/classes). Qu'en pensez-vous ?
Merci beaucoup !!
re,
- cet après-midi, je vous fournis un fichier avec ces demi-journées.
- la "feuil1", c'est votre schéma et les données du tableau à gauche (colonns A:H) sont dérivées de ce shéma, mais en jouant avec ma macro,je suppose que ce n'est plus 100% correct. Vous voyez là que vous pouvez ajouter de lignes avec la matière (math, français, anglais, ... au lieu de leçonxxx) , la classe (ou combinaison), le(s) prof(s), le local (votre "local X" si nécessaire, si c'est un local spécifique pour cette leçon), et si c'est fixé à tel ou tel heure, "FIX" et le jour + heure et la durée (en heures, normallement 1). "X" est pour vos cellules noires . Pour ls heures "Free" (si vous proposez un autre nom, je suis preneur), les cellules jours et heures seront vides. (la macro ne les regarde pas).
- Si vous lancez la macro, le résultat sera dans la feuille "planning" et les détails sront dans l'autre tableau de "BDD", colonnes M:S et un résumé dans les colonnes U:BS.
- Ce problème du samedi, c'est quelle leçon, le problème c'est que chaque fois on lance la macro, on aura une autre solution.
- ce grille à double entrée, vous pouvez me l'envoyer, ce sera peut-être intéressant pour vérifier si la solution est correcte.
PS. la macro vérifie les erreurs pour les leçons "FREE", donc les leçons "FIX" ne sont pas vérifiées.