diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index a72bd526e7e48fcb3a5638e015a38fdb3e170426..327e20d799e1ae45b0ddc8671ed136570c374a35 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -442,7 +442,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
      */
     private updateUIValidity() {
         this._isUIValid = false;
-
+        if (! this._formulaire.calculateDisabled) {
         if (this._fieldsetComponents !== undefined) {
             this._isUIValid = this._fieldsetComponents.reduce(
                 // callback
@@ -485,6 +485,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
             this._isUIValid = this._isUIValid && this._pabTableComponent.isValid;
         }
     }
+    }
 
     public getElementStyleDisplay(id: string) {
         const isDisplayed: boolean = this._formulaire.isDisplayed(id);
diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts
index 3cb94b538c3290d99fdaa048f7fd3b7becb7e392..1512cf77e29788900606dabf9856ea278ce89c44 100644
--- a/src/app/formulaire/definition/form-definition.ts
+++ b/src/app/formulaire/definition/form-definition.ts
@@ -45,6 +45,9 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
     /** aide en ligne pour les résultats */
     protected _resultsHelpLinks: { [key: string]: string };
 
+    /** set to true to definitely gray-out Calculate button  */
+    protected _calculateDisabled = false;
+
     /** fichier de configuration */
     private _jsonConfig: {};
 
@@ -71,6 +74,10 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
         }
     }
 
+    public get calculateDisabled(): boolean {
+        return this._calculateDisabled;
+    }
+
     public get specificLocalisation() {
         return this._specificLocalisation;
     }
@@ -160,6 +167,9 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
         }
         this._helpLink = json["help"];
         this._resultsHelpLinks = json["resultsHelp"];
+        if (json["calculateDisabled"] !== undefined) {
+            this._calculateDisabled = json["calculateDisabled"];
+        }
     }
 
     /** called at the end of parseConfig() */