Microsoft 365 Macro Excel

Radoin44

XLDnaute Nouveau
Bonjour,

J'aimerais faire une macro excel pour automatisé le fait de masquer et faire apparaître des lignes sur mon excel car il est assez lourd et j'essaie d'optimiser au mieux son utilisation.

J'ai à chaque fois une grande partie avec plusieurs lignes de sous-parties qui sont tous groupées. j'aimerais qu'au lieu de cliquer sur la case grise à gauche, pour faire apparaitre et masquées les lignes groupées, on ai juste a cliqué sur la case de la grande partie. Est-ce possible ?

Je vous partage l'excel vierge en PJ. Je vous remercie !
 

Pièces jointes

  • MACRO automatisation.xlsx
    37 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Radouin,
Un essai en PJ avec la macro ci dessous.
Règles :
Un clic sur la cellule A4 masque toutes les lignes sauf les titres
Un clic sur un N° de chapitre masque tout sauf ce chapitre.
Les lignes tête de chapitre doit avoir en colonne A la formule : =MAX($A$5:Axxx)+1 pour repérer ensuite le début et fin de chapitre.

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A4:A1000]) Is Nothing Then
        Application.ScreenUpdating = False
        If Target = "PLAN" Then                                 ' Si Plan on masque tout sauf titres
            Masque
            Exit Sub
        End If
        If Target = Application.Max([A:A]) Then Exit Sub        ' Si on clique sur le max ça ne fait rien
        Début = Target.Row + 1                                  ' Recherche de la ligne de début
        Fin = Application.Match(Target + 1, [A1:A1000], 0) - 1  ' Recherche de la ligne de fin
        Masque                                                  ' On masque tout
        Rows(Début & ":" & Fin).EntireRow.Hidden = False        ' On démasque le chapitre concerné
    End If
Fin:
End Sub
Sub Masque()    ' Masque toute lignes entre titres de chapitres
    Application.ScreenUpdating = False
    For i = 1 To Application.Max([A:A]) - 1
        D = Application.Match(i, [A1:A1000], 0) + 1
        F = Application.Match(i + 1, [A1:A1000], 0) - 1
        Rows(D & ":" & F).EntireRow.Hidden = True
    Next i
End Sub
 

Pièces jointes

  • MACRO automatisation.xlsm
    45.2 KB · Affichages: 2

Discussions similaires

Réponses
5
Affichages
391

Statistiques des forums

Discussions
312 210
Messages
2 086 281
Membres
103 170
dernier inscrit
HASSEN@45