Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig&
Application.ScreenUpdating = False
Application.EnableEvents = False
If FilterMode Then ShowAllData 'si la feuille est filtrée
derlig = Cells(Rows.Count, 1).End(xlUp).Row
If derlig < 4 Then Exit Sub 'sécurité
With Rows("4:" & derlig)
.Sort .Columns(4), Header:=xlNo 'tri sur les classes
.Columns(27) = "=IFERROR(RANK(Z4,OFFSET(Z$4,MATCH(D4,D
,0)-4,,COUNTIF(D
,D4))),"""")"
.Columns(27) = .Columns(27).Value 'supprime les formules
.Sort .Columns(4), xlAscending, Header:=xlNo 'tri par classe
.Sort .Columns(2), xlAscending, Header:=xlNo 'tri alphabétique sur les noms des élèves
End With
Application.EnableEvents = True
End Sub
Salut le forum
Ce code ci-dessus marche bien lorsqu' on change le valeur d'une cellule, mais ce qui pose problème
est que les données sont copiées à partir d'une autre feuille pour être copiées dans la feuille INDEX
du coup ce code ne s’exécute pas. je ne sais pas comment faire pour que ça marche.