Private Sub Worksheet_Change(ByVal Target As Range)
Dim t, j&
Application.ScreenUpdating = False
With Sheets("Sheet6")
t = Intersect(.Range("b5").CurrentRegion, .Rows("5:6"))
For j = 2 To UBound(t, 2): Sheets(t(1, j)).Visible = LCase(t(2, j)) <> LCase("Non"): Next
End With
End Sub