diff --git a/src/app/components/field-set/field-set.component.html b/src/app/components/field-set/field-set.component.html
index 88654611e535f4cf3834616084282c15d310ea6b..381115b094250a8aaf4f585382ce568b33276a2b 100644
--- a/src/app/components/field-set/field-set.component.html
+++ b/src/app/components/field-set/field-set.component.html
@@ -45,7 +45,7 @@
             (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)">
         </param-field-line>
 
-        <select-field-line *ngIf="isSelectField(p)" [_select]=p>
+        <select-field-line *ngIf="isSelectField(p)" [_select]=p (valueChanged)=onSelectLineChanged($event)>
         </select-field-line>
     </ng-template>
 </mat-card-content>
diff --git a/src/app/components/field-set/field-set.component.ts b/src/app/components/field-set/field-set.component.ts
index 889b28d60f4dc9f93d981e8536aeb1113eb9abc4..16298d652fe94b3d142e20cfe0a1670763fa5088 100644
--- a/src/app/components/field-set/field-set.component.ts
+++ b/src/app/components/field-set/field-set.component.ts
@@ -268,6 +268,14 @@ export class FieldSetComponent implements DoCheck {
         this.updateValidity(true);
     }
 
+    /**
+     * réception d'un événement de validité de SelectFieldLineComponent
+     */
+    public onSelectLineChanged(value:any) {
+        this.updateValidity(true);
+    }
+    
+
     /**
     * réception d'un événement de changement de valeur d'un input
     */
diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html
index 0a75a714e006ecb3a3a4b20d2e946762b82c5831..86622ddf07d7f04f0ca06d06b9a4fa4be6f094cb 100644
--- a/src/app/components/generic-select/generic-select.component.html
+++ b/src/app/components/generic-select/generic-select.component.html
@@ -1,5 +1,5 @@
 <mat-form-field>
-    <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple">
+    <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue"  [multiple]="isMultiple" (selectionChange) ="onValueChange($event)">
         <mat-select-trigger *ngIf="isMultiple">
             {{ selectedValue && selectedValue[0] ? entryLabel(selectedValue[0]) : '' }}
             <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label">
@@ -11,7 +11,7 @@
         </mat-option>
     </mat-select>
     <button mat-button *ngIf="showClearButton" matSuffix mat-icon-button aria-label="Clear"
-        (click)="selectedValue=[]; $event.stopPropagation()">
+        (click)="cancelValue($event)">
         <mat-icon>close</mat-icon>
     </button>
     <div *ngIf="enableHelpButton" class="overlap-select">
diff --git a/src/app/components/results-chart/chart-type.component.ts b/src/app/components/results-chart/chart-type.component.ts
index 123657c5173e1f09900f327f140c4cdd6eb3dc65..f8a7be771f6aaa774e37d516c46168e91908ffaf 100644
--- a/src/app/components/results-chart/chart-type.component.ts
+++ b/src/app/components/results-chart/chart-type.component.ts
@@ -1,4 +1,4 @@
-import { Component } from "@angular/core";
+import { Component, EventEmitter, Output } from "@angular/core";
 import { IObservable, Observer } from "jalhyd";
 import { I18nService } from "../../services/internationalisation.service";
 import { ChartType } from "../../results/chart-type";
@@ -16,6 +16,9 @@ import { decodeHtml } from "../../util/util";
 export class ChartTypeSelectComponent implements IObservable {
     private _select: SelectFieldChartType;
 
+    @Output()
+    private valueChanged = new EventEmitter();
+    
     constructor(private intlService: I18nService) {
         this._select = new SelectFieldChartType(undefined, this.intlService);
         this._select.afterParseConfig(); // fill entries, set default value
@@ -65,6 +68,10 @@ export class ChartTypeSelectComponent implements IObservable {
         return this._select.multiple;
     }
 
+    public onValueChange($event) {
+        this.selectedValue = $event.value
+        this.valueChanged.emit(this.selectedValue)
+    }
     // interface IObservable
 
     /**
diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts
index 7c4b067efcece001ba65882f713c0e286d660f48..7ca5a451da12bf8941dbc8b7ae05b777dd28a3b2 100644
--- a/src/app/components/select-field-line/select-field-line.component.ts
+++ b/src/app/components/select-field-line/select-field-line.component.ts
@@ -1,4 +1,4 @@
-import { Component, Input, OnInit } from "@angular/core";
+import { Component, DoCheck, EventEmitter, Input, OnInit, Output } from "@angular/core";
 
 import { SelectField } from "../../formulaire/elements/select/select-field";
 import { SelectEntry } from "../../formulaire/elements/select/select-entry";
@@ -21,17 +21,23 @@ export class SelectFieldLineComponent implements OnInit {
     @Input()
     private _select: SelectField;
 
+    /**
+     * événément de changement de valeur d'un select
+     */
+    @Output()
+    private valueChanged = new EventEmitter();
+
     public constructor(
         private i18nService: I18nService,
         private appSetupService: ApplicationSetupService
     ) {}
-
+    
     public get selectId() {
         return this._select.id;
     }
 
     public get isMultiple(): boolean {
-        return this._select.multiple;
+    return this._select.multiple;
     }
 
     public get entries(): SelectEntry[] {
@@ -53,10 +59,33 @@ export class SelectFieldLineComponent implements OnInit {
         return this._select.getValue();
     }
 
+    public onValueChange($event) {
+        this.selectedValue = $event.value
+        this.valueChanged.emit(this.selectedValue)
+    }
+
+    public cancelValue($event): any {
+        this.selectedValue = [];
+        this.valueChanged.emit(this.selectedValue)
+        // this.validChange.emit(false)
+        $event.stopPropagation();
+    }
+
     public get isValid(): boolean {
-        return (this._select.getValue() !== undefined);
+        if(this._select.getValue() !== undefined) {
+            if(Object.keys(this._select.getValue()).length > 0) {
+                return true;
+            }
+            else {
+                return false
+            }
+        }
+        else {
+            return false
+        }
     }
 
+
     public set selectedValue(v: SelectEntry | SelectEntry[]) {
         this._select.setValue(v);
     }