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