Menu

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

Messages postés
276
Date d'inscription
vendredi 3 août 2007
Dernière intervention
1 décembre 2018
- - Dernière réponse : cs_Le Pivert
Messages postés
5586
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 décembre 2018
- 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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
5586
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 décembre 2018
0
Merci
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à

Commenter la réponse de cs_Le Pivert