Compatibilité de plages horaires Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
f
fmiso
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 24 janvier 2019
Version d'Excel : 2013

Message par fmiso » 24 janvier 2019, 11:29

Bonjour,


Je dois créer un planning de passage d'examens pour 80 étudiants (J'ai une liste de noms et un n° de candidat attribué à chaque étudiant) .
Ils doivent passer 3 épreuves en 2 jours dans 3 matières différentes avec à chaque fois des jurys différents que je dois intégrer dans le planning.

Comment pourrais-je créer FACILEMENT une feuille qui me permettrait de choisir un triplet d'horaires compatibles pour chaque étudiant ?
Si quelqu'un voit la solution à mon problème, je suis preneur... Mieux, si vous l'avez, je la prends :mrgreen:


Voici les contraintes :
Les horaires ne peuvent pas se chevaucher.
Un étudiant ne peut pas être dans 2 matières en même temps.
Un jury ne peut prendre qu'un étudiant à la fois.
Un candidat doit passer les 3 matières la même journée.

Les plages horaires sont pré-définies pour chaque matière :

Matière 1 (3 Jurys le 1er jour - 4 Jurys le 2ème jour) :
Matière 1
Matière 1
Capture1.JPG (49.59 Kio) Vu 186 fois
Matière 2 (5 Jurys le 1er jour - 5 Jurys le 2ème jour...Ils sont différents de ceux du 1er jour) :
Matière 2 et Matière 3
Matière 2 et Matière 3
Capture.JPG (23.25 Kio) Vu 186 fois
Matière 3 ( 6 jurys identiques les deux jours) :
Matière 2 et Matière 3
Matière 2 et Matière 3
Capture.JPG (23.25 Kio) Vu 186 fois
Merci à tous,


Je vous joins la matrice du "Bidule" pour mieux comprendre...

FM
Planning.xlsx
(25.24 Kio) Téléchargé 8 fois
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'751
Appréciations reçues : 224
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 26 janvier 2019, 03:19

Salut fmiso,

avant de commencer à penser à quelque chose, que les horaires ne se chevauchent pas est très logique mais, dans ce cas, comment expliques-tu le chevauchement, une fois sur deux, en matière 1, des horaires de fin et de début de l'examen suivant ?

:wink:
A+
1 membre du forum aime ce message.
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'751
Appréciations reçues : 224
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 26 janvier 2019, 19:33

Salut fmiso,

un début de quelque chose, actuellement très figé (pas d'autre configuration possible que celle expliquée dans ta demande) mais qui a l'air de fonctionner.
Ne pas toucher à l'emplacement général des tableaux en 'Horaires' ni à la ligne 5 (valeurs cachées, en écriture blanche).
Les profs absents sont en rouge.
Je n'ai tenu compte que des heures de début d'examen (cfr mon précédent post).

Un double-clic dans 'Horaires' démarre la macro qui tourne (pas s'inquiéter!) jusqu'à ce que tous les élèves soient placés.
Pour visualiser en couleur l'horaire de chaque élève, cliquer sur le nom de l'élève.
            For Each rCel In Range(sCol1 & "10:" & sCol2 & 36)
                If rCel.Value = "" And Cells(8, rCel.Column).Font.Color <> RGB(255, 0, 0) And _
                    Cells(5, rCel.Column) < Cells(9, rCel.Column) Then
                    Select Case x
                        Case 1
                             If Abs(tData(iIdx, 5) - rCel.Row) >= 4 And Abs(tData(iIdx, 7) - rCel.Row) >= 4 And _
                                tData(iIdx, 6) <> Cells(8, rCel.Column) And tData(iIdx, 8) <> Cells(8, rCel.Column) Then iOK = 1
                        Case 2
                            If ((rCel.Row < 23 And rCel.Row Mod 4 = 2) Or (rCel.Row > 23 And rCel.Row Mod 4 = 0)) And _
                                tData(iIdx, 6) <> Cells(8, rCel.Column) And Abs(tData(iIdx, 5) - rCel.Row) >= 4 Then iOK = 1
                        Case 3
                            If (rCel.Row < 23 And rCel.Row Mod 4 = 2) Or (rCel.Row > 23 And rCel.Row Mod 4 = 0) Then iOK = 1
                    End Select
                End If
                If iOK = 1 Then
                    rCel.Value = tData(iIdx, 1)
                    tData(iIdx, x + 1) = ""
                    If x > 1 Then
                        tData(iIdx, IIf(x = 3, 5, 7)) = rCel.Row
                        tData(iIdx, IIf(x = 3, 6, 8)) = Cells(8, rCel.Column)
                    End If
                    Exit For
                End If
            Next
A tester et à améliorer...

8-)
A+
PlanningFMISO.xlsm
(48.67 Kio) Téléchargé 13 fois
f
fmiso
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 24 janvier 2019
Version d'Excel : 2013

Message par fmiso » 28 janvier 2019, 08:43

Merci beaucoup de vous être penché sur mon problème...
J'ai trouvé une solution visuelle en utilisant les MFC...

Encore merci néanmoins.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message