Bouton masquer lignes vides

Bonjour,

Je souhaiterais créer un bouton sur mon fichier qui permettrait de masquer les lignes vides ( ci joint un fichier “Test”)

Et un deuxième pour les afficher à nouveau.

J’ai essayer des codes vba mais sans trouver ma solution.

Pouvez vous m’aider ?

Merci d’avance!

Test (2).xlsx (11,5 Ko)

Bonjour,

Code du bouton Masquer :

Sub Masquer()
  Dim L As Long, C As Range
  Set C = Cells.Find("*", , , xlPart, xlByRows, xlPrevious)
  If Not C Is Nothing Then
    L = C.Row
    For i = L To 5 Step -1
      If Application.CountA(Cells(i, 3).Resize(, 5)) = 0 Then
        Rows(i).Hidden = True
      End If
    Next i
  End If
End Sub

Test (2).xlsm (21,3 Ko)

Code du bouton Afficher :

Sub Afficher()
  Dim L As Long, C As Range
  Set C = Cells.Find("*", , , xlPart, xlByRows, xlPrevious)
  If Not C Is Nothing Then
    L = C.Row
    Range(L & ":5").EntireRow.Hidden = False
  End If
End Sub

Daniel

oubien un alternatif

Sub Afficher2()
On Error Resume Next
Sheets("liste").AutoFilter.Range.AutoFilter
On Error GoTo 0
End Sub
Sub Masquer2()
Dim DernLigne
With Sheets("liste")
DernLigne = Evaluate("max(if(len(liste!C:C),row(liste!C:C),0))")     'ligne de la dernière cellule non-vide de C
.Range("C2:C" & DernLigne).AutoFilter 1, "<>"
End With
End Sub

1 « J'aime »

Merci pour votre réponse.

Je appliqué ce code à mon fichier et je reviens vers vous.

Bonne journée

Bonjour,

J’ai appliqué le code de Daniel a mon fichier.

Par contre je n’ai pas réussi à appliquer Celui de Cow18…

Le code de Daniel fonctionne mais cela ne correspond pas vraiment à mon besoin (je n’ai dû être assez précis !)

J’ai besoin de masquer les lignes vides en face des noms (celles avec les cellules comportant des “0”)

Dans mon fichier elles sont totalement vide (sans “0”).

Est ce que le fait d’avoir des cellules fusionnées pose problème ?

Merci d’avance

Bonjour,

OUI !!! J’ai toujours pensé qu’on devrait fusiller les gens qui fusionnent les cellules ! lol. Sérieusement, si tu fusionnes B5, B6 et B7, les cellules B6 et B7 sont vides. On peut s’en sortir si il y a toujours 3 lignes par nom, sinon, il faut tester la couleur ou les bordures. A toi de dire ce qu’il en est.

Daniel

Essaie :

Sub Masquer()
  Dim L As Long, C As Range
  Set C = Cells.Find("*", , , xlPart, xlByRows, xlPrevious)
  If Not C Is Nothing Then
    L = C.Row
    For i = L To 5 Step -1
      If Application.CountA(Cells(i, 3).Resize(, 5)) = 0 And Cells(i, 3).Offset(, -1).Interior.ColorIndex <> -4142 Then
        Rows(i).Hidden = True
      End If
    Next i
  End If
End Sub
Sub Afficher()
  Dim L As Long, C As Range
  Set C = Cells.Find("*", , , xlPart, xlByRows, xlPrevious)
  If Not C Is Nothing Then
    L = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
    Range(L & ":5").EntireRow.Hidden = False
  End If
End Sub

Daniel

Ok,

Merci beaucoup !

je fais un essai et je te dis !

De retour…

J’ai appliqué le code et ça fonctionne en partie…

Concrètement, sur mon fichier ce code concerne via un bouton les lignes 35 à 200.

Hors lorsque je clique, il reste quelques lignes apparentes à partir de la ligne 65 mais de façon aléatoire (67;68 visibles puis masquées jusqu’à 95,…)

Les lignes étant strictement identiques, je ne comprends pas…

Sub Masquer2()
     Dim C     As Range
     With Sheets("Liste").Range("c5:c200")   'votre plage à vérifier (à adapter)
          For Each C In .Cells
               If Not C.MergeCells Then      'la cellule n'est pas fusionnée
                    If C.Offset(, -1).MergeCells Then     'celle à gauche l'est
                         If (WorksheetFunction.CountBlank(C.Resize(, 5)) + WorksheetFunction.CountIf(C.Resize(, 5), 0) = 5) Then C.EntireRow.Hidden = True     'ces 5 cellules sont vides ou contiennent 0
                    End If
               End If
          Next
     End With
End Sub

Sub Afficher2()
     With Sheets("Liste").Range("B5:B200")   'votre plage ( à adapter)
          .EntireRow.Hidden = False
     End With
End Sub

Merci pour cette proposition et les explications qui vont avec.

J’essayerai ça demain.

Bonne soirée

Bonjour à tous,

Je peux juste dire que mon code fonctionne pour le classeur que tu as fourni. Je teste sur la couleur de la colonne B. Il faut que les cellules soient colorées pour que la ligne soit masquée. Si le code de Cow18 ne convient pas non plus, il faudra que tu partages le classeur avec lequel tu fais les tests.

Daniel

1 « J'aime »

Ça y est !

J’ai donc appliqué le code de Cow18 et ça fonctionne parfaitement !

Un grand merci à Daniel et Cow18 pour votre aide!

Bonne journée

1 « J'aime »

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.