diff --git a/src/module_vmap/module/javascript/app/vmap/tools/select/select.js b/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
index 2da086c67cb0d4828412271e0642000597b4c0b5..bf55eda5f396c3c43e6d29d8216478f278894cd0 100755
--- a/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
@@ -1648,7 +1648,6 @@ nsVmap.nsToolsManager.Select.prototype.selectController.prototype.getFormDataFro
     oVmap.log('nsVmap.nsToolsManager.Select.prototype.selectController.prototype.getFormDataFromValues');
 
     var oFormData_ = new FormData();
-    var oUnchangedFiles = {};
 
     for (var key in oValues) {
 
@@ -1665,13 +1664,7 @@ nsVmap.nsToolsManager.Select.prototype.selectController.prototype.getFormDataFro
             oFormData_.append(key, oValues[key]['aFiles'][0]['name']);
         } else if (bIsMultipleFiles) {
             for (var i = 0; i < oValues[key].length; i++) {
-                if (oValues[key][i]._modified === false) {
-                    // Mémorise les fichiers non modifiés par l'utilisateur
-                    if (!goog.isArray(oUnchangedFiles[key])) {
-                        oUnchangedFiles[key] = [];
-                    }
-                    oUnchangedFiles[key].push(oValues[key][i]['name']);
-                } else {
+                if (oValues[key][i]._modified !== false) {
                     // Ajoute les fichiers
                     if (goog.isDefAndNotNull(oValues[key][i]['name'])) {
                         oFormData_.append(key + '[]', oValues[key][i], oValues[key][i]['name']);
@@ -1685,10 +1678,6 @@ nsVmap.nsToolsManager.Select.prototype.selectController.prototype.getFormDataFro
         }
     }
 
-    if (Object.keys(oUnchangedFiles).length > 0) {
-        oFormData_.append('vitis_unchanged_files', JSON.stringify(oUnchangedFiles));
-    }
-
     return oFormData_;
 };
 
diff --git a/src/module_vmap/web_service/ws/Querys.class.inc b/src/module_vmap/web_service/ws/Querys.class.inc
index e3f6c006b90ed4dee2b35d01f17a7f9b57fc9532..05db9e05698c14455077eeee01b68099ad73122a 100644
--- a/src/module_vmap/web_service/ws/Querys.class.inc
+++ b/src/module_vmap/web_service/ws/Querys.class.inc
@@ -1444,6 +1444,19 @@ class Querys extends Vmap {
             $aUnchangedFiles = json_decode($this->aValues['vitis_unchanged_files'], true);
         }
 
+        // Fichiers à supprimer ?
+        if (!empty($this->aValues['vitis_deleted_files'])) {
+            $aDeletedFiles = json_decode($this->aValues['vitis_deleted_files'], true);
+            foreach ($aDeletedFiles as $sName => $aFile) {
+                // Supprime les fichiers
+                $this->oFilesManager->cleanWsDataDir('vitis', $sBusinessObjectId, $this->aValues['my_vitis_id'], $sName, 'documents', $aDeletedFiles[$sName], false);
+                // Set aValues avec les fichiers restants
+                if (!empty($aUnchangedFiles[$sName])) {
+                    $this->aValues[$sName] = implode('|', $aUnchangedFiles[$sName]);
+                }
+            }
+        }
+
         // Fichiers à uploader ?
         if (!empty($_FILES) && !empty($this->aValues['my_vitis_id'])) {
             foreach ($_FILES as $sName => $aFile) {
@@ -1455,7 +1468,7 @@ class Querys extends Vmap {
                 }
 
                 // Nettoyage de l'espace ws_data
-                $this->oFilesManager->emptyWsDataDir('vitis', $sBusinessObjectId, $this->aValues['my_vitis_id'], $sName, 'documents', $aExceptions);
+                $this->oFilesManager->cleanWsDataDir('vitis', $sBusinessObjectId, $this->aValues['my_vitis_id'], $sName, 'documents', false, $aExceptions);
 
                 // Écriture des fichiers
                 $aUploadReturn = $this->oFilesManager->uploadInWsDataDir('vitis', $sBusinessObjectId, $this->aValues['my_vitis_id'], $sName, 'documents', -1, "all", null, true);
diff --git a/src/vitis/client/javascript/app/services/formSrvc.js b/src/vitis/client/javascript/app/services/formSrvc.js
index 8d0eba1b8081f66b2a2a5a010c020d67da6788b1..c2d0eb55e4b02b6898572c3968b6380090617d89 100755
--- a/src/vitis/client/javascript/app/services/formSrvc.js
+++ b/src/vitis/client/javascript/app/services/formSrvc.js
@@ -54,19 +54,11 @@ vitisApp.formSrvc = function (envSrvc, propertiesSrvc, sessionSrvc, formReaderSe
 
                                 var bContainFiles = false;
                                 var oFiles = null;
-                                if (document.getElementById(aFormRowElementsList[ifieldIndex]["id"]) != null) {
+                                if (document.getElementById(aFormRowElementsList[ifieldIndex]['id']) != null) {
                                     bContainFiles = true;
-                                    oFiles = document.getElementById(aFormRowElementsList[ifieldIndex]["id"]).files;
-                                    console.log('1');
+                                    oFiles = document.getElementById(aFormRowElementsList[ifieldIndex]['id']).files;
                                 } else {
-                                    console.log('2');
-
-                                    var oElemValue = aFormValues[aFormRowElementsList[ifieldIndex]["name"]];
-
-                                    console.log("aFormValues: ", aFormValues);
-                                    console.log("aFormRowElementsList[ifieldIndex][name]: ", aFormRowElementsList[ifieldIndex]["name"]);
-                                    console.log("oElemValue: ", oElemValue);
-
+                                    var oElemValue = aFormValues[aFormRowElementsList[ifieldIndex]['name']];
                                     if (goog.isArray(oElemValue)) {
                                         if (goog.isDefAndNotNull(oElemValue[0])) {
                                             if (goog.isDefAndNotNull(oElemValue[0]['name'])) {
@@ -81,17 +73,23 @@ vitisApp.formSrvc = function (envSrvc, propertiesSrvc, sessionSrvc, formReaderSe
                                     }
                                 }
 
-                                console.log("oFiles: ", oFiles);
-
                                 if (goog.isDefAndNotNull(oFiles)) {
                                     if (oFiles.length > 0) {
-                                        oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oFiles[0];
+                                        oFormKeysValues[aFormRowElementsList[ifieldIndex]['name']] = oFiles[0];
                                         if (oFiles.length > 1) {
-                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oFiles;
+                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]['name']] = oFiles;
+                                        }
+                                        if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]['width']) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]['height'])) {
+                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]['name'] + '_width'] = aFormRowElementsList[ifieldIndex]['width'];
+                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]['name'] + '_height'] = aFormRowElementsList[ifieldIndex]['height'];
+                                        }
+                                        // vitis_deleted_files
+                                        if (goog.isDefAndNotNull(aFormValues['vitis_deleted_files'])) {
+                                            oFormKeysValues['vitis_deleted_files'] = JSON.stringify(aFormValues['vitis_deleted_files']);
                                         }
-                                        if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["width"]) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["height"])) {
-                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_width"] = aFormRowElementsList[ifieldIndex]["width"];
-                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_height"] = aFormRowElementsList[ifieldIndex]["height"];
+                                        // vitis_unchanged_files
+                                        if (goog.isDefAndNotNull(aFormValues['vitis_unchanged_files'])) {
+                                            oFormKeysValues['vitis_unchanged_files'] = JSON.stringify(aFormValues['vitis_unchanged_files']);
                                         }
                                     } else {
                                         bContainFiles = false;
@@ -101,17 +99,17 @@ vitisApp.formSrvc = function (envSrvc, propertiesSrvc, sessionSrvc, formReaderSe
                                 }
 
                                 if (!bContainFiles) {
-                                    var oElemValue = aFormValues[aFormRowElementsList[ifieldIndex]["name"]];
+                                    var oElemValue = aFormValues[aFormRowElementsList[ifieldIndex]['name']];
                                     if (goog.isDefAndNotNull(oElemValue)) {
                                         if (goog.isDefAndNotNull(oElemValue['aFiles'])) {
                                             if (goog.isDefAndNotNull(oElemValue['aFiles'][0])) {
-                                                oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oElemValue['aFiles'][0];
+                                                oFormKeysValues[aFormRowElementsList[ifieldIndex]['name']] = oElemValue['aFiles'][0];
                                                 if (oElemValue['aFiles'].length > 1) {
-                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oElemValue['aFiles'];
+                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]['name']] = oElemValue['aFiles'];
                                                 }
-                                                if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["width"]) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["height"])) {
-                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_width"] = aFormRowElementsList[ifieldIndex]["width"];
-                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_height"] = aFormRowElementsList[ifieldIndex]["height"];
+                                                if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]['width']) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]['height'])) {
+                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]['name'] + '_width'] = aFormRowElementsList[ifieldIndex]['width'];
+                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]['name'] + '_height'] = aFormRowElementsList[ifieldIndex]['height'];
                                                 }
                                             }
                                         }
diff --git a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
index b23574a23c794dacba169b0ba9b27bb3da6d2153..ca831964a0b8752260b7ced268c85ef526d52a48 100644
--- a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
+++ b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
@@ -45,6 +45,11 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
              */
             scope['aFiles'] = [];
 
+            /**
+             * Fichiers à supprimer
+             */
+            scope['aDeletedFiles'] = [];
+
             /**
              * Liste des URL des images à afficher
              */
@@ -116,6 +121,7 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                     scope['aFiles'] = [];
                     scope['aPreviewImages'] = [];
                     scope['aPreviewDocuments'] = [];
+                    scope['aDeletedFiles'] = [];
                     scope['initPreview']();
                 });
             }
@@ -442,6 +448,9 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                     },
                     'callback': function (result) {
                         if (result) {
+
+                            scope['aDeletedFiles'].push(oFile['name']);
+
                             for (var i = 0; i < scope['aFiles'].length; i++) {
                                 if(scope['aFiles'][i]['name'] === oFile['name']){
                                     scope['aFiles'].splice(i, 1);
@@ -624,6 +633,29 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
             scope['saveFiles'] = function() {
                 $log.log("formReader.FilePickerDirective.saveFiles");
 
+                // Fichiers inchangés à ne pas re-envoyer
+                var aUnchangedFiles = [];
+                for (var i = 0; i < scope['aFiles'].length; i++) {
+                    if (scope['aFiles'][i]._modified === false) {
+                        aUnchangedFiles.push(scope['aFiles'][i]['name']);
+                    }
+                }
+                if (aUnchangedFiles.length > 0) {
+                    if (!goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']]['vitis_unchanged_files'])) {
+                        scope['oFormValues'][scope['sFormDefinitionName']]['vitis_unchanged_files'] = {}
+                    }
+                    scope['oFormValues'][scope['sFormDefinitionName']]['vitis_unchanged_files'][scope['field'].name] = aUnchangedFiles;
+                }
+
+                // Fichiers à supprimer
+                if (scope['aDeletedFiles'].length > 0) {
+                    if (!goog.isDefAndNotNull(scope['oFormValues'][scope['sFormDefinitionName']]['vitis_deleted_files'])) {
+                        scope['oFormValues'][scope['sFormDefinitionName']]['vitis_deleted_files'] = {}
+                    }
+                    scope['oFormValues'][scope['sFormDefinitionName']]['vitis_deleted_files'][scope['field'].name] = scope['aDeletedFiles'];
+                }
+
+                // Fichiers à envoyer
                 scope['oFormValues'][scope['sFormDefinitionName']][scope['field'].name] = scope['aFiles'];
             }
         }
diff --git a/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc b/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc
index 2aac729c0e6750eeab4052379335582cb42e0499..53d2e359b1a566b6ec7ca115968fb32fd7860e09 100644
--- a/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc
+++ b/src/vitis/vas/rest/class/vmlib/files/Files_manager.class.inc
@@ -477,7 +477,7 @@ class Files_manager{
      *@param $sContainer folder between $sObject and $mId
      *@return true if the disrectory has benn cleaned
      */
-    public function emptyWsDataDir($sModule, $sObject, $mId, $sField, $sContainer = "", $aExceptions = []){
+    public function cleanWsDataDir($sModule, $sObject, $mId, $sField, $sContainer = "", $aFilesToDelete = false, $aExceptions = false){
 
         // controle les attributs pour éviter les mauvais placements
         if (strpos($sModule, '/') > -1){
@@ -520,15 +520,32 @@ class Files_manager{
 
         // Ajoute les miniatures aux exceptions
         $aMinExceptions = [];
-        for ($i=0; $i < count($aExceptions); $i++) {
-            $aMinException = explode('.', $aExceptions[$i]);
-            array_pop($aMinException);
-            array_push($aMinException, 'min');
-            array_push($aMinException, 'jpg');
-            array_push($aMinExceptions, implode('.', $aMinException));
+        if ($aExceptions !== false) {
+            for ($i=0; $i < count($aExceptions); $i++) {
+                $aMinException = explode('.', $aExceptions[$i]);
+                array_pop($aMinException);
+                array_push($aMinException, 'min');
+                array_push($aMinException, 'jpg');
+                array_push($aMinExceptions, implode('.', $aMinException));
+            }
+            for ($i=0; $i < count($aMinExceptions); $i++) {
+                array_push($aExceptions, $aMinExceptions[$i]);
+            }
         }
-        for ($i=0; $i < count($aMinExceptions); $i++) {
-            array_push($aExceptions, $aMinExceptions[$i]);
+
+        // Ajoute les miniatures aux fichiers à supprimer
+        $aMinFilesToDelete = [];
+        if ($aFilesToDelete !== false) {
+            for ($i=0; $i < count($aFilesToDelete); $i++) {
+                $aMinFileToDelete = explode('.', $aFilesToDelete[$i]);
+                array_pop($aMinFileToDelete);
+                array_push($aMinFileToDelete, 'min');
+                array_push($aMinFileToDelete, 'jpg');
+                array_push($aMinFilesToDelete, implode('.', $aMinFileToDelete));
+            }
+            for ($i=0; $i < count($aMinFilesToDelete); $i++) {
+                array_push($aFilesToDelete, $aMinFilesToDelete[$i]);
+            }
         }
 
         // création du fichier si besoin
@@ -536,8 +553,10 @@ class Files_manager{
             $files = glob($sDestDir . '/*'); // get all file names
             foreach($files as $file){ // iterate files
                 if(is_file($file)){
-                    if (!in_array(basename($file), $aExceptions)) {
-                        unlink($file);
+                    if (in_array(basename($file), $aFilesToDelete) || $aFilesToDelete == false) {
+                        if (!in_array(basename($file), $aExceptions) || $aExceptions == false) {
+                            unlink($file);
+                        }
                     }
                 }
             }