Voici le code pour les deux tentatives : (désolé pour la mise en forme, j'écris depuis mon téléphone)
Le niveau de l'arborescence se trouvant en colonne A
Tdebut =now
For i=1 to range(cells(1,1),cells(1,1).end(xldown)).count
If cells(i, 1)<9 then
Cells(i, 1).rows.outlinelevel=cells(i,1)
Else
Cells(i, 1).rows.outlinelevel=8
End if
Next i
Msgbox("délai exécution" & format(now - Tdebut, "hh:mm:ss"))
Renvoie 59 minutes pour 63 300 lignes
For i=1 to 15000
If cells(i, 1)<9 then
For j=1 to cells(i, 1)-1
Cells(i, 1).rows.group
Next j
Else
For j=1 to 7
Cells(i, 1).rows.group
Next j
Next i
11 minutes pour les 15000 lignes