VBA - masquer / afficher lignes de tableau non vides

Bonjour à tous,

Nouvelle sur ce site, je me prends la tête depuis quelques temps avec un tableau et une macro que j'aimerais lui ajouter pour afficher toutes les lignes non vides d'un tableau contenant des formules : tout en laissant masquées toutes les cellules vides.

je m'explique :

J'ai un tableau2 contenant des formules faisant référence à un tableau source contenant les modifs prix pour des clients. Parfois seul un code n'est modifié, parfois plusieurs pour le même client. Toutes les cellules du tableau2 ont des formules avec SI et INDIRECT ; afin d'afficher toujours les premières lignes du tableau source, où l'on insère à chaque fois une ligne en haut ; dans mon tableau B j'ai soit rien ("") soit des noms de clients, quantités, prix etc. selon si les critères dans le tableau source correspondent ou non. Les lignes de mon tableau sont donc soit complètement remplies, soit totalement vides.

Je voudais masquer à l'avance toutes les lignes et ne garder que la première (+ les titres), et faire une macro assignée à un bouton afin d'afficher toutes les lignes dans le cas ou plus d'une modification prix a été entrée (si nous avons donc plus d'une ligne complétée).

En bref: un tableau à deux lignes , le reste est masqué : un bouton permettant d'activer une macro qui afficherait toutes les lignes s'étant remplies grace à la formule, et laissant le reste masqué.

Merci de votre soutien,

si c'est pas clair , je complèterai.

101test-excel-macro.zip (11.75 Ko)

Bonjour,

Essaye les codes suivants selon besoin en le liant un autre bouton de commande :

Sub Masquer_lignes_zéros()
 ' Masquer_lignes_zéros
    Application.ScreenUpdating = False
    For Each lig In Rows("6:35")
        If WorksheetFunction.Sum(lig) = 0 Then
            lig.EntireRow.Hidden = True
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Sub Masquer_lignes_vides()
    ' Masquer_lignes_vides
    Application.ScreenUpdating = False
    For Each lig In Rows("6:35")
        If WorksheetFunction.CountA(lig) = Empty Then
            lig.EntireRow.Hidden = True
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Merci Raja de ta réponse, pour l'instant je n'arrive pas à le faire marcher cependant.

Que changer dans le code si je veux faire le contraire : afficher les cellules non vides plutôt que masquer les cellules vides ?

Bonjour

Sub Afficher_Tout()
Application.ScreenUpdating = False
Rows("6:100").Select
    Selection.EntireRow.Hidden = False
Dim Cel As Range
For Each Cel In Range("A6:A100") 'Plage à adapter à la tienne
If Cel.Value = "" Then
Cel.EntireRow.Hidden = True
End If
Next
Range("A5").Select
End Sub

Sub Départ()
Application.ScreenUpdating = False
    Rows("6:100").Select
    Selection.EntireRow.Hidden = True
    Range("A5").Select
    End Sub

Cordialement

267test-excel-macro.zip (14.25 Ko)
Rechercher des sujets similaires à "vba masquer afficher lignes tableau vides"