diff --git a/src/View/HydraulicStructures/Table.py b/src/View/HydraulicStructures/Table.py
index 1af539b8b53d69d0b065f03fb6955d4ee405bddb..58e086848c2f5d0fc62acfdb11ed0ec584b6653e 100644
--- a/src/View/HydraulicStructures/Table.py
+++ b/src/View/HydraulicStructures/Table.py
@@ -140,6 +140,7 @@ class TableModel(PamhyrTableModel):
 
         row = index.row()
         column = index.column()
+        na = _translate("Hydraulic structure", "Not associated")
 
         try:
             if self._headers[column] == "name":
@@ -149,12 +150,18 @@ class TableModel(PamhyrTableModel):
                     )
                 )
             elif self._headers[column] == "reach":
+                if value == na:
+                    value = None
+
                 self._undo.push(
                     SetReachCommand(
                         self._lst, row, self._data.edge(value)
                     )
                 )
             elif self._headers[column] == "kp":
+                if value == na:
+                    value = None
+
                 self._undo.push(
                     SetKpCommand(
                         self._lst, row, value
diff --git a/src/View/HydraulicStructures/Window.py b/src/View/HydraulicStructures/Window.py
index 9595f8fef2f045f228dc5255e2f9f00e1df575ac..94d6360b8536a894418932a0aca7f70b12aa4c25 100644
--- a/src/View/HydraulicStructures/Window.py
+++ b/src/View/HydraulicStructures/Window.py
@@ -264,36 +264,41 @@ class HydraulicStructuresWindow(PamhyrWindow):
 
     def update(self):
         self._set_checkbox_state()
+        self._update_clear_plot()
 
+    def _update_clear_plot(self):
         rows = self.index_selected_rows()
 
-        if len(rows) > 0 and len(self._hs_lst) > 0:
-            reach = self._hs_lst.get(rows[0]).input_reach
-        else:
-            reach = None
-            self.plot_kpc.clear()
-            self.plot_ac.clear()
+        if len(rows) == 0 or len(self._hs_lst) == 0:
+            self._update_clear_all()
             return
 
-        profile_kp = self._hs_lst.get(rows[0]).input_kp
-        if profile_kp is None or profile_kp == "Not associated":
-            profile = None
-            self.plot_ac.clear()
-            self.plot_kpc.clear_profile()
-        else:
-            profile = reach.reach.get_profiles_from_kp(float(profile_kp))
-
-        if reach is not None and reach != "Not associated":
+        reach = self._hs_lst.get(rows[0]).input_reach
+        if reach is not None:
             self.plot_kpc.set_reach(reach)
             self.plot_ac.set_reach(reach)
-        else:
-            self.plot_kpc.clear()
-            self.plot_ac.clear()
-            return
 
-        if profile is not None:
-            self.plot_kpc.set_profile(profile[0])
-            self.plot_ac.set_profile(profile[0])
+            profile_kp = self._hs_lst.get(rows[0]).input_kp
+            if profile_kp is not None:
+                profiles = reach.reach\
+                                .get_profiles_from_kp(
+                                    float(profile_kp)
+                                )
+
+                if profiles is not None:
+                    profile = profiles[0]
+
+                    self.plot_kpc.set_profile(profile)
+                    self.plot_ac.set_profile(profile)
+                else:
+                    self._update_clear_profile()
         else:
-            self.plot_ac.clear()
-            self.plot_kpc.clear_profile()
+            self._update_clear_all()
+
+    def _update_clear_all(self):
+        self.plot_kpc.clear()
+        self.plot_ac.clear()
+
+    def _update_clear_profile(self):
+        self.plot_ac.clear()
+        self.plot_kpc.clear_profile()