diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index 2691855c51d1dadbb4a3d53f77da866d5401fe88..e763e9562d9b803ad6df9bddef66fb546a815dba 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -14,6 +14,7 @@ from PyQt5.QtCore import (
 from PyQt5.QtWidgets import (
     QMainWindow, QApplication, QAction,
     QFileDialog, QShortcut, QMenu, QToolBar,
+    QMessageBox,
 )
 from PyQt5.uic import loadUi
 
@@ -77,6 +78,8 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
     def __init__(self, conf=None):
         super(ApplicationWindow, self).__init__()
 
+        self._close_question = False
+
         # App Configuration
         self.conf = conf
 
@@ -175,6 +178,24 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
             self.retranslateUi()
         super(ApplicationWindow, self).changeEvent(event)
 
+    def close(self):
+        if self.model is not None and not self.model.is_saved:
+            self._close_question = True
+            if self.dialog_close():
+                super(ApplicationWindow, self).close()
+            else:
+                self._close_question = False
+        else:
+            super(ApplicationWindow, self).close()
+
+    def closeEvent(self, event):
+        if not self._close_question:
+            if self.model is not None and not self.model.is_saved:
+                if self.dialog_close(cancel = False):
+                    super(ApplicationWindow, self).closeEvent(event)
+        else:
+            super(ApplicationWindow, self).closeEvent(event)
+
     def default_style(self):
         """Set default window style
 
@@ -262,6 +283,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
             else:
                 self.model.filename = file_name + ".pamhyr"
 
+        print("[INFO] Save...")
         self.model.save()
 
     def save_as_study(self):
@@ -285,15 +307,41 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
 
         self.model.save()
 
-    #############
-    # SUBWINDOW #
-    #############
+    ##################
+    # MSG AND DIALOG #
+    ##################
 
     def msg_select_reach(self):
         self.message_box("Please select a reach",
                          "Geometry edition need a reach selected "
                          "into river network window to work on it")
 
+    def dialog_close(self, cancel = True):
+        dlg = QMessageBox(self)
+
+        dlg.setWindowTitle("Close PAMHYR without saving study")
+        dlg.setText("Do you want to save current study before PAMHYR close ?")
+        opt = QMessageBox.Save | QMessageBox.Ignore
+        if cancel:
+            opt |= QMessageBox.Cancel
+
+        dlg.setStandardButtons(opt)
+        dlg.setIcon(QMessageBox.Warning)
+
+        res = dlg.exec()
+
+        if res == QMessageBox.Save:
+            self.save_study()
+            return True
+        elif res == QMessageBox.Ignore:
+            return True
+        elif res == QMessageBox.Cancel:
+            return False
+
+    #############
+    # SUBWINDOW #
+    #############
+
     def open_configure(self):
         """Open configure window