Masquer une ligne sous condition

Résolu/Fermé
chrichnou051 Messages postés 152 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 30 décembre 2010 - 8 oct. 2008 à 12:07
Boswellias Messages postés 8 Date d'inscription jeudi 10 décembre 2015 Statut Membre Dernière intervention 26 septembre 2019 - 24 sept. 2019 à 11:35
Bonjour,
J'ai lu plusieurs post à ce niveau mais je n'ai jamais vraiment trouver de solution.

En fait je souhaiterais, si possible pouvoir masquer une ligne si la cellule de la colonne B de la même ligne est vide. Les lignes 10 à 30 et 32 à 57 doivent être testée de cette manière.

Si possible sans macro vu que je n'y connais rien.

Merci d'avance.

PS: Si une macro est nécessaire je veux bien la placer mais à vous de m'aider à la placer correctement.
A voir également:

9 réponses

eriiic Messages postés 24560 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 février 2024 7 205
8 oct. 2008 à 21:33
Bonsoir,

Faisable uniquement par macro.

Je suppose que c'est par fonction que tes cellules Bx se remplissent ou se vident, et que ce n'est pas par une saisie sur la même ligne qu'elles doivent réapparaitre (sinon tu auras du mal...).

Si c'est le cas tu fais un clic-droit sur le nom de l'onglet concerné, tu choisis 'visualiser le code'
et tu colles le code suivant dans la fenetre de droite.
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim plage As Range, c As Range
    Set plage = Union([B10:B30], [B32:B57])
    For Each c In plage
        If c.Value = "" Then
            c.EntireRow.Hidden = True
        Else
            c.EntireRow.Hidden = False
        End If
    Next c
    plage = Nothing
End Sub

A chaque saisie dans la feuille les cellules seront explorées et les lignes affichées/masquées

eric
4
Bonjour,

Néophyte en programmation, je suis tombé sur votre page de code ci-dessus. Elle correspond parfaitement à mes attentes et fonctionne très bien.

Seul souci, il faut entrer physiquement un caractère ou changer une cellule dans la feuille concernée, pour qu'elle détecte un changement et procède à l'affichage / masquer de la dite feuille.

Cependant, toute ma saisie s'effectue sur une autre feuille. La feuille contenant le code n'a pas vocation à être modifiée.

Aussi, est-il possible de changer ce code pour qu'il détecte le changement de valeur de la cellule par le calcul dans la feuille ?

Merci par avance.
0
eriiic Messages postés 24560 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 février 2024 7 205
2 août 2012 à 00:45
Bonsoir,

Cependant, toute ma saisie s'effectue sur une autre feuille. La feuille contenant le code n'a pas vocation à être modifiée.
Et si tu mettais le code dans la feuille concernée ?

Aussi, est-il possible de changer ce code pour qu'il détecte le changement de valeur de la cellule par le calcul dans la feuille ?
Cette macro régit sur une saisie dans une cellule. En vba on ne peut pas détecter un changement du résultat d'une formule.
Voir post #9 dans ce cas

eric
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 938
2 août 2012 à 01:00
Salut le forum

Utilise l'événement Calculate.
Private Sub Worksheet_Calculate()
    Dim plage As Range, c As Range
    Set plage = Union([B10:B30], [B32:B57])
    For Each c In plage
        If c.Value = "" Then
            c.EntireRow.Hidden = True
        Else
            c.EntireRow.Hidden = False
        End If
    Next c
    Set plage = Nothing
End Sub

Mytå
0
Boswellias Messages postés 8 Date d'inscription jeudi 10 décembre 2015 Statut Membre Dernière intervention 26 septembre 2019
24 sept. 2019 à 11:35
Salut
en fait j'ai presque le même travail que "CHRICHNOU051), je copie je colle comme indiqué mais .... rien se passe
au fait j'ai une feuille de calcul qui se "remplie" automatiquement d'après des données importées d'une autre feuille , alors j'aimerais que lorsqu'une ligne ne comporte aucune donnée elle sera automatiquement masquée ainsi il n'a y aura pas de vide dans la feuille
0