Masquer une ligne sous condition

Résolu
chrichnou051 Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   -  
Boswellias Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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
Loic
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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   Statut Contributeur Dernière intervention   953
 
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   Statut Membre Dernière intervention  
 
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