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 :
upload_2018-10-25_9-27-31.png

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
152
Réponses
7
Affichages
350

Statistiques des forums

Discussions
312 215
Messages
2 086 333
Membres
103 188
dernier inscrit
evebar