diff --git a/product/ERP5Form/SelectionTool.py b/product/ERP5Form/SelectionTool.py
index 1f2366e596223a4e55065eb543ba0f824873325d..37994b5d4c2b9fdcbd71346ca3a10d278875eba7 100644
--- a/product/ERP5Form/SelectionTool.py
+++ b/product/ERP5Form/SelectionTool.py
@@ -677,10 +677,13 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
         lines = int(params.get('list_lines', 0))
         form = REQUEST.form
         if form.has_key('page_start'):
-          list_start = (int(form.pop('page_start', 0)) - 1) * lines
+          try:
+            list_start = (int(form.pop('page_start', 0)) - 1) * lines
+          except ValueError:
+            list_start = 0
         else:
           list_start = int(form.pop('list_start', 0))
-        params['list_start'] = list_start + lines
+        params['list_start'] = max(list_start + lines, 0)
         selection.edit(params=params)
       self.uncheckAll(list_selection_name, listbox_uid)
       return self.checkAll(list_selection_name, uids, REQUEST=REQUEST)
@@ -697,7 +700,10 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
         lines = int(params.get('list_lines', 0))
         form = REQUEST.form
         if form.has_key('page_start'):
-          list_start = (int(form.pop('page_start', 0)) - 1) * lines
+          try:
+            list_start = (int(form.pop('page_start', 0)) - 1) * lines
+          except ValueError:
+            list_start = 0
         else:
           list_start = int(form.pop('list_start', 0))
         params['list_start'] = max(list_start - lines, 0)
@@ -717,10 +723,13 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
         lines = int(params.get('list_lines', 0))
         form = REQUEST.form
         if form.has_key('page_start'):
-          list_start = (int(form.pop('page_start', 0)) - 1) * lines
+          try:
+            list_start = (int(form.pop('page_start', 0)) - 1) * lines
+          except ValueError:
+            list_start = 0
         else:
           list_start = int(form.pop('list_start', 0))
-        params['list_start'] = list_start
+        params['list_start'] = max(list_start, 0)
         selection.edit(params=params)
         self.uncheckAll(list_selection_name, listbox_uid)
       return self.checkAll(list_selection_name, uids, REQUEST=REQUEST, query_string=query_string)