Procédure de création rapide d'un plan dans une feuille

Bonjour

Je suis débutant en vba et cherche à réaliser une procédure qui me crée une présentation arborescente de données. Je souhaite ensuite afficher cette arborescence sur une feuille avec la possibilité de plier / déplier les différents niveaux.

Je dispose dans une colonne du niveau d'arborescence de chaque ligne (du niveau 1 au niveau 16, mais j’arrête le groupement au niveau 7 max (tous les niveaux "inférieurs" sont laissés "en vrac" sous le niveau 7, ce qui me convient)

J'ai tenté deux méthodes, OutlineLevel en passant le niveau en argument, et Rows.group, en faisant des boucles ( ). Mais j'ai des temps de réponse très longs (1h pour traiter 60 000 lignes environ avec OutlineLevel, et 11 minutes pour 15000 lignes avec les boucles Rows.Group). Ce qui rend la macro inexploitable.

Quelqu'un connaitrait une méthode rapide de faire ces "plans" ?

Merci pour votre aide

Bonjour

Le fichier appauvri des données sensibles serait très utile pour la suite

merci

Bonjour

merci pour cette encouragement à poursuivre )

Dans le petit fichier joint j'ai mis :

dans l'onglet Data un extrait de la base de données (la vraie base contient environ 100 000 lignes et 250 colonnes), pour ce qui concerne les champs que j'utilise pour créer une arborescence.

dans l'onglet Résultat, un exemple de la présentation que je veux obtenir.

Pour l'instant je parviens - à grand renfort d'aspirine - à établir l'arborescence complète sur 60 000 lignes avec une procédure qui tourne environ 2 minutes, mais dès que je fais de la mise en forme ou des "pliages" en mode plan (Données / Grouper) j'ajoute près de 1h de traitement ! C'est donc principalement l'objet de ma question sur ce forum. Est-ce que par exemple on peut traiter les plans via des tableaux de variables par exemple ???

Peut-on avoir le code que vous avez essayé

merci

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

Rechercher des sujets similaires à "procedure creation rapide plan feuille"