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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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

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
 
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+
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…