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

Fermé
Juliux Messages postés 276 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 1 décembre 2018 - 1 déc. 2018 à 17:36
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 2 déc. 2018 à 09:14
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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 2 déc. 2018 à 09:34
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