diff --git a/ui/src/components/common/CollapsibleTree.vue b/ui/src/components/common/CollapsibleTree.vue
index 9f80b96ebbb169a220a462a5f286e0b8268fac2f..83c0930249cec25761b40886d94ee0fb95361c13 100644
--- a/ui/src/components/common/CollapsibleTree.vue
+++ b/ui/src/components/common/CollapsibleTree.vue
@@ -57,9 +57,6 @@
           <span class="file-name" v-else-if="lineCount > 0">
             {{ $t("validation.count-line") }} {{ lineCount }}
           </span>
-          <span v-else-if="!option.synthesisMinMax" class="nodata has-text-danger">
-            {{ $t("validation.data-empty") }}
-          </span>
         </div>
         <div
           :class="
@@ -82,7 +79,11 @@
                 new Date(option.synthesisMinMax[1]).toLocaleDateString("fr")
               }}
             </b-field>
+            <div v-if="isLoading" class="loader-wrapper">
+              <div class="loader is-loading"></div>
+            </div>
             <availiblity-chart
+              v-else
               class="tile availiblity-chart"
               :show-dates="false"
               :minmax="option.synthesis.minmax"
@@ -90,6 +91,9 @@
               :id="option.label"
             />
           </span>
+          <span v-else class="nodata has-text-danger" style="margin-left: 50px">
+            {{ $t("validation.data-empty") }}
+          </span>
         </div>
       </div>
       <div class="CollapsibleTree-buttons column is-2">
@@ -176,6 +180,7 @@ export default {
       type: Number,
       default: 0,
     },
+    isLoading: Boolean,
     applicationTitle: {
       type: String,
     },
diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue
index 501d0423d978f5ac623bb66d1c59144e065349a1..384e5774c296fd44be7a45358d2268a5fdd0d147 100644
--- a/ui/src/views/application/ApplicationCreationView.vue
+++ b/ui/src/views/application/ApplicationCreationView.vue
@@ -180,6 +180,7 @@ export default class ApplicationCreationView extends Vue {
   }
 
   async testApplication() {
+    const loadingComponent = this.$buefy.loading.open();
     this.errorsMessages = [];
     try {
       let response = await this.applicationService.validateConfiguration(this.applicationConfig);
@@ -212,6 +213,7 @@ export default class ApplicationCreationView extends Vue {
     } catch (error) {
       this.checkMessageErrors(error);
     }
+    loadingComponent.close();
   }
 
   checkMessageErrors(error) {
diff --git a/ui/src/views/application/ApplicationsView.vue b/ui/src/views/application/ApplicationsView.vue
index 2c5ffe74bd9602a584b4082348b0af41a40b1e2c..bb5521d59012ce9913f9c0933b9e061e529ddc18 100644
--- a/ui/src/views/application/ApplicationsView.vue
+++ b/ui/src/views/application/ApplicationsView.vue
@@ -94,6 +94,11 @@
         </section>
       </div>
       <div class="column is-9-widescreen is-12-desktop">
+        <caption class="columns" v-if="loading">
+          <div class="column loader-wrapper">
+            <div class="loader is-loading"></div>
+          </div>
+        </caption>
         <div class="columns">
           <div
               v-for="(application, index) in selectedApplications"
@@ -272,6 +277,7 @@ export default class ApplicationsView extends Vue {
   checkboxTrieA_z = "false";
   checkboxTrieZ_a = "false";
   checkboxDate = "true";
+  loading = false;
 
   copyOfApplications(application) {
     return [...application];
@@ -318,6 +324,9 @@ export default class ApplicationsView extends Vue {
   async init() {
     this.applications = await this.applicationService.getApplications(['DATATYPE', 'REFERENCETYPE']);
     this.selectedApplications = this.applications;
+    if(this.selectedApplications.length === 0) {
+      this.loading = true
+    }
     if (this.checkboxDate === "true")
       this.selectedApplications.sort((a, b) => b.creationDate - a.creationDate);
   }
@@ -326,8 +335,8 @@ export default class ApplicationsView extends Vue {
     this.$router.push("/applicationCreation");
   }
 
-  updateApplication(id) {
-    this.$router.push(`/applicationCreation/${id}`);
+  updateApplication() {
+    this.$router.push(`/applicationCreation`);
   }
 
   displayReferencesManagement(application) {
@@ -413,4 +422,13 @@ export default class ApplicationsView extends Vue {
   top: 5px;
   left: 5px;
 }
+
+.loader-wrapper {
+  margin: 50px;
+  justify-content: center;
+  .loader {
+    height: 100px;
+    width: 100px;
+  }
+}
 </style>
\ No newline at end of file
diff --git a/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue b/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue
index 3cf1c71041118f7c4d504d0ea4391b9d4e34c1e3..72965cfc21f131b711b2a60b93d82f882aa10eec 100644
--- a/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue
+++ b/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue
@@ -102,6 +102,7 @@
             ></b-field>
           </div>
         </div>
+        <b-loading :is-full-page="null" v-model="isLoading"></b-loading>
       </AuthorizationTable>
 
       <div class="buttons">
@@ -176,7 +177,7 @@ export default class DataTypeAuthorizationInfoView extends Vue {
   selectedlabels = [];
   userLabels = [];
   isApplicationAdmin = false;
-  openOnFocus = true;
+  isLoading;
 
   periods = {
     FROM_DATE: this.$t("dataTypeAuthorizations.from-date"),
@@ -295,6 +296,7 @@ export default class DataTypeAuthorizationInfoView extends Vue {
         }
       ),
     ];
+    this.isLoading = false;
   }
 
   mounted() {}
@@ -309,6 +311,7 @@ export default class DataTypeAuthorizationInfoView extends Vue {
   }
 
   async init() {
+    this.isLoading = true;
     try {
       this.application = await this.applicationService.getApplication(this.applicationName, [
         "CONFIGURATION",
diff --git a/ui/src/views/datatype/DataTypeTableView.vue b/ui/src/views/datatype/DataTypeTableView.vue
index bbe6e80321806b27f8dbb04db41400ebdafb6c6e..fe17a77d11488502983ae1d4cd33371ecf95b231 100644
--- a/ui/src/views/datatype/DataTypeTableView.vue
+++ b/ui/src/views/datatype/DataTypeTableView.vue
@@ -298,18 +298,9 @@
           passive-type="is-dark"
           type="is-primary"
           :true-value="$t('dataTypesManagement.accepted')"
-          :false-value="$t('dataTypesManagement.refuse')"
-          >{{ $t("ponctuation.regEx") }} {{ params.variableComponentFilters.isRegex }}</b-switch
-        >
-        <!--        <b-button
-                    class="btnRegExp"
-                    type="is-dark"
-                    size="is-small"
-                    @click="testChangeRegEx()"
-                    outlined
-                >
-                  {{ $t("ponctuation.regEx") }}</b-button
-                >-->
+          :false-value="$t('dataTypesManagement.refuse')">
+          {{ $t("ponctuation.regEx") }} {{ params.variableComponentFilters.isRegex }}
+        </b-switch>
       </b-field>
       <div class="columns">
         <div class="column is-8-widescreen is-6-desktop">
@@ -355,13 +346,13 @@
       <div class="DataSetTableView-wrapper table-wrapper has-sticky-header" style="height: 690px">
         <table class="table is-striped">
           <caption v-if="variables.length === 0">
-            <div class="columns">
-              {{ $t("alert.dataTypeFiltreEmpty") }}
+            <div v-if="!displayDataTypes" class="loader-wrapper">
+              <div class="loader is-loading"></div>
             </div>
-            <div class="columns">
-              <b-button icon-left="redo" type="is-danger" @click="reInit">{{
-                $t("dataTypesManagement.réinitialiser")
-              }}</b-button>
+            <div v-if="displayDataTypes" class="columns">
+              <div class="column">
+                {{ $t("alert.dataTypeFiltreEmpty") }}
+              </div>
             </div>
           </caption>
           <thead style="text-transform: capitalize; text-align: center">
@@ -535,23 +526,7 @@ export default class DataTypeTableView extends Vue {
   isOpen = 0;
   variableSearch = [];
   referenceLineCheckers = [];
-  isRegExp = false;
-
-  /*  testChangeRegEx() {
-    let checkboxes = document.querySelector('.btnRegExp');
-    if (this.params.variableComponentFilters.isRegex === true) {
-      this.params.variableComponentFilters.isRegex = false;
-      checkboxes.classList.remove('active');
-    }
-    else if (this.params.variableComponentFilters.isRegex === false) {
-      this.params.variableComponentFilters.isRegex = true;
-      checkboxes[i].classList.add('active');
-    } else {
-      this.params.variableComponentFilters.isRegex = !this.isRegExp;
-      checkboxes[i].classList.add('active');
-    }
-    console.log(this.params.variableComponentFilters.isRegex);
-  }*/
+  displayDataTypes = false;
 
   async created() {
     await this.init();
@@ -605,6 +580,9 @@ export default class DataTypeTableView extends Vue {
       this.dataTypeId,
       this.params
     );
+    if (dataTypes.rows.length === 0) {
+      this.displayDataTypes = true;
+    }
     this.referenceLineCheckers = dataTypes.checkedFormatVariableComponents.ReferenceLineChecker;
 
     this.translations = dataTypes.entitiesTranslations;
@@ -1005,4 +983,12 @@ $row-variable-height: 60px;
 .icon.is-small {
   font-size: 5rem;
 }
+
+.loader-wrapper {
+  margin: 50px;
+  .loader {
+    height: 100px;
+    width: 100px;
+  }
+}
 </style>
\ No newline at end of file
diff --git a/ui/src/views/datatype/DataTypesManagementView.vue b/ui/src/views/datatype/DataTypesManagementView.vue
index c1c01c0bca50564acec42628d283d32c9f1a1e89..363d4d6576d1ff1a5c8816c017dfc371429e3c51 100644
--- a/ui/src/views/datatype/DataTypesManagementView.vue
+++ b/ui/src/views/datatype/DataTypesManagementView.vue
@@ -41,6 +41,7 @@
           withSynthesis: true,
           withTooltip: true,
         }"
+        :is-loading="isLoading"
         :level="0"
         :on-click-label-cb="(event, label) => openDataTypeCb(event, label)"
         :on-click-label-synthesis-detail-cb="
@@ -110,8 +111,8 @@ export default class DataTypesManagementView extends Vue {
   alertService = AlertService.INSTANCE;
   dataService = DataService.INSTANCE;
   errorsService = ErrorsService.INSTANCE;
-
   application = new ApplicationResult();
+  isLoading = false;
   subMenuPaths = [];
   buttons = [
     new Button(
@@ -167,6 +168,7 @@ export default class DataTypesManagementView extends Vue {
     }
   }
   async initSynthesis() {
+    this.isLoading = true;
     for (const datatype in this.application.dataTypes) {
       let minmaxByDatatypes = [];
       let synthesis = await this.synthesisService.getSynthesis(this.applicationName, datatype);
@@ -233,6 +235,7 @@ export default class DataTypesManagementView extends Vue {
     }
     this.synthesis = { ...this.synthesis };
     this.synthesisMinMax = { ...this.synthesisMinMax };
+    this.isLoading = false;
   }
 
   consultDataType(label) {
diff --git a/ui/src/views/datatype/DataTypesRepositoryView.vue b/ui/src/views/datatype/DataTypesRepositoryView.vue
index 26ff9b0d3e77d364cf6ff34c9d52ac76a97d6901..b8056473e3d61b9cdff93df46aabc8e27b7e77ab 100644
--- a/ui/src/views/datatype/DataTypesRepositoryView.vue
+++ b/ui/src/views/datatype/DataTypesRepositoryView.vue
@@ -158,7 +158,8 @@
       </div>
       <div v-if="isAuthorisationsSelected()" class="columns">
         <div class="card column">
-          <div class="card-content">
+          <div class="card-content"
+               id="element">
             <table
                 v-if="datasets && Object.keys(datasets).length"
                 class="table is-striped is-fullwidth numberData"
@@ -341,6 +342,7 @@ export default class DataTypesRepositoryView extends Vue {
   currentDataset = null;
   repository = {};
   errorsMessages = [];
+  isFullPage = false;
 
   mounted() {
     this.$on("authorizationChanged", this.updateDatasets);
@@ -371,7 +373,6 @@ export default class DataTypesRepositoryView extends Vue {
   }
 
   changeFile(file) {
-    console.log("repository", this.repository);
     let pattern = this.repository.filePattern;
     let split = [];
     if (pattern && pattern.length) {
@@ -605,6 +606,10 @@ export default class DataTypesRepositoryView extends Vue {
   }
 
   async publish(dataset, pusblished) {
+    // TODO : ajout loading en JS
+    const loadingComponent = this.$buefy.loading.open({
+      container: document.getElementById("element")
+    })
     this.errorsMessages = [];
     dataset.params.published = pusblished;
     let requiredAuthorizations = dataset.params.binaryFiledataset.requiredAuthorizations;
@@ -612,9 +617,7 @@ export default class DataTypesRepositoryView extends Vue {
       acc[key] = acc[key] ? acc[key].sql : "";
       return acc;
     }, requiredAuthorizations);
-    console.log("requiredAuthorizations", requiredAuthorizations);
     dataset.params.binaryFiledataset.requiredAuthorizations = requiredAuthorizations;
-    console.log("binaryFiledataset", dataset.params.binaryFiledataset);
     var fileOrId = new FileOrUUID(dataset.id, dataset.params.binaryFiledataset, pusblished);
     try {
       var uuid = await this.dataService.addData(
@@ -628,6 +631,7 @@ export default class DataTypesRepositoryView extends Vue {
     } catch (error) {
       this.checkMessageErrors(error);
     }
+    loadingComponent.close();
   }
 
   checkMessageErrors(error) {
@@ -639,7 +643,6 @@ export default class DataTypesRepositoryView extends Vue {
           for (let i = 0; i < value.length; i++) {
             if (message.length > 0) {
               if (JSON.stringify(value[i]) !== JSON.stringify(value[i - message.length])) {
-                console.log(message);
                 this.errorsList.push(value[i]);
               }
               for (let j = 0; j < message.length; j++) {
@@ -652,7 +655,6 @@ export default class DataTypesRepositoryView extends Vue {
               this.errorsList.push(value[i]);
             }
           }
-          console.log(this.errorsList);
           if (this.errorsList.length !== 0) {
             this.errorsMessages = this.errorsService.getCsvErrorsMessages(this.errorsList);
           } else {
diff --git a/ui/src/views/references/ReferenceTableView.vue b/ui/src/views/references/ReferenceTableView.vue
index 5a5b70bb95bedc7ae42bf4782334f4caa751c54a..8c900818a92137f57e1827c54a0b9cab8003e8e2 100644
--- a/ui/src/views/references/ReferenceTableView.vue
+++ b/ui/src/views/references/ReferenceTableView.vue
@@ -13,6 +13,7 @@
     <div v-if="reference && columns">
       <b-table
         :data="tableValues"
+        :loading="isLoading"
         :striped="true"
         :is-focusable="true"
         :is-hoverable="true"
@@ -137,7 +138,7 @@ export default class ReferenceTableView extends Vue {
   });
   totalRows = -1;
   currentPage = 1;
-
+  isLoading = false;
   application = new ApplicationResult();
   subMenuPaths = [];
   reference = {};
@@ -246,6 +247,7 @@ export default class ReferenceTableView extends Vue {
   }
 
   async init() {
+    this.isLoading = true;
     try {
       this.application = await this.applicationService.getApplication(this.applicationName,['CONFIGURATION','REFERENCETYPE']);
       this.application = {
@@ -276,6 +278,7 @@ export default class ReferenceTableView extends Vue {
     } catch (error) {
       this.alertService.toastServerError();
     }
+    this.isLoading = false;
   }
 
   async setInitialVariables() {