Sub ListerEchelles()
'effacage des données déjà présentes dans l'onglet "feuille de contrôle"
Sheets("liste des échelles").Range("A3:D" & Sheets("liste des échelles").Range("A65536").End(xlUp).Offset(1, 0).Row).ClearContents
Application.EnableEvents = False
'Dernière ligne de la feuille "Fichier de suivi"
Fin = Sheets("fichier de suivi").Range("A65536").End(xlUp).Row
ActiveSheet.Outline.ShowLevels RowLevels:=2
'parcours de TOUTES les lignes... très long..
For I = 5 To Fin
If Rows(I).Hidden = False And Range("A" & I) <> "" Then
'si c'est un numéro d'échelle
If IsNumeric(Range("A" & I)) Then
'recopie du numéro, de son groupe associé, de son type et de sa validité
Range("A" & I).Copy Destination:=Sheets("liste des échelles").Range("A65536").End(xlUp).Offset(1, 0)
Sheets("liste des échelles").Range("B65536").End(xlUp).Offset(1, 0) = NomGroupe
'si ce n'est ni un numéro ni le texte "N° échelle": c'est donc un nom de groupe
ElseIf (Range("A" & I) <> "N° échelle") Then
NomGroupe = Range("A" & I)
End If
End If
Next I
'application de la formule dans la colonne C et D pour récupérer l'état
formuleC = "=INDEX('fichier de suivi'!B:B;EQUIV(A3;'fichier de suivi'!A:A;0))"
formuleD = "=INDEX('fichier de suivi'!I:I;EQUIV(A3;'fichier de suivi'!A:A;0))"
Sheets("liste des échelles").Activate
Sheets("liste des échelles").Range("C3").FormulaLocal = formuleC
Sheets("liste des échelles").Range("D3").FormulaLocal = formuleD
finzonetri = Range("A65536").End(xlUp).Row
Range("C3:D3").Select
Selection.AutoFill Destination:=Range("C" & 3 & ":D" & finzonetri)
'tri en ordre croissant
Range("A3").Select
ActiveWorkbook.Worksheets("liste des échelles").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("liste des échelles").Sort.SortFields.Add Key:= _
Range("A3"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("liste des échelles").Sort
.SetRange Range("A3:D" & finzonetri)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.EnableEvents = True
End Sub