diff --git a/src/View/Geometry/Window.py b/src/View/Geometry/Window.py
index 7b6454dbf771e57f6ee9d86db28091a505a3dcae..10a5e6b5316b45f209d970e4148f2568042da0de 100644
--- a/src/View/Geometry/Window.py
+++ b/src/View/Geometry/Window.py
@@ -17,9 +17,10 @@
 # -*- coding: utf-8 -*-
 
 import os
-import pathlib
 import sys
 import time
+import pathlib
+import logging
 
 from copy import deepcopy
 from tools import timer, trace
@@ -54,6 +55,8 @@ from View.Geometry.Profile.Window import ProfileWindow
 
 _translate = QCoreApplication.translate
 
+logger = logging.getLogger()
+
 
 class GeometryWindow(PamhyrWindow):
     _pamhyr_ui = "GeometryReach"
@@ -480,13 +483,25 @@ class GeometryWindow(PamhyrWindow):
     def _paste(self):
         header, data = self.parseClipboardTable()
 
-        if len(data) == 0:
+        if len(data) + len(header) == 0:
             return
 
         # if len(header) != 0:
         #     header.append("reach")
         #     header.append("status")
 
+        # HACK: The CVS module detect the first line to csv header in
+        # some particular case... To avoid this we append to data list
+        # the "headers". /!\ This hack must failed if a real header
+        # exists (a better solution is welcome).
+        logger.debug(
+            "Geometry: Paste: " +
+            f"header = {header}, " +
+            f"data = {data}"
+        )
+        if len(header) != 0:
+            data = [header] + data
+
         for row in data:
             row.append(self._reach)
             row.append(self._study.river._status)