As you have found, Worksheet_Change only reacts to a cell being modified directly by the user. So if the cell contains a formula, Worksheet_Change won't be executed.
One workaround is to check the cells that you do edit directly and that contribute to the result of the formula.
A simple example: A8 contains the formula =SUM(A2:A7) and A2 to A7 are entered/edited directly.
The code could then look like this:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A2:A7"), Target) Is Nothing Then
Application.EnableEvents = False
Rows("9:14").EntireRow.Hidden = (Range("A8").Value = 0)
Application.EnableEvents = True
End If
End Sub
Another workaround is to use the Worksheet_Calculate event. This is easier, but the disadvantage is that you cannot check which cells have been calculated, and hence the overhead is larger.
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
Rows("9:14").EntireRow.Hidden = (Range("A8").Value = 0)
Application.EnableEvents = True
End Sub