diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 36487801ad01c810f07e939f1d828d740402e016..dc4e8c9e081f37d0cb249c6946df8b493e79050d 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -4957,9 +4957,10 @@ function dol_getmypid()
  *                          		    If param $numeric is 0, can contains several keywords separated with a space, like "keyword1 keyword2" = We want record field like keyword1 and field like keyword2
  *                             			If param $numeric is 1, can contains an operator <>= like "<10" or ">=100.5 < 1000"
  * @param	integer			$numeric	0=value is list of keywords, 1=value is a numeric test
+ * @param	integer			$nofinaland	Do now output the final 'AND'
  * @return 	string 			$res 		The statement to append to the SQL query
  */
-function natural_search($fields, $value, $numeric=0)
+function natural_search($fields, $value, $numeric=0, $nofinaland)
 {
     global $db,$langs;
 
@@ -5014,7 +5015,7 @@ function natural_search($fields, $value, $numeric=0)
         if ($newres) $res = $res . ($res ? ' AND ' : '') . ($i2 > 1 ? '(' : '') .$newres . ($i2 > 1 ? ')' : '');
         $j++;
     }
-    $res = " AND (" . $res . ")";
+    $res = ($nofinaland?"":" AND ")."(" . $res . ")";
     //print 'xx'.$res.'yy';
     return $res;
 }
diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php
index 3fb2586625e6914ebbd3bdb64f87d0129b4ff72c..81625730950f4af06e95f0cf6e7058b8fdcdd4ac 100644
--- a/htdocs/projet/class/task.class.php
+++ b/htdocs/projet/class/task.class.php
@@ -561,9 +561,10 @@ class Task extends CommonObject
      * @param	int		$mode				0=Return list of tasks and their projects, 1=Return projects and tasks if exists
      * @param	string	$filteronprojref	Filter on project ref
      * @param	string	$filteronprojstatus	Filter on project status
+     * @param	string	$morewherefilter	Add more filter into where SQL request
      * @return 	array						Array of tasks
      */
-    function getTasksArray($usert=0, $userp=0, $projectid=0, $socid=0, $mode=0, $filteronprojref='', $filteronprojstatus=-1)
+    function getTasksArray($usert=0, $userp=0, $projectid=0, $socid=0, $mode=0, $filteronprojref='', $filteronprojstatus=-1, $morewherefilter='')
     {
         global $conf;
 
@@ -573,8 +574,8 @@ class Task extends CommonObject
 
         // List of tasks (does not care about permissions. Filtering will be done later)
         $sql = "SELECT p.rowid as projectid, p.ref, p.title as plabel, p.public, p.fk_statut,";
-        $sql.= " t.rowid as taskid, t.label, t.description, t.fk_task_parent, t.duration_effective, t.progress,";
-        $sql.= " t.dateo as date_start, t.datee as date_end, t.planned_workload, t.ref as ref_task,t.rang";
+        $sql.= " t.rowid as taskid, t.ref as taskref, t.label, t.description, t.fk_task_parent, t.duration_effective, t.progress,";
+        $sql.= " t.dateo as date_start, t.datee as date_end, t.planned_workload, t.rang";
         if ($mode == 0)
         {
             $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
@@ -594,6 +595,7 @@ class Task extends CommonObject
         }
         if ($filteronprojref) $sql.= " AND p.ref LIKE '%".$filteronprojref."%'";
         if ($filteronprojstatus > -1) $sql.= " AND p.fk_statut = ".$filteronprojstatus;
+        if ($morewherefilter) $sql.=" AND (".$morewherefilter.")";
         $sql.= " ORDER BY p.ref, t.rang, t.dateo";
 
         //print $sql;exit;
@@ -629,7 +631,7 @@ class Task extends CommonObject
                 {
 					$tasks[$i] = new Task($this->db);
                     $tasks[$i]->id				= $obj->taskid;
-					$tasks[$i]->ref				= $obj->ref_task;
+					$tasks[$i]->ref				= $obj->taskref;
                     $tasks[$i]->fk_project		= $obj->projectid;
                     $tasks[$i]->projectref		= $obj->ref;
                     $tasks[$i]->projectlabel	= $obj->plabel;
diff --git a/htdocs/projet/tasks/index.php b/htdocs/projet/tasks/index.php
index eec483907b01803ac54bdd7bd790166791f83310..c9e30d30f7d989e3f19fd0fcbf52a7b02cf76d1f 100644
--- a/htdocs/projet/tasks/index.php
+++ b/htdocs/projet/tasks/index.php
@@ -36,6 +36,8 @@ $id=GETPOST('id','int');
 $search_project=GETPOST('search_project');
 if (! isset($_GET['search_status']) && ! isset($_POST['search_status'])) $search_status=1;
 else $search_status=GETPOST('search_status');
+$search_task_ref=GETPOST('search_task_ref');
+$search_task_label=GETPOST('search_task_label');
 
 
 // Security check
@@ -56,9 +58,19 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
 {
 	$search_project="";
 	$search_status="";
+	$search_task_ref="";
+	$search_task_label="";
 }
 if (empty($search_status)) $search_status=1;
 
+
+/*
+ * Actions
+ */
+
+// None
+
+
 /*
  * View
  */
@@ -93,7 +105,10 @@ $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,$mine,1,$so
 
 // Get list of tasks in tasksarray and taskarrayfiltered
 // We need all tasks (even not limited to a user because a task assigned to a user can have a parent that is not assigned to him and we need such parents).
-$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status);
+$morewherefilter='';
+if ($search_task_ref)   $morewherefilter.=natural_search('t.ref', $search_task_ref, 0, 1);
+if ($search_task_label) $morewherefilter.=natural_search('t.label', $search_task_label, 0, 1);
+$tasksarray=$taskstatic->getTasksArray(0, 0, $projectstatic->id, $socid, 0, $search_project, $search_status, $morewherefilter);
 // We load also tasks limited to a particular user
 $tasksrole=($mine ? $taskstatic->getUserRolesForProjectsOrTasks(0,$user,$projectstatic->id,0) : '');
 
@@ -126,7 +141,13 @@ $listofstatus=array(-1=>'&nbsp;');
 foreach($projectstatic->statuts_short as $key => $val) $listofstatus[$key]=$langs->trans($val);
 print $form->selectarray('search_status', $listofstatus, $search_status);
 print '</td>';
-print '<td class="liste_titre" colspan="7">';
+print '<td class="liste_titre">';
+print '<input type="text" class="flat" name="search_task_ref" value="'.$search_task_ref.'" size="4">';
+print '</td>';
+print '<td class="liste_titre">';
+print '<input type="text" class="flat" name="search_task_label" value="'.$search_task_label.'" size="8">';
+print '</td>';
+print '<td class="liste_titre" colspan="5">';
 print '&nbsp;';
 print '<td class="liste_titre nowrap" align="right">';
 print '<input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';