diff --git a/4/ecolyo.13df84244309c7fe1570.js b/4/ecolyo.626fb2981746527b7c6d.js
similarity index 96%
rename from 4/ecolyo.13df84244309c7fe1570.js
rename to 4/ecolyo.626fb2981746527b7c6d.js
index 9a3a0d4daecab34f10e48ddb2dba0e1bc81a8afb..1cb52cc45ae1aecd0a24fd65f5e064da91a04c3c 100644
--- a/4/ecolyo.13df84244309c7fe1570.js
+++ b/4/ecolyo.626fb2981746527b7c6d.js
@@ -1175,7 +1175,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
 
 function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
 
-function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (_e) { function e(_x2) { return _e.apply(this, arguments); } e.toString = function () { return _e.toString(); }; return e; }(function (e) { throw e; }), f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function (_e2) { function e(_x3) { return _e2.apply(this, arguments); } e.toString = function () { return _e2.toString(); }; return e; }(function (e) { didErr = true; err = e; }), f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
+function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (_e) { function e(_x4) { return _e.apply(this, arguments); } e.toString = function () { return _e.toString(); }; return e; }(function (e) { throw e; }), f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function (_e2) { function e(_x5) { return _e2.apply(this, arguments); } e.toString = function () { return _e2.toString(); }; return e; }(function (e) { didErr = true; err = e; }), f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
 
 function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
 
@@ -1222,201 +1222,230 @@ var ExportLoadingModal = function ExportLoadingModal(_ref) {
     FileSaver.saveAs(data, fileName + fileExtension);
   };
 
-  var getExportDataFluid = (0, _react.useCallback)( /*#__PURE__*/function () {
-    var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(fluidType) {
-      var consumptionService, firstDataDate, lastDataDate, timePeriod, dataLoad, exportDataFluid, _iterator2, _step2, data, dataRow, emas, maxPowerEntities, maxLoad;
-
+  var buildDataRow = /*#__PURE__*/function () {
+    var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(dataload, fluidType) {
+      var dataRow, emas, maxPowerEntities, maxLoad;
       return _regenerator.default.wrap(function _callee$(_context) {
         while (1) {
           switch (_context.prev = _context.next) {
+            case 0:
+              dataRow = {};
+              dataRow[t('export.month')] = dataload.date.month.toString().padStart(2, '0');
+              dataRow[t('export.year')] = dataload.date.year;
+              dataRow["".concat(t('export.consumption'), " (").concat(t('FLUID.' + _fluid.FluidType[fluidType] + '.UNIT'), ")")] = dataload.value;
+
+              if (!(fluidType === _fluid.FluidType.ELECTRICITY)) {
+                _context.next = 10;
+                break;
+              }
+
+              emas = new _enedisMonthlyAnalysisData.default(client);
+              _context.next = 8;
+              return emas.getMaxPowerByDate(dataload.date.year, dataload.date.month);
+
+            case 8:
+              maxPowerEntities = _context.sent;
+
+              if (maxPowerEntities) {
+                maxLoad = maxPowerEntities.reduce(function (max, entity) {
+                  if (entity.load > max) {
+                    return entity.load;
+                  }
+
+                  return max;
+                }, 0);
+                dataRow[t('export.maxpower')] = maxLoad;
+              }
+
+            case 10:
+              return _context.abrupt("return", dataRow);
+
+            case 11:
+            case "end":
+              return _context.stop();
+          }
+        }
+      }, _callee);
+    }));
+
+    return function buildDataRow(_x, _x2) {
+      return _ref2.apply(this, arguments);
+    };
+  }();
+
+  var getExportDataSheet = (0, _react.useCallback)( /*#__PURE__*/function () {
+    var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(fluidType) {
+      var consumptionService, firstDataDate, lastDataDate, timePeriod, dataLoad, exportDataSheet, _iterator2, _step2, data, dataRow;
+
+      return _regenerator.default.wrap(function _callee2$(_context2) {
+        while (1) {
+          switch (_context2.prev = _context2.next) {
             case 0:
               consumptionService = new _consumption.default(client);
-              _context.next = 3;
+              _context2.next = 3;
               return consumptionService.fetchAllFirstDateData([fluidType], _timeStep.TimeStep.MONTH);
 
             case 3:
-              firstDataDate = _context.sent;
-              _context.next = 6;
+              firstDataDate = _context2.sent;
+              _context2.next = 6;
               return consumptionService.fetchAllLastDateData([fluidType], _timeStep.TimeStep.MONTH);
 
             case 6:
-              lastDataDate = _context.sent;
+              lastDataDate = _context2.sent;
 
               if (!(!firstDataDate[0] || !lastDataDate[0])) {
-                _context.next = 9;
+                _context2.next = 9;
                 break;
               }
 
-              return _context.abrupt("return", null);
+              return _context2.abrupt("return", null);
 
             case 9:
               timePeriod = {
                 startDate: firstDataDate[0],
                 endDate: lastDataDate[0]
               };
-              _context.next = 12;
+              _context2.next = 12;
               return consumptionService.getGraphData(timePeriod, _timeStep.TimeStep.MONTH, [fluidType], undefined, undefined, false, true);
 
             case 12:
-              dataLoad = _context.sent;
+              dataLoad = _context2.sent;
 
-              if (!(dataLoad !== null && dataLoad !== void 0 && dataLoad.actualData)) {
-                _context.next = 46;
+              if (dataLoad !== null && dataLoad !== void 0 && dataLoad.actualData) {
+                _context2.next = 15;
                 break;
               }
 
-              exportDataFluid = {};
-              exportDataFluid.fluidName = t('FLUID.' + _fluid.FluidType[fluidType] + '.LABEL');
-              exportDataFluid.data = [];
+              return _context2.abrupt("return", null);
+
+            case 15:
+              exportDataSheet = {
+                fluidName: t('FLUID.' + _fluid.FluidType[fluidType] + '.LABEL'),
+                data: []
+              };
               _iterator2 = _createForOfIteratorHelper(dataLoad.actualData);
-              _context.prev = 18;
+              _context2.prev = 17;
 
               _iterator2.s();
 
-            case 20:
+            case 19:
               if ((_step2 = _iterator2.n()).done) {
-                _context.next = 36;
+                _context2.next = 29;
                 break;
               }
 
               data = _step2.value;
 
-              if (!(data.value != -1)) {
-                _context.next = 34;
-                break;
-              }
-
-              dataRow = {};
-              dataRow[t('export.month')] = data.date.month.toString().padStart(2, '0');
-              dataRow[t('export.year')] = data.date.year;
-              dataRow["".concat(t('export.consumption'), " (").concat(t('FLUID.' + _fluid.FluidType[fluidType] + '.UNIT'), ")")] = data.value;
-
-              if (!(fluidType === _fluid.FluidType.ELECTRICITY)) {
-                _context.next = 33;
+              if (!(data.value === -1)) {
+                _context2.next = 23;
                 break;
               }
 
-              emas = new _enedisMonthlyAnalysisData.default(client);
-              _context.next = 31;
-              return emas.getMaxPowerByDate(data.date.year, data.date.month);
+              return _context2.abrupt("continue", 27);
 
-            case 31:
-              maxPowerEntities = _context.sent;
+            case 23:
+              _context2.next = 25;
+              return buildDataRow(data, fluidType);
 
-              if (maxPowerEntities) {
-                maxLoad = maxPowerEntities.reduce(function (max, entity) {
-                  if (entity.load > max) {
-                    return entity.load;
-                  }
+            case 25:
+              dataRow = _context2.sent;
+              exportDataSheet.data.push(dataRow);
 
-                  return max;
-                }, 0);
-                dataRow[t('export.maxpower')] = maxLoad;
-              }
-
-            case 33:
-              exportDataFluid.data.push(dataRow);
-
-            case 34:
-              _context.next = 20;
+            case 27:
+              _context2.next = 19;
               break;
 
-            case 36:
-              _context.next = 41;
+            case 29:
+              _context2.next = 34;
               break;
 
-            case 38:
-              _context.prev = 38;
-              _context.t0 = _context["catch"](18);
+            case 31:
+              _context2.prev = 31;
+              _context2.t0 = _context2["catch"](17);
 
-              _iterator2.e(_context.t0);
+              _iterator2.e(_context2.t0);
 
-            case 41:
-              _context.prev = 41;
+            case 34:
+              _context2.prev = 34;
 
               _iterator2.f();
 
-              return _context.finish(41);
-
-            case 44:
-              console.log(exportDataFluid);
-              return _context.abrupt("return", exportDataFluid);
+              return _context2.finish(34);
 
-            case 46:
-              return _context.abrupt("return", null);
+            case 37:
+              return _context2.abrupt("return", exportDataSheet);
 
-            case 47:
+            case 38:
             case "end":
-              return _context.stop();
+              return _context2.stop();
           }
         }
-      }, _callee, null, [[18, 38, 41, 44]]);
+      }, _callee2, null, [[17, 31, 34, 37]]);
     }));
 
-    return function (_x) {
-      return _ref2.apply(this, arguments);
+    return function (_x3) {
+      return _ref3.apply(this, arguments);
     };
   }(), [client, t]);
   (0, _react.useEffect)(function () {
     var subscribed = true;
     var date = new Date();
 
-    function exportData() {
-      return _exportData.apply(this, arguments);
-    }
-
-    function _exportData() {
-      _exportData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+    var exportData = /*#__PURE__*/function () {
+      var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
         var exportDataSheets, _iterator3, _step3, fluidType, exportDataFluid;
 
-        return _regenerator.default.wrap(function _callee2$(_context2) {
+        return _regenerator.default.wrap(function _callee3$(_context3) {
           while (1) {
-            switch (_context2.prev = _context2.next) {
+            switch (_context3.prev = _context3.next) {
               case 0:
-                _context2.prev = 0;
+                _context3.prev = 0;
                 exportDataSheets = [];
                 _iterator3 = _createForOfIteratorHelper(selectedFluids);
-                _context2.prev = 3;
+                _context3.prev = 3;
 
                 _iterator3.s();
 
               case 5:
                 if ((_step3 = _iterator3.n()).done) {
-                  _context2.next = 13;
+                  _context3.next = 13;
                   break;
                 }
 
                 fluidType = _step3.value;
-                _context2.next = 9;
-                return getExportDataFluid(fluidType);
+                _context3.next = 9;
+                return getExportDataSheet(fluidType);
 
               case 9:
-                exportDataFluid = _context2.sent;
-                if (exportDataFluid) exportDataSheets.push(exportDataFluid);
+                exportDataFluid = _context3.sent;
+
+                if (exportDataFluid) {
+                  exportDataSheets.push(exportDataFluid);
+                }
 
               case 11:
-                _context2.next = 5;
+                _context3.next = 5;
                 break;
 
               case 13:
-                _context2.next = 18;
+                _context3.next = 18;
                 break;
 
               case 15:
-                _context2.prev = 15;
-                _context2.t0 = _context2["catch"](3);
+                _context3.prev = 15;
+                _context3.t0 = _context3["catch"](3);
 
-                _iterator3.e(_context2.t0);
+                _iterator3.e(_context3.t0);
 
               case 18:
-                _context2.prev = 18;
+                _context3.prev = 18;
 
                 _iterator3.f();
 
-                return _context2.finish(18);
+                return _context3.finish(18);
 
               case 21:
-                _context2.next = 23;
+                _context3.next = 23;
                 return new Promise(function (r) {
                   return setTimeout(r, 2000);
                 });
@@ -1427,23 +1456,26 @@ var ExportLoadingModal = function ExportLoadingModal(_ref) {
                   handleDone();
                 }
 
-                _context2.next = 29;
+                _context3.next = 29;
                 break;
 
               case 26:
-                _context2.prev = 26;
-                _context2.t1 = _context2["catch"](0);
-                handleDone(_context2.t1);
+                _context3.prev = 26;
+                _context3.t1 = _context3["catch"](0);
+                handleDone(_context3.t1);
 
               case 29:
               case "end":
-                return _context2.stop();
+                return _context3.stop();
             }
           }
-        }, _callee2, null, [[0, 26], [3, 15, 18, 21]]);
+        }, _callee3, null, [[0, 26], [3, 15, 18, 21]]);
       }));
-      return _exportData.apply(this, arguments);
-    }
+
+      return function exportData() {
+        return _ref4.apply(this, arguments);
+      };
+    }();
 
     if (subscribed) {
       exportData();
@@ -1452,7 +1484,7 @@ var ExportLoadingModal = function ExportLoadingModal(_ref) {
     return function () {
       subscribed = false;
     };
-  }, [client, getExportDataFluid, handleDone, selectedFluids, t]);
+  }, [client, getExportDataSheet, handleDone, open, selectedFluids]);
   return /*#__PURE__*/_react.default.createElement(_Dialog.default, {
     open: open,
     onClose: function onClose(_event, reason) {
@@ -1460,13 +1492,13 @@ var ExportLoadingModal = function ExportLoadingModal(_ref) {
         handleCloseClick();
       }
     },
-    "aria-labelledby": 'accessibility-title',
+    "aria-labelledby": "accessibility-title",
     classes: {
       root: 'modal-root',
       paper: 'modal-paper'
     }
   }, /*#__PURE__*/_react.default.createElement("div", {
-    id: 'accessibility-title'
+    id: "accessibility-title"
   }, t('export.modal_loading.accessibility_title')), /*#__PURE__*/_react.default.createElement("div", {
     className: "modal-loading-root"
   }, /*#__PURE__*/_react.default.createElement("div", {
@@ -1490,9 +1522,7 @@ var ExportLoadingModal = function ExportLoadingModal(_ref) {
     className: "text-16-normal text"
   }, t('export.modal_loading.text2')), /*#__PURE__*/_react.default.createElement(_core.Button, {
     "aria-label": t('export.modal_loading.button_cancel'),
-    onClick: function onClick() {
-      handleCloseClick();
-    },
+    onClick: handleCloseClick,
     classes: {
       root: 'btn-secondary-negative',
       label: 'text-16-bold'
diff --git a/app/ecolyo.c74f1bc2dfa5225541bc.js b/app/ecolyo.be6df1460f4a491f6fe6.js
similarity index 99%
rename from app/ecolyo.c74f1bc2dfa5225541bc.js
rename to app/ecolyo.be6df1460f4a491f6fe6.js
index 9381c833bc295ffb75e55d05064f6eb6292f597d..ffaa09f0f921477367c3dce7a13fa5726dc5dc32 100644
--- a/app/ecolyo.c74f1bc2dfa5225541bc.js
+++ b/app/ecolyo.be6df1460f4a491f6fe6.js
@@ -64,7 +64,7 @@
 /******/
 /******/ 	// script path function
 /******/ 	function jsonpScriptSrc(chunkId) {
-/******/ 		return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"c44aefc530d1de68ee3f","3":"28f520a27960ce78b6a0","4":"13df84244309c7fe1570","5":"2c5979fe74e28dddd188","6":"54d0e15353c0b4003a05","7":"1850b6ce28566211a509","8":"c7b053d03ca1a7f2eeea","9":"4facae32c2f3722bac49","10":"e8a00fc8bc16cb5a9dfd"}[chunkId] + ".js"
+/******/ 		return __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "/ecolyo." + {"1":"c44aefc530d1de68ee3f","3":"28f520a27960ce78b6a0","4":"626fb2981746527b7c6d","5":"2c5979fe74e28dddd188","6":"54d0e15353c0b4003a05","7":"1850b6ce28566211a509","8":"c7b053d03ca1a7f2eeea","9":"4facae32c2f3722bac49","10":"e8a00fc8bc16cb5a9dfd"}[chunkId] + ".js"
 /******/ 	}
 /******/
 /******/ 	// The require function
diff --git a/index.html b/index.html
index c36f092ee6db06eb421af1ac967a4031e77509e7..07fec1b65402a5633cc563318a319b794712df34 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.69beab954af56959f24c.js"></script><script src="app/ecolyo.c74f1bc2dfa5225541bc.js"></script></div></body></html>
\ No newline at end of file
+<!DOCTYPE html><html lang="{{.Locale}}"><head><meta charset="utf-8"><title>Ecolyo</title><link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16"><!-- PWA Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#297EF2"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"><!-- PWA Chrome --><link rel="icon" sizes="192x192" href="/android-chrome-192x192.png"><link rel="icon" sizes="512x512" href="/android-chrome-512x512.png"><!-- PWA iOS --><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="apple-touch-startup-image" href="/apple-touch-icon.png"><meta name="apple-mobile-web-app-title" content="Ecolyo"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><!-- PWA Colors --><meta name="theme-color" content="#343641"><meta name="background-color" content="#121212">{{.ThemeCSS}} {{.CozyBar}}<script src="//{{.Domain}}/assets/js/piwik.js"></script></head><body><div role="application" class="application" data-cozy="{{.CozyData}}"><script src="vendors/ecolyo.69beab954af56959f24c.js"></script><script src="app/ecolyo.be6df1460f4a491f6fe6.js"></script></div></body></html>
\ No newline at end of file