Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL1 As Integer 'déclare la variable DL1 (Dernière Ligne 1)
Dim PL1 As Range 'déclare la variable PL1 (PLage 1)
Dim CEL1 As Range 'déclare la variable CEL1 (CELlule 1)
Dim DL2 As Integer 'déclare la variable DL2 (Dernière Ligne 2)
Dim PL2 As Range 'déclare la variable PL2 (PLage 2)
Dim CEL2 As Range 'déclare la variable CEL2 (CELlule 2)
Dim PLV As Range 'déclare la variable PLV (PLage Visible)
Dim D As Date 'déclare la variable D (Date)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O = Sheets("Ce que j'ai") 'définit l'onglet O (à adapter)
DL1 = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL1 de la colonne 1 (=A) de l'onglet O
Set PL1 = O.Range("A2:A" & DL1) 'définit la palge PL1
DL2 = O.Cells(Application.Rows.Count, 5).End(xlUp).Row 'définit la dernière ligne éditée DL2 de la colonne 5 (=E) de l'onglet O
Set PL2 = O.Range("E2:E" & DL2) 'définit la palge PL2
For Each CEL2 In PL2 'boucle 1 : sur toutes les cellules CEL2 de la plage PL2
D = CDate(CEL2.Offset(0, 1).Value) 'définit la date D
O.Range("A1").AutoFilter Field:=1, Criteria1:=CEL2.Value 'filtre la colonne 1 (=A) de l'onglet O avec la valeur de CEL2 comme critère
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
'si toutes les cellules sont filtrées la ligne ci-dessous génère une erreur
Set PLV = PL1.SpecialCells(xlCellTypeVisible) 'définit la plage PLV (cellules visibles (non filtrées) de la plage PL1)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'efface l'erreur
GoTo suite 'va à l'étiquette "suite"
End If 'fin de la condition
For Each CEL1 In PLV 'boucle 2 : sur toutes les cellules CEL1 de la plage PLV
If D >= CEL1.Offset(0, 1).Value And D <= CEL1.Offset(0, 2).Value Then 'si la date D est incluse dans la fourchette début/fin
CEL1.Resize(, 3).Interior.ColorIndex = 3 'colore la ligne du tableau des congés en rouge
CEL2.Resize(, 2).Interior.ColorIndex = 3 'colore la ligne du tableau des transactions en rouge
End If 'fin de la condition
Next CEL1 'prochaine cellule de la boucle 2
suite: 'étiquette
O.Range("A1").AutoFilter 'supprime le filtre automatique
Next CEL2 'prochaine cellule de la boucle 1
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub