Code VBA pour masquer ou afficher des lignes en fonction d'une valeur de cellule

C'est mon code, mais ça ne fait vraiment rien, je ne vois rien de mal avec ça:

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 définie sur "Passé" dans la liste déroulante, la ligne ci-dessous apparaîtrait, si elle est "Echec" puis elle sera masquée à la place.

Il semble que votre code comporte des fautes de frappe. Vous voulez quelque chose comme ç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 cache / affiche la mise à jour lorsque vous modifiez 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 

Il n'y avait aucune faute de frappe. "Les lignes (51)" sont valides. Mais vous n'avez pas besoin du modificateur "en route"

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

Pour cacher plusieurs lignes

  range(rows(n1),rows(n2)).hidden=true ; will hide rows n1 though n2 
 Private Sub PG1() Range("$E$51").EntireRow.Hidden = (Range("$E$50").Value = "Passed") End Sub