1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Sub Test()
Dim LigneMax As Long
Dim Cellule As Range
' On boucle sur les cellules de la colonne D
For Each Cellule In Range(Cells(2, 4), Cells(Rows.Count, 4).End(xlUp))
' On recherche de la ligne contenant le maximum pour le groupe, à l'exclusion codes = X ou Y
LigneMax = Evaluate("MAX(ROW($D$2:$D$23)*(($D$2:$D$23=""" & Cellule.Value & _
""")*($M$2:$M$23)=MAX(($D$2:$D$23=""" & Cellule.Value & _
""")*($M$2:$M$23) *($E$2:$E$23<>""x"")*($E$2:$E$23<>""y""))))")
' On teste si on est sur une ligne x ou y
If Cellule(1, 2) = "x" Or Cellule(1, 5) = "y" Then
' si oui, on remplace par les valeurs de E et K de la ligne contenant le max
Cellule(1, 2) = Cells(LigneMax, 2)
Cellule(1, 8) = Cells(LigneMax, 8)
End If
Next Cellule
End Sub |