diff --git a/src/param/param-base.ts b/src/param/param-base.ts
index 7abc917265dbae610368220155db952acdeffe1b..3db958449545d2bad7d2be72fbdd4713948c60b5 100644
--- a/src/param/param-base.ts
+++ b/src/param/param-base.ts
@@ -8,12 +8,13 @@ import { ParamValueMode } from "./param-value-mode";
 import { IReferencedNub, INubReference } from "../value_ref/object_ref";
 import { Result } from "../util/result";
 import { NamedIterableValues } from "./param-value-iterator";
+import { IObservable, Observable, Observer } from "../util/observer";
 
 /**
  * paramètre avec symbole et domaine de définition
  */
 // tslint:disable-next-line:max-classes-per-file
-export class BaseParam extends JalhydObject implements INubReference, NamedIterableValues {
+export class BaseParam extends JalhydObject implements INubReference, NamedIterableValues, IObservable {
     /**
      * symbole
      */
@@ -29,10 +30,17 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
      */
     private _paramValues: ParamValues;
 
+    /**
+     * implémentation par délégation de IObservable
+     */
+    private _observable: Observable;
+
     constructor(symb: string, d: ParamDomain | ParamDomainValue, val?: number) {
         super();
         this._symbol = symb;
 
+        this._observable = new Observable()
+
         this._paramValues = new ParamValues();
         this._paramValues.setSingleValue(val);
 
@@ -81,9 +89,21 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
         return this._paramValues.currentValue;
     }
 
-    public setValue(val: number) {
+    /**
+     * notification envoyée après la modification de la valeur du paramètre
+     */
+    private notifyValueModified(sender: any) {
+        this.notifyObservers(
+            {
+                "action": "baseparamAfterValue",
+            }, sender
+        );
+    }
+
+    public setValue(val: number, sender?: any) {
         this.checkValue(val);
         this._paramValues.currentValue = val;
+        this.notifyValueModified(sender);
     }
 
     public get uncheckedValue(): number {
@@ -333,4 +353,27 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
     public get name(): string {
         return this._symbol;
     }
+
+    // interface IObservable
+
+    /**
+     * ajoute un observateur à la liste
+     */
+    public addObserver(o: Observer) {
+        this._observable.addObserver(o);
+    }
+
+    /**
+     * supprime un observateur de la liste
+     */
+    public removeObserver(o: Observer) {
+        this._observable.removeObserver(o);
+    }
+
+    /**
+     * notifie un événement aux observateurs
+     */
+    notifyObservers(data: any, sender?: any) {
+        this._observable.notifyObservers(data, sender);
+    }
 }