diff --git a/src/dichotomie.ts b/src/dichotomie.ts
index 568fdc977acef3867fb907c88d0f33111cb2166e..62876caf6e2fc917e57328b9ea5e51b91a5e1b27 100644
--- a/src/dichotomie.ts
+++ b/src/dichotomie.ts
@@ -147,7 +147,7 @@ export class Dichotomie extends Debug {
     }
 
     private set vX(vCalc: number) {
-        this._paramX.v = vCalc;
+        this._paramX.setValue(vCalc, false);
     }
 
     /**
diff --git a/src/nub.ts b/src/nub.ts
index 4decb596884a330eb4a8668529542120615db2e9..67e8a9c39a24bdc30db11c6b09a969f835c20f35 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -55,7 +55,7 @@ export abstract class Nub extends ComputeNode {
             return this._result;
         }
         const sAnalyticalPrm: string = this.getFirstAnalyticalParameter().symbol;
-        computedVar.v = resSolve.vCalc;
+        computedVar.setValue(resSolve.vCalc, false);
         const res: Result = this.Equation(sAnalyticalPrm);
         res.vCalc = resSolve.vCalc;
         this._result = res;
diff --git a/src/param/param-base.ts b/src/param/param-base.ts
index b5ee3c26c9f58f70d47e8a1af193afe98f7f80cd..ada74c3f836f9ffffa0745bc5d4f9bafc504d410 100644
--- a/src/param/param-base.ts
+++ b/src/param/param-base.ts
@@ -31,7 +31,7 @@ export class BaseParam extends JalhydObject {
         this._symbol = symb;
 
         this._paramValues = new ParamValues();
-        this._paramValues.singleValue = val;
+        this._paramValues.setSingleValue(val);
 
         if (d instanceof ParamDomain) {
             this._domain = d;
@@ -76,9 +76,9 @@ export class BaseParam extends JalhydObject {
         return this._paramValues.singleValue;
     }
 
-    public setValue(val: number) {
+    public setValue(val: number, updateValueMode = true) {
         this.checkValue(val);
-        this._paramValues.singleValue = val;
+        this._paramValues.setSingleValue(val, updateValueMode);
 
         //        console.log("setting param " + this._symbol + " id=" + this._id + " to " + val); // A VIRER
     }
diff --git a/src/param/param-values.ts b/src/param/param-values.ts
index 62d132ba666f730aec92977eab55e5a1f088b545..c8302327c559150ea5c219de32dc5865535cba5d 100644
--- a/src/param/param-values.ts
+++ b/src/param/param-values.ts
@@ -211,23 +211,23 @@ export class ParamValues {
 
     constructor() {
         this._singleValue = new DefinedNumber();
-        this.valueMode = ParamValueMode.CALCUL;
+        this._valueMode = ParamValueMode.CALCUL;
     }
 
     public setValues(o: number | any, max?: number, step?: number) {
         if (typeof (o) === "number") {
             if (max == undefined) {
-                this.valueMode = ParamValueMode.SINGLE;
+                this._valueMode = ParamValueMode.SINGLE;
                 this._singleValue.value = o as number;
             } else {
-                this.valueMode = ParamValueMode.MINMAX;
+                this._valueMode = ParamValueMode.MINMAX;
                 this._minValue = o as number;
                 this._maxValue = max;
                 this._stepValue = step;
             }
         }
         else if (Array.isArray(o)) {
-            this.valueMode = ParamValueMode.LISTE;
+            this._valueMode = ParamValueMode.LISTE;
             this._valueList = o;
         }
         else
@@ -286,9 +286,10 @@ export class ParamValues {
         return this._singleValue.uncheckedValue;
     }
 
-    public set singleValue(v: number) {
+    public setSingleValue(v: number, updateValueMode = true) {
         this._singleValue.value = v;
-        this.valueMode = ParamValueMode.SINGLE;
+        if (updateValueMode)
+            this._valueMode = ParamValueMode.SINGLE;
     }
 
     public get isDefined() {
@@ -301,7 +302,7 @@ export class ParamValues {
 
     public set min(v: number) {
         this._minValue = v;
-        this.valueMode = ParamValueMode.MINMAX;
+        this._valueMode = ParamValueMode.MINMAX;
     }
 
     public get max() {
@@ -310,7 +311,7 @@ export class ParamValues {
 
     public set max(v: number) {
         this._maxValue = v;
-        this.valueMode = ParamValueMode.MINMAX;
+        this._valueMode = ParamValueMode.MINMAX;
     }
 
     public get stepRefValue(): Pair {
@@ -325,7 +326,7 @@ export class ParamValues {
 
     public set step(v: number) {
         this._stepValue = v;
-        this.valueMode = ParamValueMode.MINMAX;
+        this._valueMode = ParamValueMode.MINMAX;
     }
 
     public get valueList() {
@@ -335,7 +336,7 @@ export class ParamValues {
 
     public set valueList(l: number[]) {
         this._valueList = l;
-        this.valueMode = ParamValueMode.LISTE;
+        this._valueMode = ParamValueMode.LISTE;
     }
 
     /**
@@ -383,7 +384,7 @@ export class ParamValues {
      * copie des membres
      */
     public copyMembers(n: ParamValues) {
-        n._valueMode = this.valueMode;
+        n._valueMode = this._valueMode;
         n._singleValue = new DefinedNumber(this._singleValue.value);
         n._minValue = this._minValue;
         n._maxValue = this._maxValue;
diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts
index b911769522e12824c0f7a537270ebe0978e0fc0d..b946c9853fddce44d6b7af80af3f05baf4b4e918 100644
--- a/src/structure/parallel_structure.ts
+++ b/src/structure/parallel_structure.ts
@@ -189,7 +189,7 @@ export class ParallelStructure extends Nub {
      */
     private CalcStructPrm(sVC: IStructureVarCalc, rInit?: number, rPrec: number = 0.001): Result {
         // Le débit restant sur la structure en calcul est :
-        this.structures[sVC.index].prms.Q.v = this.prms.Q.v - this.CalcQ(sVC.index).vCalc;
+        this.structures[sVC.index].prms.Q.setValue(this.prms.Q.v - this.CalcQ(sVC.index).vCalc, false);
 
         // Calcul du paramètre de la structure en calcul
         return this.structures[sVC.index].Calc(sVC.prm, rInit, rPrec);