diff --git a/src/param/param-values.ts b/src/param/param-values.ts
index dea1db9d04ea3f282f7fae570d5ca27489234532..81f1835b278a7ad7e316ca3f952445d7c48002d7 100644
--- a/src/param/param-values.ts
+++ b/src/param/param-values.ts
@@ -6,6 +6,12 @@ import { IterableValues, NamedIterableValues, NumberIterator, ParamValueIterator
 import { ParamValueMode } from "./param-value-mode";
 
 export class ParamValues implements INubReference, IterableValues {
+
+    /**
+     * implémentation par délégation de INubReference
+     */
+    public _nubRef: NubReference;
+
     /**
      * mode de génération des valeurs : min/max, liste, ...
      */
@@ -46,11 +52,6 @@ export class ParamValues implements INubReference, IterableValues {
      */
     private _iterator: NumberIterator;
 
-    /**
-     * implémentation par délégation de INubReference
-     */
-    private _nubRef: NubReference;
-
     constructor() {
         this._singleValue = new DefinedNumber();
         this._currentValue = new DefinedNumber();
@@ -163,12 +164,6 @@ export class ParamValues implements INubReference, IterableValues {
         return this._currentValue.isDefined;
     }
 
-    private checkValueMode(expected: ParamValueMode) {
-        if (this._valueMode !== expected) {
-            throw new Error(`ParamValues : mode de valeurs ${ParamValueMode[expected]} incorrect`);
-        }
-    }
-
     public get min() {
         switch (this._valueMode) {
             case ParamValueMode.MINMAX:
@@ -356,12 +351,14 @@ export class ParamValues implements INubReference, IterableValues {
      * @return prochaine valeur à parcourir par l'itérateur courant
      */
     public next(): IteratorResult<number> {
-        if (this.isReferenceDefined)
-            var res = this.referencedObject.next();
-        else {
+        let res;
+        if (this.isReferenceDefined) {
+            res = this.referencedObject.next();
+        } else {
             res = this._iterator.next();
-            if (!res.done)
+            if (!res.done) {
                 this._currentValue.value = res.value;
+            }
         }
         return res;
     }
@@ -369,4 +366,10 @@ export class ParamValues implements INubReference, IterableValues {
     public [Symbol.iterator](): IterableIterator<number> {
         return this;
     }
+
+    private checkValueMode(expected: ParamValueMode) {
+        if (this._valueMode !== expected) {
+            throw new Error(`ParamValues : mode de valeurs ${ParamValueMode[expected]} incorrect`);
+        }
+    }
 }
diff --git a/src/value_ref/object_ref.ts b/src/value_ref/object_ref.ts
index 7670eaaaaca224f4f3b985c6ac42bacecd42cc7d..f087ebb3af1cfd6fa518f1a2c3a2cf32d11ce622 100644
--- a/src/value_ref/object_ref.ts
+++ b/src/value_ref/object_ref.ts
@@ -6,7 +6,8 @@ import { Result } from "../util/result";
 /*
  * gestion de la valeur d'un paramètre par référence à une autre valeur (paramètre, résultat, résultat complémentaire)
  * 
- * la référence (cf. INubReference.defineReference) (cf. INubReference.defineReference) est de la forme <n | ouvrage[n] | N1>[.[N2]]
+ * la référence (cf. INubReference.defineReference) (cf. INubReference.defineReference)
+ * est de la forme <n | ouvrage[n] | N1>[.[N2]]
  *     n : indice de de l'ouvrage dans le cas des ouvrages parallèles
  *     N1 : un nom de paramètre/résultat (dans le cas d'un résultat, il est suivi d'un point)
  *     N2 : nom de résultat complémentaire (optionnel)
@@ -58,17 +59,6 @@ export interface IReferencedNub {
  * référence vers un Nub contenant une valeur vers laquelle on crée un lien
  */
 export interface INubReference {
-    /**
-     * définition de la valeur référencée dans le Nub
-     * @param target Nub contenant la valeur qu'on va référencer
-     * @param desc : description de la valeur pointée sous forme symbolique. Exemples : Q, <n° d'ouvrage>.Z1
-     */
-    defineReference(target: IReferencedNub, desc: string): void;
-
-    /**
-     * supprime la référence
-     */
-    undefineReference(): void;
 
     /**
      * description symbolique de la référence
@@ -104,6 +94,18 @@ export interface INubReference {
      * objet (paramètre/résultat/résultat complémentaire) référencé
      */
     readonly referencedObject: NamedIterableValues;
+
+    /**
+     * définition de la valeur référencée dans le Nub
+     * @param target Nub contenant la valeur qu'on va référencer
+     * @param desc : description de la valeur pointée sous forme symbolique. Exemples : Q, <n° d'ouvrage>.Z1
+     */
+    defineReference(target: IReferencedNub, desc: string): void;
+
+    /**
+     * supprime la référence
+     */
+    undefineReference(): void;
 }
 
 /**
@@ -135,7 +137,7 @@ export class NubReference implements INubReference {
     }
 
     public get isReferenceDefined(): boolean {
-        return this._referencedNub !== undefined && this._refDefinition !== undefined;
+        return this._referencedNub != undefined && this._refDefinition != undefined;
     }
 
     /**
@@ -152,7 +154,9 @@ export class NubReference implements INubReference {
         if (!this.isReferenceDefined) {
             return undefined;
         }
-        return this._referencedNub.getReferencedParamValues(this._refDefinition);
+        const rpv = this._referencedNub.getReferencedParamValues(this._refDefinition);
+        rpv._nubRef = this;
+        return rpv;
     }
 
     /**