2013-10-22 01:45:14 +0000 2013-10-22 01:45:14 +0000
2
2

Code VBA permettant de masquer ou de rendre invisible des lignes basées sur la valeur d'une cellule

Voici mon code, mais il ne fait rien, je ne vois rien de mal à cela :

Private Sub PG1(ByVal Target As Range)
    If .Range("E50").Value = "Passed" Then
        Rows("51").EntireRow.Hidden = True
    End If
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51").EntireRow.Hidden = True
    End If
End Sub

Mon intention est que lorsque cette cellule spécifique de la ligne précédente est réglée sur “Passed” dans le menu déroulant, la ligne inférieure apparaîtra, si c'est un “Failed”, elle sera cachée.

Réponses (3)

9
9
9
2013-10-22 02:24:58 +0000

Il semble que votre code contienne quelques fautes de frappe. Vous voulez quelque chose qui ressemble à ça :

Sub PG1()

    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False
    End If

End Sub

Pour que la ligne se cache/déchire au fur et à mesure que vous changez la feuille, mettez-la dans un événement Worksheet_Change :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E50").Value = "Passed" Then
        Rows("51:51").EntireRow.Hidden = True
    ElseIf Range("E50").Value = "Failed" Then
        Rows("51:51").EntireRow.Hidden = False

    End If
End Sub
1
1
1
2015-08-06 21:24:01 +0000

il n'y avait pas de faute de frappe. “rows(51)” est valide. mais vous n'avez pas besoin du modificateur “entirerow”

rows(n).hidden=true ; where n is an valid row number

pour masquer plusieurs lignes

range(rows(n1),rows(n2)).hidden=true ; will hide rows n1 though n2
-1
-1
-1
2015-03-27 15:33:16 +0000
Private Sub PG1()
    Range("$E$51").EntireRow.Hidden = (Range("$E$50").Value = "Passed")
End Sub