diff --git a/utils/gui/pyqt/error_popup/ErrorPopup.py b/utils/gui/pyqt/error_popup/ErrorPopup.py
new file mode 100644
index 0000000000000000000000000000000000000000..50e52a39e9a397a0aea26e517e75518d8330b445
--- /dev/null
+++ b/utils/gui/pyqt/error_popup/ErrorPopup.py
@@ -0,0 +1,32 @@
+from PyQt5 import QtCore, QtGui, QtWidgets
+from PyQt5.QtWidgets import QMessageBox
+
+class ErrorPopup(object):
+
+    def __init__(self,error_text,details = None,button_label = None,button_callback=None):
+        self.error_text = error_text
+        self.button_label = button_label
+        self.button_callback = button_callback
+        self.details = details
+
+
+    def show_popup(self):
+        msg = QMessageBox()
+        msg.setWindowTitle("Erreur")
+        msg.setText("Erreur: " + self.error_text)
+        msg.setIcon(QMessageBox.Critical)
+
+        if self.button_label is not None and self.button_callback is not None:
+            msg.setStandardButtons(QMessageBox.Cancel|QMessageBox.Retry)
+            msg.setDefaultButton(QMessageBox.Cancel)
+            msg.button(QMessageBox.Cancel).clicked.connect(msg.close)
+            msg.button(QMessageBox.Retry).setText(self.button_label)
+            msg.button(QMessageBox.Retry).clicked.connect(self.button_callback)
+        else:
+            msg.setStandardButtons(QMessageBox.Ok)
+            msg.setDefaultButton(QMessageBox.Ok)
+            msg.button(QMessageBox.Ok).clicked.connect(msg.close)
+        msg.setInformativeText(self.error_text)
+        if self.details is not None:
+            msg.setDetailedText(self.details)
+        msg.exec_()
\ No newline at end of file
diff --git a/utils/gui/pyqt/main_window/MainWindow.py b/utils/gui/pyqt/main_window/MainWindow.py
index d32585de1cbeab74b12ae1faea8c22b1ee4072af..fa2e9dbc4802a4085d714ad3e055868b49ef601c 100644
--- a/utils/gui/pyqt/main_window/MainWindow.py
+++ b/utils/gui/pyqt/main_window/MainWindow.py
@@ -11,6 +11,7 @@ from utils.gui.pyqt.main_window.UI_MainWindow import Ui_MainWindow
 from utils.gui.pyqt.main_window.Workers.DiscreteDataWorker import DiscreteDataProcessWorker
 from utils.gui.pyqt.main_window.Workers.PreProcessWorker import PreProcessWorker
 from utils.gui.pyqt.main_window.Workers.RawDataWorker import RawDataProcessWorker
+from utils.gui.pyqt.error_popup.ErrorPopup import ErrorPopup
 class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
     """
     Main window of the application
@@ -107,15 +108,19 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
         """
         Check if the input file is valid
         """
-        if os.path.isfile(self.input_file_path.toPlainText()):
-            return True
+        if not os.path.isfile(self.input_file_path.toPlainText()):
+            ErrorPopup("Fichier d'entrée invalide",button_label="Choisir un fichier d'entrée",button_callback=self.select_file).show_popup()
+            return False
+        return True
 
     def check_output_folder(self):
         """
         Check if the output folder is valid
         """
-        if os.path.isdir(self.output_folder_path.toPlainText()):
-            return True
+        if not os.path.isdir(self.output_folder_path.toPlainText()):
+            ErrorPopup("Dossier de sortie invalide",button_label="Choisir un dossier de sortie",button_callback=self.select_folder).show_popup()
+            return False
+        return True
 
 ###############################################################################
 #                                                                             #
@@ -130,10 +135,8 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
         Start the analyse
         """
         if not self.check_input_file():
-            self.input_file_path.setPlainText("Invalid file path")
             return
         if not self.check_output_folder():
-            self.output_folder_path.setPlainText("Invalid folder path")
             return
         
         settings = SettingManager.get_instance()