StephCo
XLDnaute Nouveau
Bonjour,
Ce problème que j'avais posé, à force de m'acharner, je l'ai résolu, mais je partage ma solution...
je conçois un diagramme de Gantt pour un gros projet de fabrication sur lequel interviennent 8 groupes pendant 1 heure tous les 15 jours au cours de l'année. Chaque tâche est compté en dizaines de minutes, ce qui fait un très gros tableau au final. Sauf que dans l'heure, il y a 20 minutes pour mettre au travail la classe (appel, rappel des objectif, distribution du matériel...), 5 minutes pour ranger en fin de séance et 5 mn d'inter-cours.
Mon soucis, c'est d'arriver à calculer les dates de début et les dates de fin sachant qu'un groupe qui commence une tâche doit la finir, pendant la séance, ou à la séance ultérieure.
Pour simplifier, j'ai créé ce petit exemple, avec pour objectif de mettre dessous les barres pour les créneaux horaires pris par chaque tâche. (voir fichier "exemple de formules matricielles", 2ème feuille de calcul)
Dans la formule en A6 (entrée avec "CTRL Maj Entrée"), en fonction de A4 (Une classe d'élèves) et de A5(qui défini quel créneau horaire je veux), j'obtiens l'heure du créneau horaire.
Techniquement, j'incrémente une matrice en mémoire avec la fonction SI() qui va être : 1 2 3 4 5 FAUX FAUX FAUX FAUX..., la 2ème plus petite valeur, c'est 2 dans l'exemple présenté sur l'image et j'obtiens jeu. 05/09 08:20.
Mais ça ne me convenait pas car je voudrais ne conserver que les créneaux horaires valides (non grisés) en formant la matrice : FAUX 1 2 3 FAUX FAUX FAUX FAUX FAUX ....
Voici la solution que vous trouverez dans le fichier en A7 :
=INDEX(B3 : P3;
PETITE.VALEUR(SI((B2 : P2=A4)*((B1 : P1=20)+(B1 : P1=30)+(B1 : P1=40));
COLONNE(B2 : P2)-COLONNE(A2)
) ; A5
)
)
Pour bien comprendre les critères matriciels dans la fonction SI, je l'ai déposée en B13 (en appuyant sur CTRL Maj + Entrée). Petite remarque, j'ai du mettre un espace dans la fonction ci-dessus entre ; et P sinon on se retrouve avec un bel émoticône au milieu des fonctions comme ceci![Stick Out Tongue :p :p](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
J'espère que ce partage servira à quelqu'un.
![Smile :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Ce problème que j'avais posé, à force de m'acharner, je l'ai résolu, mais je partage ma solution...
je conçois un diagramme de Gantt pour un gros projet de fabrication sur lequel interviennent 8 groupes pendant 1 heure tous les 15 jours au cours de l'année. Chaque tâche est compté en dizaines de minutes, ce qui fait un très gros tableau au final. Sauf que dans l'heure, il y a 20 minutes pour mettre au travail la classe (appel, rappel des objectif, distribution du matériel...), 5 minutes pour ranger en fin de séance et 5 mn d'inter-cours.
Mon soucis, c'est d'arriver à calculer les dates de début et les dates de fin sachant qu'un groupe qui commence une tâche doit la finir, pendant la séance, ou à la séance ultérieure.
Pour simplifier, j'ai créé ce petit exemple, avec pour objectif de mettre dessous les barres pour les créneaux horaires pris par chaque tâche. (voir fichier "exemple de formules matricielles", 2ème feuille de calcul)
Dans la formule en A6 (entrée avec "CTRL Maj Entrée"), en fonction de A4 (Une classe d'élèves) et de A5(qui défini quel créneau horaire je veux), j'obtiens l'heure du créneau horaire.
Techniquement, j'incrémente une matrice en mémoire avec la fonction SI() qui va être : 1 2 3 4 5 FAUX FAUX FAUX FAUX..., la 2ème plus petite valeur, c'est 2 dans l'exemple présenté sur l'image et j'obtiens jeu. 05/09 08:20.
Mais ça ne me convenait pas car je voudrais ne conserver que les créneaux horaires valides (non grisés) en formant la matrice : FAUX 1 2 3 FAUX FAUX FAUX FAUX FAUX ....
Voici la solution que vous trouverez dans le fichier en A7 :
=INDEX(B3 : P3;
PETITE.VALEUR(SI((B2 : P2=A4)*((B1 : P1=20)+(B1 : P1=30)+(B1 : P1=40));
COLONNE(B2 : P2)-COLONNE(A2)
) ; A5
)
)
Pour bien comprendre les critères matriciels dans la fonction SI, je l'ai déposée en B13 (en appuyant sur CTRL Maj + Entrée). Petite remarque, j'ai du mettre un espace dans la fonction ci-dessus entre ; et P sinon on se retrouve avec un bel émoticône au milieu des fonctions comme ceci
J'espère que ce partage servira à quelqu'un.
Pièces jointes
Dernière édition: