diff --git a/src/View/Geometry/Profile/Plot.py b/src/View/Geometry/Profile/Plot.py
index b6307e00abc798c895631889032f6b8d9b50f742..43d3c831a5945ae5c1b34cefd2f057f13d4cfa15 100644
--- a/src/View/Geometry/Profile/Plot.py
+++ b/src/View/Geometry/Profile/Plot.py
@@ -78,7 +78,7 @@ class Plot(PamhyrPlot):
             return
 
         modifiers = QApplication.keyboardModifiers()
-        if modifiers not in [Qt.ControlModifier, Qt.NoModifier]:
+        if modifiers not in [Qt.ControlModifier, Qt.NoModifier, Qt.ShiftModifier]:
             return
 
         points, hyd = self.highlight
@@ -89,6 +89,18 @@ class Plot(PamhyrPlot):
             rows = self._parent.index_selected_rows()
             self.highlight = (points+[point], hyd)
             self._select_in_table(rows+[ind])
+        elif modifiers == Qt.ShiftModifier:
+            rows = self._parent.index_selected_rows()
+            if len(rows)>0:
+                i1 = min(rows[0], rows[-1], ind)
+                i2 = max(rows[0], rows[-1], ind)
+                p = [[self.data.points[i].x,self.data.points[i].y] for i in range(i1, i2)]
+            else:
+                i1 = ind
+                i2 = ind
+                p = [point]
+            self.highlight = (p, hyd)
+            self._select_range_in_table(i1, i2)
         else:
             self.highlight = ([point], hyd)
             self._select_in_table([ind])
@@ -123,7 +135,7 @@ class Plot(PamhyrPlot):
         self.update()
         return
 
-    def select_points_from_indices(self, indexes):
+    def select_points_from_indices(self, indices):
         data = self.data
         _, hyd = self.highlight
 
@@ -131,7 +143,7 @@ class Plot(PamhyrPlot):
             map(
                 lambda e: e[1],
                 filter(
-                    lambda e: e[0] in indexes,
+                    lambda e: e[0] in indices,
                     enumerate(
                         zip(data.get_station(), data.z())
                     )
@@ -163,6 +175,22 @@ class Plot(PamhyrPlot):
                 self._table.scrollTo(self._table.model().index(ind[-1], 0))
             self._table.blockSignals(False)
 
+    def _select_range_in_table(self, ind1, ind2):
+        if self._table is not None:
+            self._table.blockSignals(True)
+            self._table.setFocus()
+            selection = self._table.selectionModel()
+            index = QItemSelection(self._table.model().index(ind1, 0),
+                                   self._table.model().index(ind2, 0))
+            selection.select(
+                index,
+                QItemSelectionModel.Rows |
+                QItemSelectionModel.ClearAndSelect |
+                QItemSelectionModel.Select
+            )
+            self._table.scrollTo(self._table.model().index(ind2, 0))
+            self._table.blockSignals(False)
+
     def _closer_point(self, event):
         points_ind = event.ind
         axes = self.canvas.axes