Sub ColorierNomsEtHoraires()
Dim ws As Worksheet
Dim derniereLigne As Long
Dim i As Long, j As Long
Dim noms1() As String, noms2() As String
Dim k As Long, l As Long
Dim horaire1 As String, horaire2 As String
Dim debutHoraire1 As Date, finHoraire1 As Date
Dim debutHoraire2 As Date, finHoraire2 As Date
Dim nomTrouve As Boolean
' Définir la feuille de calcul
Set ws = ThisWorkbook.Sheets("Feuil1") ' Ajustez le nom de la feuille si nécessaire
' Trouver la dernière ligne avec des données dans la colonne K
derniereLigne = ws.Cells(ws.Rows.Count, "K").End(xlUp).Row
' Boucler à travers chaque paire de lignes pour vérifier les noms dupliqués et les horaires qui se chevauchent
For i = 2 To derniereLigne - 1
For j = i + 1 To derniereLigne
' Extraire les noms de chaque cellule dans la colonne K
noms1 = Split(ws.Cells(i, 11).Value, "*") ' Colonne K
noms2 = Split(ws.Cells(j, 11).Value, "*") ' Colonne K
nomTrouve = False
' Comparer chaque mot de noms1 avec chaque mot de noms2
For k = LBound(noms1) To UBound(noms1)
For l = LBound(noms2) To UBound(noms2)
If Trim(noms1(k)) = Trim(noms2(l)) And Trim(noms1(k)) <> "" Then
nomTrouve = True
Exit For
End If
Next l
If nomTrouve Then Exit For
Next k
If nomTrouve Then
horaire1 = ws.Cells(i, 12).Value ' Colonne L
horaire2 = ws.Cells(j, 12).Value ' Colonne L
' Extraire les horaires de début et de fin
debutHoraire1 = CDate(Left(horaire1, InStr(1, horaire1, " - ") - 1))
finHoraire1 = CDate(Mid(horaire1, InStr(1, horaire1, " - ") + 3))
debutHoraire2 = CDate(Left(horaire2, InStr(1, horaire2, " - ") - 1))
finHoraire2 = CDate(Mid(horaire2, InStr(1, horaire2, " - ") + 3))
' Gérer les horaires se prolongeant jusqu'au lendemain
If finHoraire1 < debutHoraire1 Then finHoraire1 = finHoraire1 + 1
If finHoraire2 < debutHoraire2 Then finHoraire2 = finHoraire2 + 1
' Si les horaires sont identiques
If horaire1 = horaire2 Then
ws.Cells(i, 11).Interior.Color = RGB(255, 0, 0) ' Rouge
ws.Cells(i, 12).Interior.Color = RGB(255, 0, 0) ' Rouge
ws.Cells(j, 11).Interior.Color = RGB(255, 0, 0) ' Rouge
ws.Cells(j, 12).Interior.Color = RGB(255, 0, 0) ' Rouge
' Si les horaires se chevauchent
ElseIf (debutHoraire1 < finHoraire2 And debutHoraire2 < finHoraire1) Then
ws.Cells(i, 11).Interior.Color = RGB(148, 0, 211) ' Violet
ws.Cells(i, 12).Interior.Color = RGB(148, 0, 211) ' Violet
ws.Cells(j, 11).Interior.Color = RGB(148, 0, 211) ' Violet
ws.Cells(j, 12).Interior.Color = RGB(148, 0, 211) ' Violet
End If
End If
Next j
Next i
End Sub