Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Masquer les lignes de la colonne active si le résultat est égale à 0

Merlin258413

XLDnaute Occasionnel
Bonjour
J'ai un tableau dynamique croisé qui affiche des lignes à 0
Je veux sélectionner une colonne (peu importe) colonne active et masquer les lignes dont la valeur est égale à 0
En vous remerciant par avance pour votre aide
 

job75

XLDnaute Barbatruc
Bonsoir Merlin258413,
J'ai un tableau dynamique croisé
En VBA pas de difficulté pour masquer/afficher des lignes dans un TCD.

Le code de la feuille du TCD (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With [A3].CurrentRegion 'à adapter
    If Intersect(Target, .Cells) Is Nothing Then Exit Sub
    Dim c As Range
    Cancel = True
    Application.ScreenUpdating = False
    .Rows.Hidden = False
    ThisWorkbook.RefreshAll
    For Each c In Intersect(Target.EntireColumn, .Cells)
        If c = 0 Then c.EntireRow.Hidden = True
    Next
End With
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target(1), [A3].CurrentRegion) Is Nothing Then Exit Sub 'à adapter
Cancel = True
Rows.Hidden = False
ThisWorkbook.RefreshAll
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Filtrer TCD(1).xlsm
    26.8 KB · Affichages: 23

Merlin258413

XLDnaute Occasionnel
Bonjour je vous remercie pour votre réponse
J'ai un petit souci avec le code dans mon classeur, il m'indique le message suivant :

Est-il possible que cela proviennent du fait que je ne prends par pour base une tableau excel mais une données sources externes attaquant les fichiers de mon ERP ?
Merci beaucoup
Cdt
 

job75

XLDnaute Barbatruc
Re,

J'avais bien précisé que la plage était "à adapter" donc utiliser ici :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With [A7].CurrentRegion 'à adapter
    If Intersect(Target, .Cells) Is Nothing Then Exit Sub
    Dim c As Range
    Cancel = True
    Application.ScreenUpdating = False
    .Rows.Hidden = False
    ThisWorkbook.RefreshAll
    For Each c In Intersect(Target.EntireColumn, .Cells)
        If c.Row > 7 And c = 0 Then c.EntireRow.Hidden = True
    Next
End With
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target(1), [A7].CurrentRegion) Is Nothing Then Exit Sub 'à adapter
Cancel = True
Rows.Hidden = False
ThisWorkbook.RefreshAll
End Sub
Pas de bug chez moi mais l'assistant de connexion multidimensionnelle s'ouvre, je ne sais pas pourquoi...

A+
 

job75

XLDnaute Barbatruc
Re,

L'assistant de connexion multidimensionnelle s'ouvre à cause de ThisWorkbook.RefreshAll. qui actualise le TCD.

Alors voyez sans actualiser avec :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With [A7].CurrentRegion 'à adapter
    If Intersect(Target, .Cells) Is Nothing Then Exit Sub
    Dim c As Range
    Cancel = True
    Application.ScreenUpdating = False
    .Rows.Hidden = False
    For Each c In Intersect(Target.EntireColumn, .Cells)
        If c.Row > 7 And c = 0 Then c.EntireRow.Hidden = True
    Next
End With
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target(1), [A7].CurrentRegion) Is Nothing Then Exit Sub 'à adapter
Cancel = True
Rows.Hidden = False
End Sub
A+
 

Discussions similaires

Réponses
2
Affichages
171
Réponses
7
Affichages
388
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…