diff --git a/src/param/param-definition.ts b/src/param/param-definition.ts
index a2e3f635c2bb4e6a653d695574fa8d4991e8d349..10e505406c18bc57aa77e11bd3109d2101089441 100644
--- a/src/param/param-definition.ts
+++ b/src/param/param-definition.ts
@@ -103,6 +103,9 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
     /** implémentation par délégation de IObservable */
     private _observable: Observable;
 
+    /** disable value validation */
+    private _allowInvalidValues: boolean;
+
     /**
      * @param ignoreValue true if provided value must be ignored (@see nghyd/enableEmptyFieldsOnFormInit)
      */
@@ -131,6 +134,7 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
         this.visible = visible;
         this.valueMode = ParamValueMode.SINGLE;
         this.extensionStrategy = ExtensionStrategy.REPEAT_LAST;
+        this._allowInvalidValues = false;
 
         this.setDomain(d);
 
@@ -578,6 +582,10 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
      * an error if value is outside the domain
      */
     public checkValueAgainstDomain(v: number) {
+        if (this._allowInvalidValues) {
+            return;
+        }
+
         const sDomain = ParamDomainValue[this._domain.domain];
 
         switch (this._domain.domain) {
@@ -1208,6 +1216,18 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
         return res;
     }
 
+    public get allowInvalidValues(): boolean {
+        return this._allowInvalidValues;
+    }
+
+    public set allowInvalidValues(b: boolean) {
+        const old = this._allowInvalidValues;
+        this._allowInvalidValues = b;
+        if (old && !b && !this.isValid) {
+            throw new Error("ParamDefinition : valeur non valide");
+        }
+    }
+
     /**
      * notification envoyée après la modification de la valeur du paramètre
      */