To only loop trough visible cells in your range, use:
For Each myCell In myRange.SpecialCells(xlCellTypeVisible)
For the other art of your question, using myCell.Formula instead of myCell.Value will probably help. Though you'll have to remove the equal sign if using the existing formula within another. Something like:
myCell.Formula = "=(" & Replace(myCell.Formula, "=", "", 1, -1, vbBinaryCompare) & ")" & InputFormula
Note that you'll run into trouble if you use an equal sign other places than at the start of the formula using this method, in that case
Right(myCell.Formula, Len(myCell.Formula) - 1)
might be a better choice for what to put into the parentheses. This will however break if there *isn't* an equal sign at the start of the formula. It shouldn't be too hard to foolproof this a bit further, but I'll leave that as an exercise to the reader. I think what I have included here should give you a good starting point at any rate.