Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Quel code VBA simple je pourrais avoir pour un bouton qui filtrerait les lignes ayant que des 0, serait il possible de plus d'avoir un effet sur le bouton, un effet pressé.
VBA, je ne sais pas, mais avec une colonne sup avec le total par ligne ?
(Pourquoi faire compliqué ?)
La flèche du bouton du filtre automatique devient bleue s'il est activé.
Il y a plusieurs feuilles, et les plages à traiter ne sont pas au même endroit.
Donc perso je préfèrerais des combinaisons de touches pour lancer ces 2 macros :
Code:
Sub Masquer()
'se lance par Ctrl+M
Dim cel As Range, masque As Range
On Error Resume Next
For Each cel In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, 1)
If Application.Sum(cel.EntireRow) = 0 Then _
Set masque = Union(cel, IIf(masque Is Nothing, cel, masque))
Next
masque.EntireRow.Hidden = True
End Sub
Sub Affiche()
'se lance par Ctrl+A
Rows.Hidden = False
End Sub
Fichier joint.
Nota : il ne faut pas de nombres en dehors des tableaux à traiter [Edit] si leur somme par ligne est nulle...
On peut afficher les lignes de valeurs zéros ou les masquer.
Ma version (1) les masquait, alors pour les afficher :
Code:
Sub Masquer()
'se lance par Ctrl+M
Dim cel As Range, masque As Range
On Error Resume Next
For Each cel In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, 1)
If Application.Count(cel.EntireRow) <> Application.CountA(cel.EntireRow) _
And Application.Sum(cel.EntireRow) <> 0 Then _
Set masque = Union(cel, IIf(masque Is Nothing, cel, masque))
Next
masque.EntireRow.Hidden = True
End Sub
Sub Affiche()
'se lance par Ctrl+A
Rows.Hidden = False
End Sub
Version (2).
Nota : la ligne des années ne doit comporter que des nombres...
Sub Masquer()
'se lance par Ctrl+M
Dim r As Range, masque As Range
On Error Resume Next
Set r = Cells.SpecialCells(xlCellTypeConstants, 2).EntireRow
Set r = Intersect(r, Cells.SpecialCells(xlCellTypeConstants, 1).EntireRow)
For Each r In r.Rows
If Application.Sum(r) <> 0 Then _
Set masque = Union(r, IIf(masque Is Nothing, r, masque))
Next
masque.EntireRow.Hidden = True
End Sub
Sub Affiche()
'se lance par Ctrl+A
Rows.Hidden = False
End Sub
Cette version (4) utilise le double-clic pour masquer ou afficher.
La macro dans ThisWorkbook :
Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, _
ByVal Target As Range, Cancel As Boolean)
Cancel = True
If Application.Count(Cells) = Application.Subtotal(102, Cells) Then _
Masquer Else Affiche
End Sub
Merci à tous pour vos contributions je vais toutes les essayer une par une
Mon objectif est en effet de masquer les lignes ayant que des zéros, car elles apportent aucune infos pour mon cas.
j'ai pensé à un autre point, comment rajouter une couleur lorsque le filtre est actif et une autre couleur quand le filtre est inactif ou à la limite afficher la mention "filtre activé" ou "filtre désactivé"
La proposition avec filtre avancé avait déjà:
1) un texte différent sur le bouton suivant que le filtre est ou non activé.
2) une couleur différente de N° de ligne quand le filtre est activé.
La version 2 modifie la couleur du tableau lui-même quand le filtre est actif.
Pièces jointes
Bouton qui masque ligne ayant que des zeros v2.xls
- 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