Sub Macro1()
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pli As Long 'déclare la varialbe pli (Première LIgne de la plage du produit)
Dim dli As Long 'déclare la varialbe pli (Dernière LIgne de la plage du produit)
Dim plp As Range 'déclare la varialbe plp (PLage du Produit)
Dim i As Long 'déclare la varialbe i (incrément)
Dim limaxc As Long 'déclare la varialbe limaxc (LIgne de la valeur MAX en colonne C)
Dim limaxd As Long 'déclare la varialbe limaxd (LIgne de la valeur MAX en colonne D)
Application.ScreenUpdating = False 'masque les changements à l'écran
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
'tri les valeur par ordre croissant par rapport à la colonne A
.Range("A1").CurrentRegion.Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne dl du tableau
.Range("A2:E" & dl).ClearFormats 'supprime les formats sur l'ensemble des données (sans la première ligne)
For i = 2 To dl 'boucle de 2 à dl
pli = i 'définit la première ligne de la plage du produit pli
'définit la derniè ligne de la plage du produit pli
dli = Application.WorksheetFunction.CountIf(.Range(.Cells(pli, 1), Cells(dl, 1)), Cells(pli, 1).Value) + (pli - 1)
Set plp = .Range(.Cells(pli, 1), Cells(dli, 1)) 'définit la plage du produit en colonne A
'récupère la ligne de la valeur max en colonne C limaxc
limaxc = plp.Offset(0, 2).Find(Application.WorksheetFunction.Max(plp.Offset(0, 2)), , xlValues, xlWhole).Row
'récupère la ligne de la valeur max en colonne D limaxd
limaxd = plp.Offset(0, 3).Find(Application.WorksheetFunction.Max(plp.Offset(0, 3)), , xlValues, xlWhole).Row
.Range(.Cells(limaxd, 1), .Cells(limaxd, 5)).Font.ColorIndex = 5 'couleur bleu sur la ligne de la valeur max en colonne D
.Cells(limaxd, 4).Font.Bold = True 'gras sur la cellule de la valeur max en colonne D
.Range(.Cells(limaxc, 1), .Cells(limaxc, 5)).Font.ColorIndex = 7 'couleur bleu sur la ligne de la valeur max en colonne C
.Cells(limaxc, 3).Font.Bold = True 'gras sur la cellule de la valeur max en colonne D
'colore la plage jusqu'à la colonne E en fonction de la couleur au dessus
plp.Resize(plp.Rows.Count, 5).Interior.ColorIndex = IIf(plp.Offset(-1, 0).Resize(1, 1).Interior.ColorIndex = 47, xlNone, 47)
i = dli
Next i
End With
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub