diff --git a/src/Model/Except.py b/src/Model/Except.py
index 4c71bbc29c577bf257e067830f15e9b805dc631f..8480e3ee953401902b797aff59cc2a23413db94b 100644
--- a/src/Model/Except.py
+++ b/src/Model/Except.py
@@ -124,25 +124,25 @@ class ClipboardFormatError(ExeceptionWithMessageBox):
             title = _translate("Exception", "Clipboard format error")
         )
 
-        self.mime = mime
-        self.header = header
-        self.data = data
+        self._mime = mime
+        self._header = header
+        self._data = data
 
-        if self.mime is not None:
-            self.msg = f"Impossible to decode data to mime code '{self.mime}'"
+        if self._mime is not None:
+            self.msg = f"Impossible to decode data to mime code '{self._mime}'"
         else:
-            if len(self.header) == 0:
+            if len(self._header) == 0:
                 msg = _translate("Exception", "without header")
             else:
                 msg = (
                     _translate("Exception", "with header") +
-                    f": {self.header}"
+                    f": {self._header}"
                 )
 
-                self.msg = (
-                    _translate("Exception", "Invalid clipboard data format:") +
-                    f" '{self.data}' {msg}"
-                )
+            self.msg = (
+                _translate("Exception", "Invalid clipboard data format:") +
+                f" '{self._data}' {msg}"
+            )
 
         self.alert()
 
diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py
index de4c843dbe5c3b13aaa6d96065bebbf019114df9..08cf2cf4c7b3f4716eb8f8101d2ae248bef32ffd 100644
--- a/src/Model/Geometry/ProfileXYZ.py
+++ b/src/Model/Geometry/ProfileXYZ.py
@@ -63,6 +63,28 @@ class ProfileXYZ(Profile):
 
         return profile
 
+    def point_from_data(self, header, data):
+        point = None
+        try:
+            if len(header) == 0:
+                point = PointXYZ(
+                    *data, status=self._status
+                )
+            else:
+                valid_header = {'name', 'x', 'y', 'z'}
+                d = {"status": self._status}
+                for i, v in enumerate(data):
+                    h = header[i].strip().lower().split(' ')[0]
+                    if h in valid_header:
+                        d[h] = v
+
+                point = PointXYZ(**d)
+        except Exception as e:
+            raise ClipboardFormatError(header=header, data=data)
+
+        return point
+
+
     def x(self):
         return [point.x for point in self._points]
 
diff --git a/src/Model/Geometry/Reach.py b/src/Model/Geometry/Reach.py
index 8a1745178deb60f42463f9530eb11eb92fcf4002..087b0a876aa2485eadfe6e335c646937e37168d4 100644
--- a/src/Model/Geometry/Reach.py
+++ b/src/Model/Geometry/Reach.py
@@ -82,7 +82,7 @@ class Reach:
         Returns:
             The new profile.
         """
-        profile = ProfileXYZ(reach=self)
+        profile = ProfileXYZ(reach=self, status=self._status)
 
         self._profiles.insert(index, profile)
         self._update_profile_numbers()
diff --git a/src/View/Geometry/Profile/Table.py b/src/View/Geometry/Profile/Table.py
index 01608630f4dfd4b264bb9a0c4befd26c2f6a54ea..d55ebfcd663a9ca5f4d3fde948a58610fd5d62dc 100644
--- a/src/View/Geometry/Profile/Table.py
+++ b/src/View/Geometry/Profile/Table.py
@@ -271,7 +271,7 @@ class TableEditableModel(QAbstractTableModel):
                 self._profile, row,
                 list(
                     map(
-                        lambda d: PointXYZ.from_data(header, d),
+                        lambda d: self._profile.point_from_data(header, d),
                         data
                     )
                 )
diff --git a/src/View/Geometry/Profile/Window.py b/src/View/Geometry/Profile/Window.py
index 0f68169934ad26088dd6543a2af28a6ed08c6bd8..815cc2ecb26802e345cd9329ed581fa412a86509 100644
--- a/src/View/Geometry/Profile/Window.py
+++ b/src/View/Geometry/Profile/Window.py
@@ -333,28 +333,7 @@ class ProfileWindow(QMainWindow, WindowToolKit):
         if list_deleted_names:
             self.msg_box_check_duplication_names(list_deleted_names)
 
-    def closeEvent(self, event):
-        print("TODO: Close")
-        # if self.status_change_tableview:
-        #     reply = QtWidgets.QMessageBox.question(
-        #         self,
-        #         _translate("MainWindowProfile", "Terminer l'édition du profil "),
-        #         _translate("MainWindowProfile", "Voulez-vous vraiment quitter "
-        #                    "?\n Oui : Valider et quitter\n"
-        #                    "Non : Annuler"),
-        #         QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No
-        #     )
-
-        #     if reply == QtWidgets.QMessageBox.Yes:
-        #         self.validate_changes()
-        #         self.plot()
-        #         event.accept()
-        #     else:
-        #         event.ignore()
-        #         self.ui.btn_check.setEnabled(True)
-        #         self.ui.btn_go_back.setEnabled(True)
-
-    def msg_box_check_duplication_names(self, list_deleted_names):  # name_point,list_deleted_names,counter_list):
+    def msg_box_check_duplication_names(self, list_deleted_names):
         if len(list_deleted_names) == 1:
             text = _translate("MainWindowProfile",
                               "Le nom ''{}'' est dupliqué."