diff --git a/src/app/components/modules-diagram/modules-diagram.component.html b/src/app/components/modules-diagram/modules-diagram.component.html
index 4eaa708ce1c090aca6daf7119949b86c3855bfd6..2eeab473b56d4df2c78ba1a6c46140663b3872e3 100644
--- a/src/app/components/modules-diagram/modules-diagram.component.html
+++ b/src/app/components/modules-diagram/modules-diagram.component.html
@@ -12,6 +12,9 @@
 
         <div id="diagram" #diagram></div>
 
+        <div id="diagram-legend">
+            * {{ uitextCalculatedParam }}
+        </div>
         <!-- <a class="show-debug" (click)="initSvgPanZoom()">init zoom </a> -->
 
         <!-- <a class="show-debug" (click)="showDebug = ! showDebug"> debug</a> -->
diff --git a/src/app/components/modules-diagram/modules-diagram.component.ts b/src/app/components/modules-diagram/modules-diagram.component.ts
index 1c91b462a147bfedceadefd0d063be3b34aa0974..3b63fb53101f91acad1de6e46ef016a3c7459269 100644
--- a/src/app/components/modules-diagram/modules-diagram.component.ts
+++ b/src/app/components/modules-diagram/modules-diagram.component.ts
@@ -63,6 +63,10 @@ export class ModulesDiagramComponent implements AfterContentInit, AfterViewCheck
         return this.intlService.localizeText("INFO_DIAGRAM_DRAWING_ERROR");
     }
 
+    public get uitextCalculatedParam(): string {
+        return this.intlService.localizeText("INFO_DIAGRAM_CALCULATED_PARAM");
+    }
+
     public ngAfterViewChecked() {
         if (this.needsToInitSvgPanZoom) {
             this.initSvgPanZoom();
@@ -175,11 +179,11 @@ export class ModulesDiagramComponent implements AfterContentInit, AfterViewCheck
             for (const p of nub.parameterIterator) {
                 if (p.valueMode === ParamValueMode.LINK && p.isReferenceDefined()) {
                     const target = p.referencedValue.nub;
-                    // move all children links to parent for now (sections, structures...)
-                    /* if (target.parent !== undefined) {
-                        target = target.parent;
-                    } */
-                    def.push(nub.uid + "-->|" + p.symbol + "|" + target.uid);
+                    let symb = p.symbol;
+                    if (p.referencedValue.isCalculated()) {
+                        symb += "*";
+                    }
+                    def.push(nub.uid + "-->|" + symb + "|" + target.uid);
                 }
             }
         }
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 2a5fbddb0e16299c6106f23b7b2ff84bc7587587..6bf3734ab75edc5936a8d9b314562a1c42101165 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -74,6 +74,7 @@
     "INFO_DEVER_TITRE": "Free flow weir stage-discharge laws",
     "INFO_DIAGRAM_TITLE": "Calculation modules diagram",
     "INFO_DIAGRAM_DRAWING_ERROR": "Error while drawing diagram",
+    "INFO_DIAGRAM_CALCULATED_PARAM": "calculated parameter",
     "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Edit initial value",
     "INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS": "between %s and %s",
     "INFO_DIALOG_EDIT_PAB_N_DEVICES": "%s device(s)",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index a9211fb769762dd8787d122ba13f406f78b32fc1..dd9b7a791e25f093a0abe78d48d0f08283b57272 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -74,6 +74,7 @@
     "INFO_DEVER_TITRE": "Lois de déversoirs dénoyés",
     "INFO_DIAGRAM_TITLE": "Diagramme des modules de calcul",
     "INFO_DIAGRAM_DRAWING_ERROR": "Erreur lors du dessin du diagramme",
+    "INFO_DIAGRAM_CALCULATED_PARAM": "paramètre calculé",
     "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Modifier la valeur initiale",
     "INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS": "entre %s et %s",
     "INFO_DIALOG_EDIT_PAB_N_DEVICES": "%s ouvrage(s)",