diff --git a/src/macrorugo/macrorugo.ts b/src/macrorugo/macrorugo.ts
index 6cb7c29b65344d66de7f99c1f5172f4342d37cf8..2a652cc40dd99d399a4a806e1b47a6560496e177 100644
--- a/src/macrorugo/macrorugo.ts
+++ b/src/macrorugo/macrorugo.ts
@@ -70,7 +70,7 @@ export class MacroRugo extends Nub {
         // Cote de fond aval
         r.extraResults.ZF2 = this.prms.ZF1.v - this.prms.If.v * this.prms.L.v;
         // Vitesse débitante
-        r.extraResults.Vdeb = this.V(this.prms.Q) / this.prms.B.v / this.prms.Y.v;
+        r.extraResults.Vdeb = this.prms.Q.V / this.prms.B.v / this.prms.Y.v;
         // Froude
         const vg: number = r.extraResults.Vdeb / (1 - Math.sqrt(MacroRugo.fracAxAy * this.prms.C.v));
         r.extraResults.Fr = vg / Math.sqrt(MacroRugo.g * this.prms.Y.v);
@@ -81,7 +81,7 @@ export class MacroRugo extends Nub {
             Math.pow(r.extraResults.Fr, -2 / 3)
         );
         // Puissance dissipée
-        r.extraResults.PV = 1000 * MacroRugo.g * this.V(this.prms.Q) / this.prms.B.v * this.prms.If.v;
+        r.extraResults.PV = 1000 * MacroRugo.g * this.prms.Q.V / this.prms.B.v * this.prms.If.v;
         // Type d'écoulement
         if (this.prms.Y.v / this.prms.PBH.v < 1) {
             r.extraResults.ENUM_MacroRugoFlowType = MacroRugoFlowType.EMERGENT;
diff --git a/src/nub.ts b/src/nub.ts
index e2669f2bedaa46de1e6ba03cb5b24a4a7e22a263..d42cdba094eb5b66d8262eb02437ef39a6ce920f 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -466,21 +466,6 @@ export abstract class Nub extends ComputeNode implements IObservable {
         return this._result;
     }
 
-    /**
-     * Renvoie la valeur actuelle d'un paramètre (valeur utilisateur ou résultat)
-     * @param p Paramètre
-     */
-    public V(p: ParamDefinition): number {
-        if (p.valueMode === ParamValueMode.CALCUL) {
-            if (this.result !== undefined) {
-                if (this.result.resultElement.ok) {
-                    return this.result.vCalc;
-                }
-            }
-        }
-        return p.currentValue;
-    }
-
     public addChild(child: Nub, after?: number) {
         if (after !== undefined) {
             this._children.splice(after + 1, 0, child);
@@ -931,6 +916,7 @@ export abstract class Nub extends ComputeNode implements IObservable {
                         ret.hasErrors = true;
                     }
                 } else {
+                    // tslint:disable-next-line:no-console
                     console.error(`session file : cannot find parameter ${p.symbol} in target Nub`);
                     ret.hasErrors = true;
                 }
diff --git a/src/param/param-definition.ts b/src/param/param-definition.ts
index d6d2b2ba8d58f743bad4ee2a3079aa73710e6f3f..3602bd98ef6fd431322a67b575025d1cf6b825df 100644
--- a/src/param/param-definition.ts
+++ b/src/param/param-definition.ts
@@ -1057,6 +1057,20 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
         return this.calculability === ParamCalculability.EQUATION;
     }
 
+    /**
+     * Renvoie la valeur actuelle du paramètre (valeur courante ou résultat si calculé)
+     */
+    get V(): number {
+        if (this.valueMode === ParamValueMode.CALCUL) {
+            if (this.parentNub.result !== undefined) {
+                if (this.parentNub.result.resultElement.ok) {
+                    return this.parentNub.result.vCalc;
+                }
+            }
+        }
+        return this.currentValue;
+    }
+
     public clone(): ParamDefinition {
         const res = new ParamDefinition(this._parent, this._symbol,
             this.domain.clone(), this._unit, this.singleValue, this._family, this.visible);