Código vb.net:
Ver originalFor i As Integer = 0 To DgTotales.Rows.Count - 1
valor = CDec(DgTotales.Rows(i).Cells(2).Value)
If valor <> 0 Then
total = CDec((valor) / CDbl(Text) * 100)
DgTotales.Rows(i).Cells(2).Value = total
End If
Next
no entiendo porque dices bucle infinito... sino no veo que haga algo infinito ya que esta definido por la cantidad de filas de tu datagrid...