Masquer/Afficher lignes si cellule est égale à 0

Bonjour à toutes et à tous,

Je sollicite votre aide svp car je tourne en rond. Je souhaite pouvoir à l'aide d'un bouton afficher et masquer les lignes si les cellules en A sont égales à 0. J'ai essayé plusieurs macros (avec autofiltrer ou sans) mais sans succès .

Mes cellules en A de la feuille ont une valeur issue d'une formule pour extraire ces données de la BDD.

Je vous joint le fichier test (sachant que j'ai à peu près 7000 lignes a tester ).

24fichier-test.xlsm (30.57 Ko)

En vous remerciant par avance pour votre aide.

Bonne journée .

Bonjour Ma3storm, bonjour le forum,

le code ci-dessous masque les lignes 0 s'il n'y a aucun filtre et affiche tout si le filtre 0 a déjà été appliqué :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)

Set O = Worksheets("1 - Craquage") 'définit l'onglet O
Set PL = O.Range("A1").CurrentRegion 'définit la plage PL
If O.FilterMode = False Then 'condition : si il n'ay a aucun filtre dans l'onglet
    PL.AutoFilter field:=1, Criteria1:="<>0" 'masque les lignes 0
Else 'sinon
    O.ShowAllData 'affiche toutes les ligne
End If 'fin de la condition
End Sub

Bonjour ma3storm, ThauThème , le forum,

Une autre approche....

Cordialement,

Bonjour ThauThème,

Merci beaucoup cela fonctionne .

Par contre, si je souhaite changer la destination de la macro (j'ai actuellement 25 onglets), comment je peux faire ?

J'ai essayé de changer le nom de la feuille ligne 5 de la macro mais cela me renvoie vers "erreur d’exécution 9" (je débute en VBA )

Encore merci pour l'aide.

Bonjour le fil, bonjour le forum,

Oui tu as fais exactement ce qu'il fallait faire mais tu as dû mal copier le nom de l'onglet et ça a généré l'erreur 9... N'oublie pas les guillemets avant et après...

Ah ok je réessaye alors merci .

Bonjour xorsankukai, j'essaye ça de suite et je te redit, merci beaucoup.

Alors la solution de Xorsankukai me plait plus. Par contre je ne comprends pas, j'ai toujours le même problème avec l'indice 9.

Voila la macro quand j'essaye de l'adapter à l'onglet n°4 "71 - BAB" :

Private Sub CommandButton1_Click()

Dim LastLig As Long, i As Long

Application.ScreenUpdating = False
With Worksheets("Feuil4")
    LastLig = .UsedRange.Rows.Count + .UsedRange.Row - 1
    For i = LastLig To 2 Step -1
        If Application.CountA(.Rows(i)) = 0 Then .Rows(i).Delete
    Next i
End With
End Sub

Private Sub ToggleButton1_Click()
 If ToggleButton1.Value = True Then
  Call masque
 Else
  Call affiche
 End If
End Sub

Encore merci d'avance pour votre aide .

Re,

Si tu adaptes tu as trois options :

Soit tu l'Index et là c'est :

With Worksheets(4)

Soit tu utilise le nom, propriété (Name) et là c'est :

With Worksheets("71 - BAB")

Soit tu utilise l'autre nom, propriété Name et là c'est :

With Feuil4

Ok merci beaucoup pour vos réponses.

Bonne journée

Bonsoir ThauThème,

screen

pour ton post de 11:26, 3ème exemple : Feuil4 n'est pas le Name ; c'est le CodeName.

dhany

Re,

Oui Danhy je ne trouvais plus le terme exact. Du coup j'ai regardé dans la fenêtre des propriétés où bizarrement le nom c'est la propriété (Name) et le CodeName c'est la propriété Name. Un peu c** quand même...

tu a écrit :

le nom c'est la propriété (Name) et le CodeName c'est la propriété Name.

ouppps ! tu as encore inversé : c'est (Name) qui est le CodeName et Name qui est le Name :

screen

dhany

Re,

Alors là !... Ça m'inverserait que je m'étonne...

Rechercher des sujets similaires à "masquer afficher lignes egale"