diff --git a/spec/base.spec.ts b/spec/base.spec.ts
index e06d92379a8bc8815805aaf6cf408089cc64fd4b..17f37c3f7852080e6a30b7de0ca487dd5792a37b 100644
--- a/spec/base.spec.ts
+++ b/spec/base.spec.ts
@@ -2,6 +2,7 @@
 
 import { Result } from "../src/base";
 import { nub, precDigits } from "./nubtest";
+import { Message, MessageCode, MessageSeverity } from "../src/util/message";
 
 
 describe('Class Nub: ', () => {
@@ -17,3 +18,12 @@ describe('Class Nub: ', () => {
         });
     });
 });
+
+describe('classe Message: ', () => {
+    describe('getSeverity(): ', () => {
+        it('criticité MessageCode.ERROR_DICHO_CONVERGE == MessageSeverity.ERROR', () => {
+            let m: Message = new Message(MessageCode.ERROR_DICHO_CONVERGE);
+            expect(m.getSeverity()).toEqual(MessageSeverity.ERROR);
+        });
+    });
+});
diff --git a/spec/nubtest.ts b/spec/nubtest.ts
index dc29daae30a78beae01673fab23025030bc2ce2e..f52ff13b99714ece1830698b17dbcbffc2c9273f 100644
--- a/spec/nubtest.ts
+++ b/spec/nubtest.ts
@@ -2,7 +2,7 @@ import { Result } from "../src/base";
 import { Nub } from "../src/nub";
 import { ComputeNodeType, ParamDefinition, ParamDomain, ParamDomainValue, ParamCalculability, ParamsEquation } from "../src/param";
 import { cLog } from "../src/util/log";
-import { ErrorMessage, ErrorCode } from "../src/util/error";
+import { Message, MessageCode } from "../src/util/message";
 
 class NubTestParams extends ParamsEquation {
     private _A: ParamDefinition;
@@ -137,19 +137,19 @@ export function compareLog(logTest: cLog, logValid: cLog) {
     // codes
 
     for (let i = 0; i < n1; i++) {
-        let m1: ErrorMessage = logTest.messages[i];
-        let m2: ErrorMessage = logValid.messages[i];
+        let m1: Message = logTest.messages[i];
+        let m2: Message = logValid.messages[i];
         b = m1.code == m2.code;
-        expect(b).toBeTruthy("journal : message n°" + i + ", code " + ErrorCode[m1.code] + " incorrect, devrait être " + ErrorCode[m2.code]);
+        expect(b).toBeTruthy("journal : message n°" + i + ", code " + MessageCode[m1.code] + " incorrect, devrait être " + MessageCode[m2.code]);
         if (!b) return;
     }
 
     // données
 
     for (let i = 0; i < n1; i++) {
-        let m1: ErrorMessage = logTest.messages[i];
-        let m2: ErrorMessage = logValid.messages[i];
-        let code1 = ErrorCode[m1.code];
+        let m1: Message = logTest.messages[i];
+        let m2: Message = logValid.messages[i];
+        let code1 = MessageCode[m1.code];
 
         // taille des données
 
diff --git a/spec/regime_uniforme_puissance.spec.ts b/spec/regime_uniforme_puissance.spec.ts
index cf13a8baa5ab1ccf95ba3b935efec40214806c2d..6790ce801ae596a8d9d63658323b8fd69c76a229 100644
--- a/spec/regime_uniforme_puissance.spec.ts
+++ b/spec/regime_uniforme_puissance.spec.ts
@@ -1,7 +1,7 @@
 /// <reference path="../node_modules/@types/jasmine/index.d.ts" />
 
 import { Result } from "../src/base";
-import { ErrorCode } from "../src/util/error";
+import { MessageCode } from "../src/util/message";
 import { RegimeUniforme } from "../src/regime_uniforme";
 import { ParamsSectionPuiss, cSnPuiss } from "../src/section/section_puissance";
 import { precDist, equalEpsilon } from "./nubtest";
@@ -125,7 +125,7 @@ describe('Class RegimeUniforme / section puissance :', () => {
 
             let res: Result = ru.Calc("k");
             expect(res.vCalc).toBeUndefined();
-            expect(res.code).toBe(ErrorCode.ERROR_DICHO_INIT_DOMAIN);
+            expect(res.code).toBe(MessageCode.ERROR_DICHO_INIT_DOMAIN);
         });
 
         it('k should be 0.635', () => {
@@ -192,7 +192,7 @@ describe('Class RegimeUniforme / section puissance :', () => {
 
             let res: Result = ru.Calc("Ks", 5000000);
             expect(res.vCalc).toBeUndefined();
-            expect(res.code).toBe(ErrorCode.ERROR_DICHO_INITVALUE_HIGH);
+            expect(res.code).toBe(MessageCode.ERROR_DICHO_INITVALUE_HIGH);
         });
 
         it('Ks should be undefined', () => {
@@ -211,7 +211,7 @@ describe('Class RegimeUniforme / section puissance :', () => {
 
             let res: Result = ru.Calc("Ks", 1e-8);
             expect(res.vCalc).toBeUndefined();
-            expect(res.code).toBe(ErrorCode.ERROR_DICHO_INITVALUE_LOW);
+            expect(res.code).toBe(MessageCode.ERROR_DICHO_INITVALUE_LOW);
         });
 
         it('If should be 0.001', () => {
diff --git a/spec/remous_rect_euler_pentefaible.spec.ts b/spec/remous_rect_euler_pentefaible.spec.ts
index cb6b713caecd142b673601814f5cd00ca8e559c1..9c568ac003964bb35cbc7e5416112366fb816efe 100644
--- a/spec/remous_rect_euler_pentefaible.spec.ts
+++ b/spec/remous_rect_euler_pentefaible.spec.ts
@@ -3,7 +3,7 @@ import { CourbeRemousParams, MethodeResolution, CourbeRemous } from "../src/remo
 import { precDigits, precDist, equalEpsilon, compareArray, compareObject, compareLog } from "./nubtest";
 import { round } from "../src/base";
 import { cLog } from "../src/util/log";
-import { ErrorMessage, ErrorCode } from "../src/util/error";
+import { Message, MessageCode } from "../src/util/message";
 
 describe('Class Remous / section rectangulaire :', () => {
     describe('méthode Euler explicite :', () => {
@@ -243,21 +243,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
 
             compareLog(log, expLog);
         });
@@ -297,21 +297,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
 
             compareLog(log, expLog);
         });
diff --git a/spec/remous_rect_euler_penteforte.spec.ts b/spec/remous_rect_euler_penteforte.spec.ts
index 3ddc543a54a06935af934d5352b9afc3603f8b98..f717600906120bab67f16020c62560cfa3003994 100644
--- a/spec/remous_rect_euler_penteforte.spec.ts
+++ b/spec/remous_rect_euler_penteforte.spec.ts
@@ -3,7 +3,7 @@ import { CourbeRemousParams, MethodeResolution, CourbeRemous } from "../src/remo
 import { precDigits, precDist, equalEpsilon, compareArray, compareObject, compareLog } from "./nubtest";
 import { round } from "../src/base";
 import { cLog } from "../src/util/log";
-import { ErrorMessage, ErrorCode } from "../src/util/error";
+import { Message, MessageCode } from "../src/util/message";
 
 describe('Class Remous / section rectangulaire :', () => {
     describe('méthode Euler explicite :', () => {
@@ -43,22 +43,22 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "amont";
             m.extraVar["x"] = 0;
             expLog.add(m);
@@ -104,27 +104,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 95;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "aval";
             m.extraVar["x"] = 100;
             expLog.add(m);
@@ -171,27 +171,27 @@ describe('Class Remous / section rectangulaire :', () => {
         //     compareArray("abscisses", res["trX"], x);
 
         //     let expLog = new cLog();
-        //     let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+        //     let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
         //     m.extraVar["B"] = 2.5;
         //     expLog.add(m);
 
-        //     m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+        //     m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
         //     m.extraVar["Yc"] = 0.403;
         //     expLog.add(m);
 
-        //     m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+        //     m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
         //     m.extraVar["Yn"] = 0.253;
         //     expLog.add(m);
 
-        //     expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+        //     expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-        //     m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+        //     m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
         //     m.extraVar["x"] = 85;
         //     expLog.add(m);
 
-        //     expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+        //     expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-        //     m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+        //     m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
         //     m.extraVar["xmin"] = 90;
         //     m.extraVar["xmax"] = 90;
         //     expLog.add(m);
@@ -235,23 +235,23 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 3.75;
             expLog.add(m);
@@ -294,21 +294,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
             compareLog(log, expLog);
         });
@@ -348,21 +348,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
             compareLog(log, expLog);
         });
diff --git a/spec/remous_rect_rk4_pentefaible.spec.ts b/spec/remous_rect_rk4_pentefaible.spec.ts
index 38b260156046b1cff9719eaa2acc0472fda402ec..e819a64d30aa3745d6f1c170613446bb466b85c3 100644
--- a/spec/remous_rect_rk4_pentefaible.spec.ts
+++ b/spec/remous_rect_rk4_pentefaible.spec.ts
@@ -3,7 +3,7 @@ import { CourbeRemousParams, MethodeResolution, CourbeRemous } from "../src/remo
 import { precDigits, precDist, equalEpsilon, compareArray, compareObject, compareLog } from "./nubtest";
 import { round } from "../src/base";
 import { cLog } from "../src/util/log";
-import { ErrorMessage, ErrorCode } from "../src/util/error";
+import { Message, MessageCode } from "../src/util/message";
 
 
 describe('Class Remous / section rectangulaire :', () => {
@@ -44,27 +44,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "amont";
             m.extraVar["x"] = 0;
             expLog.add(m);
@@ -108,27 +108,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 15;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 5;
             expLog.add(m);
@@ -172,23 +172,23 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 1;
             expLog.add(m);
@@ -231,21 +231,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
 
             compareLog(log, expLog);
         });
@@ -285,21 +285,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
 
             compareLog(log, expLog);
         });
diff --git a/spec/remous_rect_rk4_penteforte.spec.ts b/spec/remous_rect_rk4_penteforte.spec.ts
index fc91619a88ba6165877508c0f37504837d602f8e..bb96606609fad0776d88eced9917726983d85334 100644
--- a/spec/remous_rect_rk4_penteforte.spec.ts
+++ b/spec/remous_rect_rk4_penteforte.spec.ts
@@ -3,7 +3,7 @@ import { CourbeRemousParams, MethodeResolution, CourbeRemous } from "../src/remo
 import { precDigits, precDist, equalEpsilon, compareArray, compareObject, compareLog } from "./nubtest";
 import { round } from "../src/base";
 import { cLog } from "../src/util/log";
-import { ErrorMessage, ErrorCode } from "../src/util/error";
+import { Message, MessageCode } from "../src/util/message";
 
 describe('Class Remous / section rectangulaire :', () => {
     describe('méthode Runge-Kutta ordre 4 :', () => {
@@ -43,22 +43,22 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "amont";
             m.extraVar["x"] = 0;
             expLog.add(m);
@@ -103,27 +103,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 95;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "aval";
             m.extraVar["x"] = 100;
             expLog.add(m);
@@ -167,27 +167,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 85;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 90;
             m.extraVar["xmax"] = 90;
             expLog.add(m);
@@ -231,23 +231,23 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 3.75;
             expLog.add(m);
@@ -290,21 +290,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
             compareLog(log, expLog);
         });
@@ -344,21 +344,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
             compareLog(log, expLog);
         });
diff --git a/spec/remous_rect_trapezes_pentefaible.spec.ts b/spec/remous_rect_trapezes_pentefaible.spec.ts
index d54663466ccf2712720ebbc1bd96576a36dcfe93..e27b1fb5c642aebd2dea9d99ce17db730c4634f5 100644
--- a/spec/remous_rect_trapezes_pentefaible.spec.ts
+++ b/spec/remous_rect_trapezes_pentefaible.spec.ts
@@ -3,7 +3,7 @@ import { CourbeRemousParams, MethodeResolution, CourbeRemous } from "../src/remo
 import { precDigits, precDist, equalEpsilon, compareArray, compareObject, compareLog } from "./nubtest";
 import { round } from "../src/base";
 import { cLog } from "../src/util/log";
-import { ErrorMessage, ErrorCode } from "../src/util/error";
+import { Message, MessageCode } from "../src/util/message";
 
 
 describe('Class Remous / section rectangulaire :', () => {
@@ -44,27 +44,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "amont";
             m.extraVar["x"] = 0;
             expLog.add(m);
@@ -108,27 +108,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 15;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 5;
             expLog.add(m);
@@ -184,23 +184,23 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 1;
             expLog.add(m);
@@ -244,23 +244,23 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.953;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 0.9;
             expLog.add(m);
@@ -304,21 +304,21 @@ describe('Class Remous / section rectangulaire :', () => {
         compareArray("abscisses", res["trX"], x);
 
         let expLog = new cLog();
-        let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+        let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
         m.extraVar["B"] = 2.5;
         expLog.add(m);
 
-        m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+        m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
         m.extraVar["Yc"] = 0.403;
         expLog.add(m);
 
-        m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+        m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
         m.extraVar["Yn"] = 0.953;
         expLog.add(m);
 
-        expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+        expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-        expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
+        expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
 
         compareLog(log, expLog);
     });
@@ -358,21 +358,21 @@ describe('Class Remous / section rectangulaire :', () => {
         compareArray("abscisses", res["trX"], x);
 
         let expLog = new cLog();
-        let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+        let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
         m.extraVar["B"] = 2.5;
         expLog.add(m);
 
-        m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+        m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
         m.extraVar["Yc"] = 0.403;
         expLog.add(m);
 
-        m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+        m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
         m.extraVar["Yn"] = 0.953;
         expLog.add(m);
 
-        expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+        expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-        expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
+        expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
 
         compareLog(log, expLog);
     });
diff --git a/spec/remous_rect_trapezes_penteforte.spec.ts b/spec/remous_rect_trapezes_penteforte.spec.ts
index 7107c0e13a933676d48914e91b666fea5e865bca..197fffaaa5c0b563d74a0b2c779dce3a4db72588 100644
--- a/spec/remous_rect_trapezes_penteforte.spec.ts
+++ b/spec/remous_rect_trapezes_penteforte.spec.ts
@@ -3,7 +3,7 @@ import { CourbeRemousParams, MethodeResolution, CourbeRemous } from "../src/remo
 import { precDigits, precDist, equalEpsilon, compareArray, compareObject, compareLog } from "./nubtest";
 import { round } from "../src/base";
 import { cLog } from "../src/util/log";
-import { ErrorMessage, ErrorCode } from "../src/util/error";
+import { Message, MessageCode } from "../src/util/message";
 
 describe('Class Remous / section rectangulaire :', () => {
     describe('méthode trapèzes :', () => {
@@ -43,22 +43,22 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "amont";
             m.extraVar["x"] = 0;
             expLog.add(m);
@@ -104,27 +104,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 95;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
             m.extraVar["sens"] = "aval";
             m.extraVar["x"] = 100;
             expLog.add(m);
@@ -168,27 +168,27 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE)
+            m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE)
             m.extraVar["x"] = 90;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 90;
             m.extraVar["xmax"] = 95;
             expLog.add(m);
@@ -232,23 +232,23 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+            m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
             m.extraVar["xmin"] = 0;
             m.extraVar["xmax"] = 3.75;
             expLog.add(m);
@@ -291,21 +291,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
             compareLog(log, expLog);
         });
@@ -345,21 +345,21 @@ describe('Class Remous / section rectangulaire :', () => {
             compareArray("abscisses", res["trX"], x);
 
             let expLog = new cLog();
-            let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+            let m = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
             m.extraVar["B"] = 2.5;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
             m.extraVar["Yc"] = 0.403;
             expLog.add(m);
 
-            m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+            m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
             m.extraVar["Yn"] = 0.253;
             expLog.add(m);
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
 
-            expLog.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+            expLog.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
             compareLog(log, expLog);
         });
diff --git a/src/base.ts b/src/base.ts
index 3006c6d1e398ddb27b1bce759be08c3a95b06945..9e7c06fed8ec509d9ed578c3282cb0e94c6f1e2d 100644
--- a/src/base.ts
+++ b/src/base.ts
@@ -1,60 +1,4 @@
-import { ErrorMessage, ErrorCode } from "./util/error";
-
-// export enum ResultCode {
-//     OK = 0,
-
-//     /**
-//      * la dichotomie n'a pas pu trouver automatiquement d'intervalle de départ
-//      * car la valeur initiale de la variable est trop haute
-//      */
-//     ERROR_DICHO_INITVALUE_HIGH = -1,
-
-//     /**
-//      * la dichotomie n'a pas pu trouver automatiquement d'intervalle de départ
-//      * car la valeur initiale de la variable est trop basse
-//      */
-//     ERROR_DICHO_INITVALUE_LOW = -2,
-
-//     /**
-//      * la dichotomie n'a pas pu trouver automatiquement d'intervalle de départ
-//      * car la valeur cible de la fonction n'existe pas pour des valeurs de la
-//      * variable dans son domaine de définition, cad il n'existe pas de solution
-//      */
-//     ERROR_DICHO_INIT_DOMAIN = -3,
-
-//     /**
-//      * la dichotomie n'a pas pu converger
-//      */
-//     ERROR_DICHO_CONVERGE = -4,
-// }
-
-// /**
-//  * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...)
-//  */
-// export class Result {
-//     /** Valeur calculée */
-//     private _vCalc: number;
-
-//     /**
-//      * code d'erreur
-//      */
-//     private _code: ResultCode;
-
-//     /** Variables intermédiaires, flags d'erreur */
-//     // public extraVar: {};
-//     public extraVar: { [key: string]: any };
-
-//     constructor(v: number, c: ResultCode = ResultCode.OK) {
-//         this._vCalc = v
-//         this._code = c;
-//         this.extraVar = {}
-//     };
-
-//     get vCalc() { return this._vCalc; }
-
-//     get code() { return this._code; }
-// }
-
+import { Message, MessageCode } from "./util/message";
 
 /**
  * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...)
@@ -63,22 +7,22 @@ export class Result {
     /** Valeur calculée */
     private _vCalc: number;
 
-    private _errorMessage: ErrorMessage;
+    private _message: Message;
 
-    constructor(v: number, e: ErrorMessage = undefined) {
+    constructor(v: number, e: Message = undefined) {
         this._vCalc = v;
-        this._errorMessage = e;
+        this._message = e;
     };
 
     get vCalc() { return this._vCalc; }
 
     get code() {
-        if (this._errorMessage == undefined)
-            return ErrorCode.ERROR_OK;
-        return this._errorMessage.code;
+        if (this._message == undefined)
+            return MessageCode.ERROR_OK;
+        return this._message.code;
     }
 
-    get errorMessage() { return this._errorMessage; }
+    get Message() { return this._message; }
 }
 
 /**
diff --git a/src/dichotomie.ts b/src/dichotomie.ts
index f25f9f67a9127b4678081fec5085594ea42e80d2..9485690c41128933c5a53034e6b579464b2aad21 100644
--- a/src/dichotomie.ts
+++ b/src/dichotomie.ts
@@ -1,6 +1,6 @@
 // import { XOR, BoolIdentity, Debug, Result, ResultCode, UndefinedError } from "./base";
 import { XOR, BoolIdentity, Debug, Result } from "./base";
-import { ErrorMessage, ErrorCode } from "./util/error";
+import { Message, MessageCode } from "./util/message";
 import { Nub } from "./nub";
 import { ParamDefinition, ParamDomain, ParamDomainValue } from "./param"
 
@@ -60,12 +60,12 @@ class Interval extends Pair {
 
     checkValue(v: number) {
         if (v == undefined) {
-            let e = new ErrorMessage(ErrorCode.ERROR_INTERVAL_UNDEF);
+            let e = new Message(MessageCode.ERROR_INTERVAL_UNDEF);
             throw e;
         }
 
         if (!this.intervalHasValue(v)) {
-            let e = new ErrorMessage(ErrorCode.ERROR_INTERVAL_OUTSIDE);
+            let e = new Message(MessageCode.ERROR_INTERVAL_OUTSIDE);
             e.extraVar["value"] = v;
             e.extraVar["interval"] = this.toString();
             throw e;
@@ -101,7 +101,7 @@ class SearchInterval extends Interval {
     constructor(d: Dichotomie, min: number, max: number, s: number) {
         super(min, max);
         if (s == 0) {
-            let e = new ErrorMessage(ErrorCode.ERROR_DICHO_NULL_STEP);
+            let e = new Message(MessageCode.ERROR_DICHO_NULL_STEP);
             throw e;
         }
         this._step = s;
@@ -114,7 +114,7 @@ class SearchInterval extends Interval {
 
     growStep(k: number) {
         if (k == 0) {
-            let e = new ErrorMessage(ErrorCode.ERROR_DICHO_INVALID_STEP_GROWTH);
+            let e = new Message(MessageCode.ERROR_DICHO_INVALID_STEP_GROWTH);
             throw e;
         }
         this._step *= k;
@@ -363,7 +363,7 @@ export class Dichotomie extends Debug {
         // la valeur cible de la fonction est elle trouvable ?    
 
         let m;
-        let res: ErrorMessage;
+        let res: Message;
         let errDomain = false;
         switch (prmDom.domain) {
             case ParamDomainValue.INTERVAL:
@@ -385,7 +385,7 @@ export class Dichotomie extends Debug {
         }
 
         if (errDomain) {
-            res = new ErrorMessage(ErrorCode.ERROR_DICHO_INIT_DOMAIN);
+            res = new Message(MessageCode.ERROR_DICHO_INIT_DOMAIN);
             res.extraVar["targetSymbol"] = this.analyticalSymbol; // symbole de la variable calculée par la fonction
             res.extraVar["targetValue"] = rTarget; // valeur cible pour la fonction
             res.extraVar["variableInterval"] = intMax.toString(); // intervalle de valeurs pour la variable d'entrée de la fonction
@@ -394,9 +394,9 @@ export class Dichotomie extends Debug {
         else {
             // if (intSearch.step < 0)
             if (BoolIdentity(initTarget > rTarget, inc))
-                res = new ErrorMessage(ErrorCode.ERROR_DICHO_INITVALUE_HIGH);
+                res = new Message(MessageCode.ERROR_DICHO_INITVALUE_HIGH);
             else
-                res = new ErrorMessage(ErrorCode.ERROR_DICHO_INITVALUE_LOW);
+                res = new Message(MessageCode.ERROR_DICHO_INITVALUE_LOW);
 
             res.extraVar["variableSymbol"] = this._paramX.symbol; // symbole de la variable de la fonction
             res.extraVar["variableInitValue"] = rInit; // valeur initiale de la variable
diff --git a/src/index.ts b/src/index.ts
index fd917ff2d315cffe99e5f530646912e3d65b7860..71662d2b6467c27d3c37b42adce992a27dbe0aae 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -14,5 +14,5 @@ export * from './section/section_circulaire';
 export * from './section/section_puissance';
 export * from './util/definedvalue';
 export * from './util/numericalstring';
-export * from './util/error';
+export * from './util/message';
 export * from './util/log';
diff --git a/src/param.ts b/src/param.ts
index 1da96e1594d9eb83cf8e7936e1b321afd03b61b6..4fbf6b9715f111d8d62dfff331c1f824147a598c 100644
--- a/src/param.ts
+++ b/src/param.ts
@@ -1,7 +1,7 @@
 // import { Debug, UndefinedError } from './base';
 import { Debug } from './base';
 import { DefinedNumber } from './util/definedvalue';
-import { ErrorMessage, ErrorCode } from './util/error';
+import { Message, MessageCode } from "./util/message";
 
 /**
  * domaine de définition du paramètre
@@ -53,7 +53,7 @@ export class ParamDomain {
             case ParamDomainValue.INTERVAL:
                 if (min == undefined || max == undefined || min > max) {
                     // throw "invalid " + min + "/" + max + " min/max boundaries for 'interval' parameter definition domain"
-                    let e: ErrorMessage = new ErrorMessage(ErrorCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS);
+                    let e: Message = new Message(MessageCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS);
                     e.extraVar["minValue"] = min;
                     e.extraVar["maxValue"] = max;
                     throw e;
@@ -63,7 +63,7 @@ export class ParamDomain {
             default:
                 // en dehors du cas INTERVAL, on ne doit pas fournir de valeur
                 if (min != undefined || max != undefined) {
-                    let e: ErrorMessage = new ErrorMessage(ErrorCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS);
+                    let e: Message = new Message(MessageCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS);
                     e.extraVar["minValue"] = min;
                     e.extraVar["maxValue"] = max;
                     throw e;
@@ -87,7 +87,7 @@ export class ParamDomain {
     public static getDefaultBounds(d: ParamDomainValue): { min: number, max: number } {
         switch (d) {
             case ParamDomainValue.INTERVAL:
-                let e: ErrorMessage = new ErrorMessage(ErrorCode.ERROR_PARAMDOMAIN_INVALID);
+                let e: Message = new Message(MessageCode.ERROR_PARAMDOMAIN_INVALID);
                 throw e;
 
             case ParamDomainValue.ANY:
@@ -229,7 +229,7 @@ export class ParamDefinition extends DefinedNumber {
     get calculability(): ParamCalculability {
         if (this._calc == undefined) {
             //   throw "value of parameter '" + this._symbol + "' calculability is not defined";
-            let e = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_CALC_UNDEFINED);
+            let e = new Message(MessageCode.ERROR_PARAMDEF_CALC_UNDEFINED);
             e.extraVar["symbol"] = this.symbol;
             throw e;
         }
@@ -248,7 +248,7 @@ export class ParamDefinition extends DefinedNumber {
         // if (this._value == undefined)
         if (!this.isDefined) {
             //   throw new UndefinedError("value of '" + this._symbol + "' parameter is not defined");
-            let e = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_VALUE_UNDEFINED);
+            let e = new Message(MessageCode.ERROR_PARAMDEF_VALUE_UNDEFINED);
             e.extraVar["symbol"] = this.symbol;
             throw e;
         }
@@ -262,7 +262,7 @@ export class ParamDefinition extends DefinedNumber {
 
         if (this.calculability == ParamCalculability.NONE) {
             //   throw "value of '" + this._symbol + "' parameter cannot be changed";
-            let e = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_VALUE_FIXED);
+            let e = new Message(MessageCode.ERROR_PARAMDEF_VALUE_FIXED);
             e.extraVar["symbol"] = this.symbol;
             throw e;
         }
@@ -287,7 +287,7 @@ export class ParamDefinition extends DefinedNumber {
             case ParamDomainValue.POS:
                 if (v <= 0) {
                     //   throw "parameter '" + this._symbol + "' : invalid " + v + " value (cannot be <=0)";
-                    let e = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_VALUE_POS);
+                    let e = new Message(MessageCode.ERROR_PARAMDEF_VALUE_POS);
                     e.extraVar["symbol"] = this.symbol;
                     e.extraVar["value"] = v;
                     throw e;
@@ -297,7 +297,7 @@ export class ParamDefinition extends DefinedNumber {
             case ParamDomainValue.POS_NULL:
                 if (v < 0) {
                     //   throw "parameter '" + this._symbol + "' : invalid " + v + " value (cannot be <0)";
-                    let e = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_VALUE_POSNULL);
+                    let e = new Message(MessageCode.ERROR_PARAMDEF_VALUE_POSNULL);
                     e.extraVar["symbol"] = this.symbol;
                     e.extraVar["value"] = v;
                     throw e;
@@ -307,7 +307,7 @@ export class ParamDefinition extends DefinedNumber {
             case ParamDomainValue.NOT_NULL:
                 if (v == 0) {
                     //   throw "parameter '" + this._symbol + "' : value cannot be 0";
-                    let e = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_VALUE_NULL);
+                    let e = new Message(MessageCode.ERROR_PARAMDEF_VALUE_NULL);
                     e.extraVar["symbol"] = this.symbol;
                     throw e;
                 }
@@ -318,7 +318,7 @@ export class ParamDefinition extends DefinedNumber {
                 let max = this._domain.maxValue;
                 if (v < min || v > max) {
                     // throw "parameter '" + this._symbol + "' : value " + v + " is out of [" + min + ", " + max + "] interval";
-                    let e = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_VALUE_INTERVAL);
+                    let e = new Message(MessageCode.ERROR_PARAMDEF_VALUE_INTERVAL);
                     e.extraVar["symbol"] = this.symbol;
                     e.extraVar["value"] = v;
                     e.extraVar["minValue"] = min;
@@ -329,7 +329,7 @@ export class ParamDefinition extends DefinedNumber {
 
             default:
                 //throw "parameter '" + this._symbol + "' : non supported '" + sDomain + "' definition domain";
-                let e = new ErrorMessage(ErrorCode.ERROR_PARAMDOMAIN_INVALID);
+                let e = new Message(MessageCode.ERROR_PARAMDOMAIN_INVALID);
                 e.extraVar["symbol"] = this.symbol;
                 e.extraVar["domain"] = sDomain;
                 throw e;
diff --git a/src/remous.ts b/src/remous.ts
index bf6210e49e07fcaca95155717925d077b8dc2a6f..e023d29d0920c3377e3f56ca012f9e643b739c24 100644
--- a/src/remous.ts
+++ b/src/remous.ts
@@ -3,7 +3,7 @@ import { XOR, Result, round } from "./base";
 import { ParamsEquation, ParamDefinition, ParamCalculability, ComputeNodeType, ParamDomainValue } from "./param";
 import { Dichotomie } from "./dichotomie";
 import { Nub } from "./nub";
-import { ErrorCode, ErrorMessage } from "./util/error";
+import { Message, MessageCode } from "./util/message";
 import { cLog } from "./util/log";
 
 export enum MethodeResolution {
@@ -167,7 +167,7 @@ export class CourbeRemous extends Nub {
 		// L'appel à Calc('J') avec Y en paramètre réinitialise toutes les données dépendantes de la ligne d'eau
 		let Y2 = Y + this.Dx * this.Calc_dYdX(Y);
 		if (XOR(this.Dx > 0, !(Y2 < this.Sn.HautCritique)))
-			return new Result(undefined, new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE));
+			return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE));
 
 		return new Result(Y2);
 	}
@@ -188,21 +188,21 @@ export class CourbeRemous extends Nub {
 
 		//if ($this ->rDx > 0 xor !($Y + $rDx / 2 * $rk1 < $this ->oSect ->rHautCritique)) { return false; }
 		if (XOR(Dx > 0, !(Y + Dx / 2 * k1 < hc)))
-			return new Result(undefined, new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE));
+			return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE));
 
 		//$rk2 = $this ->Calc_dYdX($Y + $rDx / 2 * $rk1);
 		let k2 = this.Calc_dYdX(Y + Dx / 2 * k1);
 
 		//if ($this ->rDx > 0 xor !($Y + $rDx / 2 * $rk2 < $this ->oSect ->rHautCritique)) { return false; }
 		if (XOR(Dx > 0, !(Y + Dx / 2 * k2 < hc)))
-			return new Result(undefined, new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE));
+			return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE));
 
 		//$rk3 = $this ->Calc_dYdX($Y + $rDx / 2 * $rk2);
 		let k3 = this.Calc_dYdX(Y + Dx / 2 * k2);
 
 		//if ($this ->rDx > 0 xor !($Y + $rDx / 2 * $rk3 < $this ->oSect ->rHautCritique)) { return false; }
 		if (XOR(Dx > 0, !(Y + Dx / 2 * k3 < hc)))
-			return new Result(undefined, new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE));
+			return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE));
 
 		//$rk4 = $this ->Calc_dYdX($Y + $rDx * $rk3);
 		let k4 = this.Calc_dYdX(Y + Dx * k3);
@@ -212,7 +212,7 @@ export class CourbeRemous extends Nub {
 
 		//if ($this ->rDx > 0 xor !($Yout < $this ->oSect ->rHautCritique)) { return false; }
 		if (XOR(Dx > 0, !(Yout < hc)))
-			return new Result(undefined, new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE));
+			return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE));
 
 		return new Result(Yout);
 	}
@@ -252,13 +252,13 @@ export class CourbeRemous extends Nub {
 		let r: Result = Dicho.Dichotomie(Trapez_Fn, this.prmSect.Prec.v, Y);
 
 		// if ($flag < 0) {
-		if (r.code != ErrorCode.ERROR_OK)
+		if (r.code != MessageCode.ERROR_OK)
 			return r;
 
 		let Y2 = r.vCalc;
 		// } elseif($this ->rDx > 0 xor !($Y2 < $this ->oSect ->rHautCritique)) {
 		if (XOR(this.Dx > 0, !(Y2 < this.Sn.HautCritique)))
-			return new Result(undefined, new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE));
+			return new Result(undefined, new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE));
 
 		return new Result(Y2);
 	}
@@ -335,7 +335,7 @@ export class CourbeRemous extends Nub {
 			// this.debug("end trY " + this.last(trY));
 			// this.debug("Yn " + this.Sn.HautNormale);
 
-			if (rY.code == ErrorCode.ERROR_OK) {
+			if (rY.code == MessageCode.ERROR_OK) {
 				// on vérifie qu'on ne traverse pas la hauteur normale (à la précision de calcul près)
 				let prec: number = this.prms.map.Prec.v;
 				let b1: boolean = lastY - this.Sn.HautNormale > prec;
@@ -343,14 +343,14 @@ export class CourbeRemous extends Nub {
 				if (XOR(b1, b2)) {
 					this.debug("La pente de la ligne d'eau est trop forte à l'abscisse " + x + " m (Il faudrait réduire le pas de discrétisation)");
 
-					let m: ErrorMessage = new ErrorMessage(ErrorCode.ERROR_REMOUS_PENTE_FORTE);
+					let m: Message = new Message(MessageCode.ERROR_REMOUS_PENTE_FORTE);
 					m.extraVar["x"] = x;
 					this._log.add(m);
 				}
 
 				trY[round(x, this.prmSect.iPrec.v)] = rY.vCalc;
 			} else {
-				let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_ARRET_CRITIQUE);
+				let m = new Message(MessageCode.ERROR_REMOUS_ARRET_CRITIQUE);
 				m.extraVar["x"] = x;
 				this._log.add(m);
 				this.debug("Arrêt du calcul : Hauteur critique atteinte à l'abscisse " + x + " m");
@@ -401,15 +401,15 @@ export class CourbeRemous extends Nub {
 	} {
 		let Yc: number = this.Sn.Calc("Yc");
 
-		let m: ErrorMessage = new ErrorMessage(ErrorCode.ERROR_REMOUS_LARGEUR_BERGE);
+		let m: Message = new Message(MessageCode.ERROR_REMOUS_LARGEUR_BERGE);
 		m.extraVar["B"] = this.Sn.Calc("B");
 		this._log.add(m);
 
-		m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_CRITIQUE);
+		m = new Message(MessageCode.ERROR_REMOUS_H_CRITIQUE);
 		m.extraVar["Yc"] = Yc;
 		this._log.add(m);
 
-		m = new ErrorMessage(ErrorCode.ERROR_REMOUS_H_NORMALE);
+		m = new Message(MessageCode.ERROR_REMOUS_H_NORMALE);
 		m.extraVar["Yn"] = this.Sn.Calc("Yn");
 		this._log.add(m);
 
@@ -426,7 +426,7 @@ export class CourbeRemous extends Nub {
 
 		// Calcul depuis l'aval
 		if (this.Sn.HautCritique <= this.prms.Yaval.v) {
-			this._log.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_FLUVIAL));
+			this._log.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_FLUVIAL));
 
 			this.debug("Condition limite aval (" + this.prms.Yaval.v + ") >= Hauteur critique (" + this.Sn.HautCritique + ") : calcul de la partie fluviale à partir de l'aval");
 			this.Dx = this.prms.Dx.v;
@@ -434,7 +434,7 @@ export class CourbeRemous extends Nub {
 		}
 		else {
 			this.debug("Condition limite aval (" + this.prms.Yaval.v + ") < Hauteur critique (" + this.Sn.HautCritique + ") : pas de calcul possible depuis l'aval");
-			this._log.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
+			this._log.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AVAL));
 		}
 
 		this.debug("flu ");
@@ -443,14 +443,14 @@ export class CourbeRemous extends Nub {
 
 		// Calcul depuis l'amont
 		if (this.Sn.HautCritique >= this.prms.Yamont.v) {
-			this._log.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
+			this._log.add(new Message(MessageCode.ERROR_REMOUS_CALCUL_TORRENTIEL));
 
 			this.debug("Condition limite amont (" + this.prms.Yamont.v + ") <= Hauteur critique (" + this.Sn.HautCritique + ") : calcul de la partie torrentielle à partir de l'amont");
 			this.Dx = -this.prms.Dx.v;
 			crbTor = this.calcul(this.prms.Yamont.v);
 		}
 		else {
-			this._log.add(new ErrorMessage(ErrorCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
+			this._log.add(new Message(MessageCode.ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT));
 			this.debug("Condition limite amont (" + this.prms.Yamont.v + ") > Hauteur critique (" + this.Sn.HautCritique + ") : pas de calcul possible depuis l'amont");
 		}
 
@@ -549,7 +549,7 @@ export class CourbeRemous extends Nub {
 					// if (iSens == 1 ? Yco > Ydec : Yco < Ydec) {
 					if (Yco > Ydec) {
 						this.debug("Ressaut hydraulique détecté entre les abscisses " + Math.min(rX, xRst) + " et " + Math.max(rX, xRst));
-						m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_HYDRO);
+						m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_HYDRO);
 						m.extraVar["xmin"] = Math.min(rX, xRst);
 						m.extraVar["xmax"] = Math.max(rX, xRst);
 						this._log.add(m);
@@ -591,7 +591,7 @@ export class CourbeRemous extends Nub {
 			}
 			if (!bRessaut) {
 				// Le ressaut est en dehors du canal
-				let m = new ErrorMessage(ErrorCode.ERROR_REMOUS_RESSAUT_DEHORS);
+				let m = new Message(MessageCode.ERROR_REMOUS_RESSAUT_DEHORS);
 				m.extraVar["sens"] = sSens;
 				m.extraVar["x"] = +this.last(trX);
 				this._log.add(m);
diff --git a/src/section/section_circulaire.ts b/src/section/section_circulaire.ts
index d469a9be84bb727f5e1825bcae6e75dc31d7b294..585cbf5ec57e388778a2fef952b9badc7f122421 100644
--- a/src/section/section_circulaire.ts
+++ b/src/section/section_circulaire.ts
@@ -1,7 +1,7 @@
 import { ComputeNodeType, ParamDefinition, ParamDomainValue, ParamCalculability } from "../param";
 import { acSection, ParamsSection } from "./section_type";
 import { cLog } from "../util/log";
-import { ErrorMessage, ErrorCode } from '../util/error';
+import { Message, MessageCode } from "../util/message";
 
 export class ParamsSectionCirc extends ParamsSection {
         private _D: ParamDefinition;          // Diamètre du cercle
@@ -144,7 +144,7 @@ export class cSnCirc extends acSection {
                         return res;
                 }
 
-                let e: ErrorMessage = new ErrorMessage(ErrorCode.ERROR_PARAMDEF_VALUE_UNDEFINED);
+                let e: Message = new Message(MessageCode.ERROR_PARAMDEF_VALUE_UNDEFINED);
                 e.extraVar["diameterValue"] = this.prms.D.isDefined ? String(this.prms.D.v) : "undefined";
                 e.extraVar["yValue"] = this.prms.Y.isDefined ? String(this.prms.Y.v) : "undefined";
                 throw e;
diff --git a/src/util/log.ts b/src/util/log.ts
index 25001043d6c2385eab6f92659144679882cdb0f4..401fbc9c9dbcdfe364ee600a4994eab1e1cbce0e 100644
--- a/src/util/log.ts
+++ b/src/util/log.ts
@@ -1,9 +1,9 @@
-import { ErrorMessage } from "./error";
+import { Message, MessageCode } from "./message";
 
 export class cLog {
-    private _messages: ErrorMessage[] = [];
+    private _messages: Message[] = [];
 
-    public add(m: ErrorMessage) {
+    public add(m: Message) {
         this._messages.push(m);
     }
 
diff --git a/src/util/error.ts b/src/util/message.ts
similarity index 84%
rename from src/util/error.ts
rename to src/util/message.ts
index 79d568bda4b88a829f7982fc697b1b08afc3a671..d34afb18655b908f58acee198e31b10de66ca541 100644
--- a/src/util/error.ts
+++ b/src/util/message.ts
@@ -1,4 +1,4 @@
-export enum ErrorCode {
+export enum MessageCode {
     /**
      * pas de pb !
      */
@@ -159,27 +159,45 @@ export enum ErrorCode {
     ERROR_REMOUS_PAS_CALCUL_DEPUIS_AMONT = -510,
 }
 
+/**
+ * niveau de criticité du message
+ */
+export enum MessageSeverity {
+    ERROR, WARNING, INFO
+}
+
 /**
  * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...)
  */
-export class ErrorMessage {
+export class Message {
     /**
-     * code d'erreur
+     * code du message
      */
-    private _code: ErrorCode;
+    private _code: MessageCode;
 
     /** Variables intermédiaires, flags d'erreur */
-    // public extraVar: {};
     public extraVar: { [key: string]: any };
 
-    constructor(c: ErrorCode) {
+    constructor(c: MessageCode) {
         this._code = c;
         this.extraVar = {}
     };
 
     get code() { return this._code; }
 
+    /**
+     * retourne le niveau de criticité (erreur, warning, info) du message
+     */
+    public getSeverity(): MessageSeverity {
+        let m: string = MessageCode[this._code];
+        let prefix: string = m.split("_")[0];
+        for (let s in MessageSeverity) // pas nécessaire, mais permet d'avoir un contrôle de validité
+            if (MessageSeverity[s] == prefix)
+                return eval("MessageSeverity." + prefix);
+        throw "Message.getSeverity() : valeur de code '" + this._code + "' invalide";
+    }
+
     public toString(): string {
-        return ErrorCode[this._code] + " " + JSON.stringify(this.extraVar);
+        return MessageCode[this._code] + " " + JSON.stringify(this.extraVar);
     }
 }