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

Retour