Emploi du temps dynamique sous Sheets

Bonjour à tous,

Je travaille sur un outil d'emploi du temps de cours avec Gsheets.

Voici le fichier :

https://docs.google.com/spreadsheets/d/1YUpYZoz2k7Gnq9e2pjFJlVnV4G3eNTQvMQrmIpkbVRo/edit?usp=sharing (données fictives).

L'idée :

J'ai 1 onglet qui regroupe les matières et les professeurs : j'y mets le nom de mes matières et le professeur qui y est associé ainsi que son mail (un professeur peut être affecté à plusieurs matières).

Et 1 onglet pour mon emploi du temps : en colonne j'ai les jours (j'ai juste pris 1 semaine pour le test) en colonnes, et les heures de début en lignes. Chaque case = 1h de cours. Ensuite dans mes journées, avec une liste déroulante connectée aux matières de mon onglet 1, je choisis la matière heure par heure (pas possible de faire des blocs prédéfinis car je peux avoir des cours de 1h comme 4h, voire 8h).

Ce que je voudrais faire :

Sur mon 3ème onglet, j'ai mis en statique ce que j'aimerai récupérer. En fait, je veux avoir une liste complète des cours, des horaires, du total d'heures de cours et du professeur associé, comme ça je peux appliquer un filtre et envoyer un copier coller au professeur pour valider avec lui ses horaires.

Quelqu'un aurait une idée de comment faire ?

Merci beaucoup !

Bonjour Mathieu,

Voilà une première ébauche rapide :

https://docs.google.com/spreadsheets/d/1XMM9Wcb1zZvydkj8VP83lb72kqPq-HrVRHQNymnYui0/edit?usp=sharing

Il suffit de changer la date en "Ce que je veux générer" /G2 (double clic sur la cellule !)...

Cordialement,

Fil

Merci beaucoup @Filoche !

C'est super. Je teste là. Par contre il n'y a pas de moyen de récupérer la tranche horaire du cours ?
Aussi, dans mon exemple j'avais mis Lundi 16 Septembre uniquement, mais l'idée ce serait d'avoir la liste de tout le planning et toutes les dates. Possible d'ajuster la formule pour que ça prenne toutes les dates de l'emploi du temps ? (là pour l'exemple j'ai juste mis 1 semaine de cours mais en réalité ce sera sur toute l'année donc j'aurai une centaine de colonnes sur le premier onglet pour chaque journée de cours).

Sinon, si on est obligé d'avoir une cellule dans laquelle faire un choix de filtre (ici la date en G2), on pourrait pas peut être plutôt avoir le choix du professeur et paf, ça mets la liste de tous ses cours sur l'année ?

Je teste aussi de mon côté pour bien comprendre ta formule. Merci en tout cas !

PS : dans ton fichier, j'ai créé une plage nommée pour l'emploi du temps comme ça je peux l'agrandir sans avoir à retoucher à la formule query

J'ai revu un peu ma copie en fonction de tes souhaits...

Je n'ai pas trouvé de solution pour les plages; surtout qu'il peut y en avoir plusieurs disjointes pour un même professeur dans une journée.

https://docs.google.com/spreadsheets/d/11PS93M-6mxG6VCYI9rJpvscoLtzmgp2A3WOhlNDTBM0/edit?usp=sharing

C'est super. Merci beaucoup, je vais regarder en détail le fonctionnement mais à première vue c'est top. Sinon idée pour les plages horaires, est-ce qu'on a peut être moyen de récupérer la première heure associée au cours ? Comme ça on rajoute une colonne "horaire de fin" dans laquelle on ajoute l'heure de début et le nombre d'heures au pire.

J'ai vu un problème sur l'onglet de résultat, sur le tableau de gauche. Il y a des matières qui s'affichent mais auxquelles il n'y a aucune heure (normal puisqu'elles ne sont pas prévues sur les dates correspondantes).
Je pense comprendre, on dirait que le tableau de gauche reprend pour chacun des jours la totalité des cours, et si le cours est programmé, ça lui associe un nombre d'heure c'est ça ? Si c'est ça, ça va être problématique car là c'est un fichier de test, en réalité je vais avoir des dizaines de matières dans l'onglet "Matières et professeurs".

Dans l'absolu, possible de faire avec des plages nommées ? car je vais transposer tout ça dans plusieurs fichiers sheets de plusieurs classes.

Merci !

L'idée est de ramener les données dans un tableau facilement exploitable.

D'où le tableau de gauche.

Dans la version finale, il sera dans une feuille masquée et devra se générer automatiquement en fonction du planning et de la liste des professeurs.

Le tableau de droite sera dans une autre feuille et est une vision synthétique et filtrée du tableau de gauche...

Voilà une troisième version finalisée avec les plages horaires...

Les formules map + lambda étant gourmandes en ressources, tu pourras constater certaines lenteurs...

Appuie sur la touche F5 pour accélérer le processus !

https://docs.google.com/spreadsheets/d/1-lMgJx-c4bSZPnXI64yZPTagnVogk7OL7Xsx8co9wmQ/edit?usp=sharing

Super, un énorme merci !
J'ai testé une astuce, en colonne G et H, ou je récupère les horaires de la colonne B auquel je ne prends que les 5 premiers caractères pour convertir ensuite en TIMEVALUE + j'ajoute les 2h pour me donner l'heure de fin. C'est un peu brouillon mais du coup je récupère exactement les données que j'ai besoin de récupérer.

Petite question, comme j'ai beaucoup de mal à comprendre encore les Query, est-ce que je dois toucher à la formule (et si oui laquelle) en cas d'ajout de dates ou de cours ? (Après avoir fait quelques tests ça semble être très évolutif mais on sait jamais). Ou alors si tu peux me décortiquer ta formule/méthode pour que je sache bien aller dans le moteur en cas de problème, ce serait top !

Encore un immense merci

Pour l'ajout de cours, tu n'as rien à faire.

Les formules se développent automatiquement.

Il n'y a que pour la plage d'emploi du temps où tu dois modifier la borne finale ('Emploi du temps'!$B$1:$Z$1), mais tu peux utiliser une plage nommée...

J'ai ajouté les plages nommées.

Il faut simplement remplacer les bornes "Z" par leurs nouvelles valeurs.

J'ai également modifié la colonne H (Heure fin) dont le résultat n'était pas toujours juste, ainsi que les colonnes G et I pour qu'elles se développent toutes seules...

https://docs.google.com/spreadsheets/d/1Yayy7TKupRPTpupA6IRPR3kzftfF6em8qkB9ST7Jvgw/edit?usp=sharing

Hello !

Alors encore merci car j'ai pu bien bricoler avec ce fichier. Cependant j'ai rencontré un problème : autant les données qui sont dans mon fichier final sont réalistes, autant je les avais placées cote à cote dans mon fichier d'exemple (par exemple pour l'onglet Matières et professeurs, les données étaient dans des colonnes cote à cote alors qu'en réalité, elles sont séparées de plusieurs colonnes d'autres données dans mon tableau final, données qui ne servent à rien d'ailleurs dans le calcul).

J'ai réussi à corriger cela en décalant les COLx. Mais il reste 1 formule qui bloque : la récupération des heures de début de cours. J'ai beau tordre la formule, je ne comprends pas pourquoi l'heure de début ne ressort pas dans la colonne B de l'onglet "à masquer". Je pense que le problème vient du décallage de la ligne qui correspond à une ligne de cours dans l'onglet "Emploi du temps", car initialement, tout commençait en ligne 1. Pourtant, il me semble avoir réussi à corriger ce problème sur la colonne C ou je récup le total d'heures de la session.

Tu sais dire d'où vient le problème ?

Et aussi, où je dois agir en cas de décallage de cellule (colonne ou ligne) dans mes tableaux de données pour éviter que ça se reproduise si jamais je devais par exemple ajouter une colonne dans emploi du temps ou matières ?

Merci encore

Bonjour,

Tu t'es juste trompé dans les bornes de tes plages nommées.

Pour des ajouts de colonnes, fais un nouveau post si tu bloques !

Cordialement,

Fil.

N'oublie pas de clôturer le sujet, si ça fonctionne.

Merci.

Ok effectivement ça marche mais alors du coup j'ai vu une erreur dans une plage nommée que j'ai corrigée : ma plage "Horaires_cours" allait de A2 à A13. Là ça fonctionnait avec ta mise à jour, mais comme avec l'ajout de mes 2 lignes d'entête, mes horaires de cours allaient de A4 à A13, j'ai donc mis à jour la place nommée et ça remerde (plus de dates de cours).

Je pense qu'il y a encore un problème de position relative d'une ligne par rapport à un départ d'analyse de données d'un bloc. Si tu arrives à trouver je suis preneur du problème dans la formule en B2 (et C2 aussi du coup je pense).

Encore mille mercis

Il faut mettre A2:A13, même si les heures de cours débutent en A4 ou A4:A15.

Sinon tu manipules des tableaux de tailles différentes et ça crée une erreur !

Ton erreur vient de là et c'est uniquement ce que j'ai corrigé.

Ah ok ! Alors dans ce cas, le tableau que représente A2:A13 collabore avec quel autre tableau ? Car il me semble que c'est le seul tableau qui commence en A.

Bon depuis ce matin j'essaye en fait de transférer les formules de ce fichier de test dans mon document final qui est déjà prêt (et qui est hautement plus complet). J'y arrive sans trop de problème, mais les colonnes B et C de l'onglet à masquer restent vident. J'ai regardé partout, appliqué le même environnement et contexte dans notre fichier de test, à la cellule près, ça ne marche pas.

Du coup j'ai pris mon document final et en ai fait une version test en mettant des données fictives : https://docs.google.com/spreadsheets/d/16hxOXC2T0HfUvDM4fAdsjeYxJRynu1fxN9Cb9rB1p34/edit?usp=sharing

La grande différence c'est que mes intervenants sont listés dans un onglet à part que j'importe depuis un IMPORTRANGE venant d'un autre doc qui regroupe tous mes professeurs. Le reste, tout est pareil, des colonnes contenant des données aux noms des plages nommées. Incompréhensible mais ça doit surement être une erreur à la con.

Tu vois d'où ça peut venir ?

Dans cette formule :

=IFERROR(map('À masquer'!$A$2:$A;'À masquer'!$D$2:$D;lambda(m;n;join(" ";(query({{" ";Horaires}\transpose(query(transpose(query(arrayformula(TO_TEXT(Emploi_du_temps))));"select * where Col1 = '"&TO_TEXT(m)&"' "))};"select Col1 where Col2 = '"&n&"' "))))))

Tu as plusieurs transpositions de Emploi_du_temps (A1:AA13)...

Je regarde ça demain...

Rechercher des sujets similaires à "emploi temps dynamique sheets"