Grouper des lignes et afficher le sous-total de chacun des groupes ?

Juliux Messages postés 312 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

Je dois toiletter un gros fichier excel contenant environ 20'000 lignes réparties sur deux colonnes. La seconde colonne désigne la nomenclature, avec par exemple Informatique/Excel ou alors Informatique/Excel/Macro

J'aimerais bien regrouper toutes les lignes ayant la même nomenclature, afin de pouvoir visualiser les données sous la forme de volets dépliants, et avoir le sous-total de chacun des groupes.

Je sais que ça peut paraître complexe mais j'ai déjà vu des mise en forme pareille (en tous cas le fait de pouvoir grouper en volets dépliants).

Merci pour vos éclairages !

Configuration: Macintosh / Chrome 70.0.3538.102

1 réponse

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 731
     
    Bonjour,

    En vba voici une 1ère approche pour n'afficher que les lignes concernées:

    Voir ceci pour les boucles sur colonnes:

    https://www.developpez.net/forums/d605223/logiciels/microsoft-office/excel/contribuez/boucles-parcourir-colonne-ligne-plage-donnees-2-methodes/

    Option Explicit
    Private Sub CommandButton1_Click()
    For_X_to_Next_Ligne ("Informatique/Excel")
    End Sub
    Private Sub CommandButton2_Click()
    For_X_to_Next_Ligne ("Informatique/Excel/Macro")
    End Sub
    'https://www.developpez.net/forums/d605223/logiciels/microsoft-office/excel/contribuez/boucles-parcourir-colonne-ligne-plage-donnees-2-methodes/
    Sub For_X_to_Next_Ligne(ByVal nom As String)
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long, Var As Variant
        Set FL1 = Worksheets("Feuil1") 'adapter le nom de la feuille
        NoCol = 2 'lecture de la colonne B
        Application.ScreenUpdating = False
        For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
            Var = FL1.Cells(NoLig, NoCol)
        If Var = nom Then
           Sheets("Feuil1").Rows(NoLig & ":" & NoLig).EntireRow.Hidden = False 'adapter nom de la feuille
    Else
    Sheets("Feuil1").Rows(NoLig & ":" & NoLig).EntireRow.Hidden = True 'adapter nom de la feuille
    End If
        Next
        Application.ScreenUpdating = True
        Set FL1 = Nothing
    End Sub
    


    Voilà

    0