diff --git a/src/section/section_nub.ts b/src/section/section_nub.ts
index af47cd5d0e4537fadc32a3eae1c1407b3797a88c..a9c0938906fa7ce363b739d44e219a2abc9d5abd 100644
--- a/src/section/section_nub.ts
+++ b/src/section/section_nub.ts
@@ -3,6 +3,8 @@ import { acSection } from "./section_type";
 import { Result } from "../util/result";
 import { ParamDefinition, ParamCalculability } from "../param/param-definition";
 import { ParamDomain, ParamDomainValue } from "../param/param-domain";
+import { ParamValueMode } from "../param/param-values";
+import { ResultElement } from "../util/resultelement";
 
 /**
  * Nub sur les sections paramétrées
@@ -140,4 +142,91 @@ export class SectionParametree extends Nub {
                 throw new Error(`SectionParam.Equation() : calcul sur ${sVarCalc} non implémenté`);
         }
     }
+
+    private hasVariatedParameter(): boolean {
+        for (const k in this._prms.map) {
+            const p: ParamDefinition = this._prms.map[k];
+            switch (p.valueMode) {
+                case ParamValueMode.LISTE:
+                case ParamValueMode.MINMAX:
+                    return true;
+            }
+        }
+        return false;
+    }
+
+    private addExtraResultFromVar(varCalc: string, Y: number, re: ResultElement) {
+        const r: Result = this._section.Calc(varCalc, Y);
+        if (r.ok)
+            re.addExtraResult(varCalc, r.vCalc);
+        else
+            re.log.addLog(r.log);
+    }
+
+    public CalcSerie(rPrec: number = 0.001, rInit?: number, sDonnee?: string): Result {
+        //paramètre à varier ?
+
+        if (this.hasVariatedParameter())
+            return super.CalcSerie(rPrec, rInit, sDonnee);
+
+        // sinon, on stocke toutes les valeurs des variables à calcul dans les résultats supplémentaires
+
+        const Y = this.getParameter("Y").v; // tirant d'eau original (doit être fourni à acSection.Calc() sous peine d'être modifié par les appels successifs car c'est en même temps un paramètre et une variable temporaire)
+        const result = new Result();
+        const re = new ResultElement();
+        result.addResultElement(re);
+
+        // charge spécifique
+        this.addExtraResultFromVar("Hs", Y, re);
+
+        // charge critique
+        this.addExtraResultFromVar("Hsc", Y, re);
+
+        // largeur au miroir
+        this.addExtraResultFromVar("B", Y, re);
+
+        // périmètre hydraulique
+        this.addExtraResultFromVar("P", Y, re);
+
+        // surface hydraulique
+        this.addExtraResultFromVar("S", Y, re);
+
+        // rayon hydraulique
+        this.addExtraResultFromVar("R", Y, re);
+
+        // vitesse moyenne
+        this.addExtraResultFromVar("V", Y, re);
+
+        // nombre de Froude
+        this.addExtraResultFromVar("Fr", Y, re);
+
+        // tirant d'eau critique
+        this.addExtraResultFromVar("Yc", Y, re);
+
+        // tirant d'eau normal
+        this.addExtraResultFromVar("Yn", Y, re);
+
+        // tirant d'eau fluvial
+        this.addExtraResultFromVar("Yf", Y, re);
+
+        // tirant d'eau torrentiel
+        this.addExtraResultFromVar("Yt", Y, re);
+
+        // tirant d'eau conjugué
+        this.addExtraResultFromVar("Yco", Y, re);
+
+        // perte de charge
+        this.addExtraResultFromVar("J", Y, re);
+
+        // Variation linéaire de l'énergie spécifique
+        this.addExtraResultFromVar("I-J", Y, re);
+
+        // impulsion hydraulique
+        this.addExtraResultFromVar("Imp", Y, re);
+
+        // contrainte de cisaillement
+        this.addExtraResultFromVar("Tau0", Y, re);
+
+        return result;
+    }
 }