Sommaire avancé [résolu]

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Laosurlamontagne

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à créer sur un onglet excel un sommaire un peu particulier...

J'ai trouvé ce code bien pratique pour faire un sommaire des différents onglets que constituent mon fichier excel:

Code:
Sub listOnglet()
Dim I As Integer
ActiveWorkbook.Worksheets("Table of Contents").Select
ActiveSheet.Range("A2").CurrentRegion.ClearContents
For I = 6 To ActiveWorkbook.Worksheets.Count - 1
ActiveSheet.Range("A" & I).Select
ActiveSheet.Hyperlinks.Add _
Anchor:=Selection, _
Address:="", _
SubAddress:="'" & Worksheets(I).Name & "'!A1", _
TextToDisplay:=Worksheets(I).Name
Next
Cancel = True
End Sub

Dans chaque onglet, il y des cellule non vide de la colonne "B" (pas forcement les une en dessous des autres) que je voudrais faire apparaitre dans mon sommaire comme "sous-chapitre" de l'onglet X.

du style:
Colonne A1: Onglet 1
Colonne B1: titre 1.1
Colonne B2: titre 1.2
Colonne A3: Onglet 2
Colonne B3: titre 2.1
Colonne B4: titre 2.2
Colonne B5: titre 2.3
etc...

Auriez-vous une idée pour m'aider ?

Merci !
 
Dernière édition:
Re : Sommaire avancé

Bonjour,
à tester :
Code:
Sub listOnglet()
Dim I As Integer, J As Integer, k As Byte, Lig As Long, DerLig As Long, T()

Worksheets("Sommaire").Range("A2").CurrentRegion.ClearContents

For I = 2 To ActiveWorkbook.Worksheets.Count
    With Worksheets("Sommaire")
        Lig = .Range("B" & .Rows.Count).End(xlUp).Row + 1
        .Range("A" & Lig).Select
        ActiveSheet.Hyperlinks.Add _
        Anchor:=Selection, _
        Address:="", _
        SubAddress:="'" & Worksheets(I).Name & "'!A1", _
        TextToDisplay:=Worksheets(I).Name
    End With
    With Sheets(Worksheets(I).Name)
        DerLig = .Range("B" & .Rows.Count).End(xlUp).Row
        ReDim T(Application.WorksheetFunction.CountA(.Range("B1:B" & DerLig)))
        For J = 1 To DerLig
            If .Range("B" & J) <> "" Then T(k) = .Range("B" & J): k = k + 1
        Next J
    End With
    k = 0
    Worksheets("Sommaire").Range("A" & Lig).Offset(0, 1).Resize(UBound(T) + 1) = Application.Transpose(T)
    Erase T
Next I
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
636
Réponses
21
Affichages
2 K
Réponses
8
Affichages
1 K
Retour