Etape 1
Sub EnregistrerProfesseursCours()
Dim ws As Worksheet
Set ws = [Link]("Professeurs")
[Link](1, 1).Value = "Nom du Professeur"
[Link](1, 2).Value = "Cours"
[Link](1, 3).Value = "Charge Horaire (heures/semaine)"
' Exemple d'enregistrement
[Link](2, 1).Value = "Professeur A"
[Link](2, 2).Value = "Mathématiques"
[Link](2, 3).Value = 5
[Link](3, 1).Value = "Professeur A"
[Link](3, 2).Value = "Physique"
[Link](3, 3).Value = 4
[Link](4, 1).Value = "Professeur B"
[Link](4, 2).Value = "Chimie"
[Link](4, 3).Value = 5
' Ajouter d'autres enregistrements ici
End Sub
Étape 2
Sub DefinirClasses()
Dim ws As Worksheet
Set ws = [Link]("Classes")
[Link](1, 1).Value = "Nom de la Classe"
[Link](1, 2).Value = "Cours Spécifiques"
[Link](1, 3).Value = "Cours Tronc Commun"
' Exemple de définition
[Link](2, 1).Value = "Classe 1"
[Link](2, 2).Value = "Mathématiques, Physique"
[Link](2, 3).Value = "Français, Histoire"
[Link](3, 1).Value = "Classe 2"
[Link](3, 2).Value = "Biologie, Chimie"
[Link](3, 3).Value = "Mathématiques, Français"
' Ajouter d'autres enregistrements ici
End Sub
Étape 3
Sub EnregistrerNombreCours()
Dim ws As Worksheet
Set ws = [Link]("NombreCours")
[Link](1, 1).Value = "Classe"
[Link](1, 2).Value = "Cours"
[Link](1, 3).Value = "Nombre de Fois par Semaine"
' Exemple d'enregistrement
[Link](2, 1).Value = "Classe 1"
[Link](2, 2).Value = "Mathématiques"
[Link](2, 3).Value = 4
[Link](3, 1).Value = "Classe 1"
[Link](3, 2).Value = "Physique"
[Link](3, 3).Value = 3
[Link](4, 1).Value = "Classe 2"
[Link](4, 2).Value = "Chimie"
[Link](4, 3).Value = 3
' Ajouter d'autres enregistrements ici
End Sub
Étape 4
Sub GenererHoraires()
Dim wsProf As Worksheet, wsClasse As Worksheet, wsNombreCours As Worksheet, wsHoraires As
Worksheet
Dim i As Integer, j As Integer, k As Integer
Dim possibleHoraires As Collection
Set wsProf = [Link]("Professeurs")
Set wsClasse = [Link]("Classes")
Set wsNombreCours = [Link]("NombreCours")
Set wsHoraires = [Link]("Horaires")
' Initialiser la feuille des horaires
[Link]
[Link](1, 1).Value = "Classe"
[Link](1, 2).Value = "Jour"
[Link](1, 3).Value = "Heure"
[Link](1, 4).Value = "Cours"
[Link](1, 5).Value = "Professeur"
' Préparer la collection pour les horaires possibles
Set possibleHoraires = New Collection
' Exemple pour remplir la collection avec des horaires possibles (lundi 8-9, 9-10, etc.)
For i = 1 To 5 ' Lundi à Vendredi
For j = 1 To 7 ' 7 cours par jour
[Link] i & ":" & j
Next j
Next i
' Générer les horaires pour chaque classe
For i = 2 To [Link]([Link], 1).End(xlUp).Row
Dim classe As String, coursSpec As String, coursTronc As String
classe = [Link](i, 1).Value
coursSpec = [Link](i, 2).Value
coursTronc = [Link](i, 3).Value
' Répartir les cours spécifiques
For Each cours In Split(coursSpec, ",")
For j = 2 To [Link]([Link], 1).End(xlUp).Row
If [Link](j, 1).Value = classe And [Link](j, 2).Value =
Trim(cours) Then
For k = 1 To [Link](j, 3).Value
' Vérification pour éviter les chevauchements de cours pour un même professeur
Dim horaire As String, jour As Integer, heure As Integer
horaire = [Link](k)
jour = Split(horaire, ":")(0)
heure = Split(horaire, ":")(1)
[Link]([Link], 1).End(xlUp).Offset(1, 0).Value = classe
[Link]([Link], 2).End(xlUp).Offset(0, 1).Value = jour
[Link]([Link], 3).End(xlUp).Offset(0, 2).Value = heure
[Link]([Link], 4).End(xlUp).Offset(0, 3).Value = Trim(cours)
[Link]([Link], 5).End(xlUp).Offset(0, 4).Value =
GetProfesseur(Trim(cours), wsProf)
Next k
End If
Next j
Next cours
' Répartir les cours à tronc commun
For Each cours In Split(coursTronc, ",")
For k = 1 To [Link]
Dim horaireTronc As String
horaireTronc = [Link](k)
jour = Split(horaireTronc, ":")(0)
heure = Split(horaireTronc, ":")(1)
[Link]([Link], 1).End(xlUp).Offset(1, 0).Value = classe
[Link]([Link], 2).End(xlUp).Offset(0, 1).Value = jour
[Link]([Link], 3).End(xlUp).Offset(0, 2).Value = heure
[Link]([Link], 4).End(xlUp).Offset(0, 3).Value = Trim(cours)
[Link]([Link], 5).End(xlUp).Offset(0, 4).Value =
GetProfesseur(Trim(cours), wsProf)
Next k
Next cours
Next i
End Sub
Function GetProfesseur(cours As String, wsProf As Worksheet) As String
Dim i As Integer
For i = 2 To [Link]([Link], 1).End(xlUp).Row
If [Link](i, 2).Value = cours Then
GetProfesseur = [Link](i, 1).Value
Exit Function
End If
Next i
GetProfesseur = "Inconnu"
End Function