diff --git a/src/app/components/fieldset-container/fieldset-container.component.html b/src/app/components/fieldset-container/fieldset-container.component.html
index 77049de3211f49d1a90556b80fa85a69339d1b74..02a21f76070d619c1504ecbc47f5190d18d2cb02 100644
--- a/src/app/components/fieldset-container/fieldset-container.component.html
+++ b/src/app/components/fieldset-container/fieldset-container.component.html
@@ -7,6 +7,12 @@
     <mat-card-title>
         {{ title }}
     </mat-card-title>
+    <div class="card-container-right">
+        <button type="button" *ngIf="enableAddStructureButton" mat-icon-button (click)="onAddStructureClick()" class="fsc-add-structure"
+            [title]="uitextAddStructure">
+            <mat-icon>add_box</mat-icon>
+        </button>
+    </div>
 </mat-card-header>
 
 <mat-card-content>
diff --git a/src/app/components/fieldset-container/fieldset-container.component.scss b/src/app/components/fieldset-container/fieldset-container.component.scss
index 0a700234caabc6c4d63f888380d39b90d30fd07e..f89f5a9c73435a64781ba578db906579a9e997df 100644
--- a/src/app/components/fieldset-container/fieldset-container.component.scss
+++ b/src/app/components/fieldset-container/fieldset-container.component.scss
@@ -31,6 +31,11 @@ mat-card-header {
         font-size: 16px;
         margin-bottom: 8px;
     }
+
+    // c'est tout pourri, mais bon...
+    .card-container-right {
+        margin-top: -10px;
+    }
 }
 
 mat-card-content {
diff --git a/src/app/components/fieldset-container/fieldset-container.component.ts b/src/app/components/fieldset-container/fieldset-container.component.ts
index c98450cdcb53236feb992f69304ac6e7f21b405b..b496bb944d7967124917b52c39e71d2906834ab1 100644
--- a/src/app/components/fieldset-container/fieldset-container.component.ts
+++ b/src/app/components/fieldset-container/fieldset-container.component.ts
@@ -188,6 +188,14 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
         this.addSubNub(evt.fs, evt.clone);
     }
 
+    /**
+     * clic sur le bouton "ajouter une structure"
+     */
+    public onAddStructureClick() {
+        this._container.addFromTemplate(0, 0);
+        this.validChange.emit();
+    }
+
     /**
     * réception d'un événement de demande de suppression d'un FieldSet
     */
@@ -227,7 +235,15 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
         return this._container && this._container.helpLink;
     }
 
+    public get enableAddStructureButton() {
+        return this._container.getKids().length === 0;
+    }
+
     public get uitextOpenHelp() {
         return this.i18nService.localizeText("INFO_CALCULATOR_OPEN_HELP");
     }
+
+    public get uitextAddStructure(): string {
+        return this.i18nService.localizeText("INFO_FIELDSET_ADD");
+    }
 }
diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index 04726b0ab638d7f31beac242e29246992ef7174d..cd11ac0b4a7da0cb061d7e820bc49c963823a1ad 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -24,7 +24,8 @@ import {
     PreBarrage,
     PbCloison,
     Espece,
-    VariatedDetails
+    VariatedDetails,
+    ParallelStructure
 } from "jalhyd";
 
 import { generateValuesCombination, getUnformattedIthResult, getUnformattedIthValue } from "../../util";
@@ -523,9 +524,20 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
             if (this._pbSchemaComponent !== undefined) {
                 res = res && this._pbSchemaComponent.isValid;
             }
-            if (this._formulaire.currentNub.calcType === CalculatorType.PreBarrage) {
-                const form: FormulairePrebarrage = this._formulaire as FormulairePrebarrage;
-                res = res && form.checkParameters().length === 0;
+            switch (this._formulaire.currentNub.calcType) {
+                case CalculatorType.PreBarrage:
+                    const form: FormulairePrebarrage = this._formulaire as FormulairePrebarrage;
+                    res = res && form.checkParameters().length === 0;
+                    break;
+
+                case CalculatorType.CloisonAval:
+                case CalculatorType.Cloisons:
+                case CalculatorType.PbCloison:
+                case CalculatorType.Dever:
+                    // in case of parallel structures, check that child structures count > 0
+                    const pstr = this.formulaire.currentNub as ParallelStructure;
+                    res = res && pstr.getChildren().length > 0;
+                    break;
             }
         }