diff --git a/htdocs/comm/action/fiche.php b/htdocs/comm/action/fiche.php
index 2de5834f996e86376fda1e3248306d90aa37f835..e0cc325e3bcaa18f3d89cae30e6acddb4ef120ac 100644
--- a/htdocs/comm/action/fiche.php
+++ b/htdocs/comm/action/fiche.php
@@ -464,6 +464,16 @@ if (GETPOST('action') == 'create')
                     jQuery("#fullday").change(function() {
                         setdatefields();
                     });
+                    jQuery("#selectcomplete").change(function() {
+                        if (jQuery("#selectcomplete").val() == 100)
+                        {
+                            if (jQuery("#doneby").val() <= 0) jQuery("#doneby").val(\''.$user->id.'\');
+                        }
+                        if (jQuery("#selectcomplete").val() == 0)
+                        {
+                            jQuery("#doneby").val(-1);
+                        }
+                   });
                })';
         print '</script>'."\n";
     }
@@ -521,8 +531,8 @@ if (GETPOST('action') == 'create')
 	// Status
 	print '<tr><td width="10%">'.$langs->trans("Status").' / '.$langs->trans("Percentage").'</td>';
 	print '<td>';
-	$percent=0;
-	if (GETPOST('percentage'))
+	$percent=-1;
+	if (isset($_GET['percentage']) || isset($_POST['percentage']))
 	{
 		$percent=GETPOST('percentage');
 	}
@@ -531,7 +541,7 @@ if (GETPOST('action') == 'create')
 		if (GETPOST("afaire") == 1) $percent=0;
 		if (GETPOST("afaire") == 2) $percent=100;
 	}
-	print $htmlactions->form_select_status_action('formaction',$percent,1);
+	print $htmlactions->form_select_status_action('formaction',$percent,1,'complete');
 	print '</td></tr>';
 
     // Location
@@ -550,7 +560,7 @@ if (GETPOST('action') == 'create')
 
 	// Realised by
 	print '<tr><td nowrap>'.$langs->trans("ActionDoneBy").'</td><td>';
-	$html->select_users(GETPOST("doneby")?GETPOST("doneby"):$actioncomm->userdone,'doneby',1);
+	$html->select_users(GETPOST("doneby")?GETPOST("doneby"):($percent==100?$actioncomm->userdone:0),'doneby',1);
 	print '</td></tr>';
 
 	print '</table>';
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 388d3602d7c8ab7ba54b3fd607f0cb415ca93247..e5b2e71cb613916561c2766b76373982051088da 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -779,14 +779,14 @@ class Form
     }
 
     /**
-     *	\brief      Return select list of users
-     *  \param      selected        Id user preselected
-     *  \param      htmlname        Field name in form
-     *  \param      show_empty      0=liste sans valeur nulle, 1=ajoute valeur inconnue
-     *  \param      exclude         Array list of users id to exclude
-     * 	\param		disabled		If select list must be disabled
-     *  \param      include         Array list of users id to include
-     * 	\param		enableonly		Array list of users id to be enabled. All other must be disabled
+     *	Return select list of users
+     *  @param      selected        Id user preselected
+     *  @param      htmlname        Field name in form
+     *  @param      show_empty      0=liste sans valeur nulle, 1=ajoute valeur inconnue
+     *  @param      exclude         Array list of users id to exclude
+     * 	@param		disabled		If select list must be disabled
+     *  @param      include         Array list of users id to include
+     * 	@param		enableonly		Array list of users id to be enabled. All other must be disabled
      */
     function select_users($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='')
     {
@@ -794,21 +794,21 @@ class Form
     }
 
     /**
-     *	\brief      Return select list of users
-     *  \param      selected        User id or user object of user preselected. If -1, we use id of current user.
-     *  \param      htmlname        Field name in form
-     *  \param      show_empty      0=liste sans valeur nulle, 1=ajoute valeur inconnue
-     *  \param      exclude         Array list of users id to exclude
-     * 	\param		disabled		If select list must be disabled
-     *  \param      include         Array list of users id to include
-     * 	\param		enableonly		Array list of users id to be enabled. All other must be disabled
+     *	Return select list of users
+     *  @param      selected        User id or user object of user preselected. If -1, we use id of current user.
+     *  @param      htmlname        Field name in form
+     *  @param      show_empty      0=liste sans valeur nulle, 1=ajoute valeur inconnue
+     *  @param      exclude         Array list of users id to exclude
+     * 	@param		disabled		If select list must be disabled
+     *  @param      include         Array list of users id to include
+     * 	@param		enableonly		Array list of users id to be enabled. All other must be disabled
      */
     function select_dolusers($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='')
     {
         global $conf,$user,$langs;
 
         // If no preselected user defined, we take current user
-        if (empty($selected) && empty($conf->global->SOCIETE_DISABLE_DEFAULT_SALESREPRESENTATIVE)) $selected=$user->id;
+        if ($selected < -1 && empty($conf->global->SOCIETE_DISABLE_DEFAULT_SALESREPRESENTATIVE)) $selected=$user->id;
 
         // Permettre l'exclusion d'utilisateurs
         if (is_array($exclude))	$excludeUsers = implode("','",$exclude);
@@ -829,7 +829,7 @@ class Form
         $resql=$this->db->query($sql);
         if ($resql)
         {
-            $out.= '<select class="flat" name="'.$htmlname.'"'.($disabled?' disabled="true"':'').'>';
+            $out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled="true"':'').'>';
             if ($show_empty) $out.= '<option value="-1"'.($id==-1?' selected="selected"':'').'>&nbsp;</option>'."\n";
             $num = $this->db->num_rows($resql);
             $i = 0;
diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php
index b3b1cc8ec477d280c93854a7b90020cb395a411e..92afbe8f1106fc4acb2542d7a09a087ba48aee6c 100644
--- a/htdocs/core/class/html.formactions.class.php
+++ b/htdocs/core/class/html.formactions.class.php
@@ -47,42 +47,47 @@ class FormActions
 
 
     /**
-     *      \brief      Show list of action status
-     * 		\param		formname	Name of form where select in included
-     * 		\param		selected	Preselected value
-     * 		\param		canedit		1=can edit, 0=read only
+     *      Show list of action status
+     * 		@param		formname	Name of form where select in included
+     * 		@param		selected	Preselected value
+     * 		@param		canedit		1=can edit, 0=read only
+     *      @param      htmlname    Name of html prefix for html fields (selectX and valX)
      */
-    function form_select_status_action($formname,$selected,$canedit=1)
+    function form_select_status_action($formname,$selected,$canedit=1,$htmlname='complete')
     {
         global $langs,$conf;
 
-        $listofstatus=array('0'=>$langs->trans("ActionRunningNotStarted"),'50'=>$langs->trans("ActionRunningShort"),'100'=>$langs->trans("ActionDoneShort"));
+        $listofstatus=array('-1'=>$langs->trans("ActionNotApplicable"),
+                            '0'=>$langs->trans("ActionRunningNotStarted"),
+                            '50'=>$langs->trans("ActionRunningShort"),
+                            '100'=>$langs->trans("ActionDoneShort"));
 
         if ($conf->use_javascript_ajax)
         {
             print "\n";
             print '<script type="text/javascript">'."\n";
             print 'function select_status(mypercentage) {'."\n";
-            print 'document.'.$formname.'.percentageshown.value=mypercentage;'."\n";
+            print 'document.'.$formname.'.percentageshown.value=(mypercentage>=0?mypercentage:\'\');'."\n";
             print 'document.'.$formname.'.percentage.value=mypercentage;'."\n";
-            print 'if (mypercentage == 0) { document.'.$formname.'.percentageshown.disabled=true; }'."\n";
+            print 'if (mypercentage == -1) { document.'.$formname.'.percentageshown.disabled=true; }'."\n";
+            print 'else if (mypercentage == 0) { document.'.$formname.'.percentageshown.disabled=true; }'."\n";
             print 'else if (mypercentage == 100) { document.'.$formname.'.percentageshown.disabled=true; }'."\n";
             print 'else { document.'.$formname.'.percentageshown.disabled=false; }'."\n";
             print '}'."\n";
             print '</script>'."\n";
-            print '<select '.($canedit?'':'disabled="true" ').'name="status" class="flat" onChange="select_status(document.'.$formname.'.status.value)">';
+            print '<select '.($canedit?'':'disabled="true" ').'name="status" id="select'.$htmlname.'" class="flat" onChange="select_status(document.'.$formname.'.status.value)">';
             foreach($listofstatus as $key => $val)
             {
                 print '<option value="'.$key.'"'.($selected == $key?' selected="selected"':'').'>'.$val.'</option>';
             }
             print '</select>';
             if ($selected == 0 || $selected == 100) $canedit=0;
-            print ' <input type="text" name="percentageshown" class="flat" value="'.$selected.'" size="2"'.($canedit?'':' disabled="true"').' onChange="select_status(document.'.$formname.'.percentageshown.value)">%';
+            print ' <input type="text" id="val'.$htmlname.'" name="percentageshown" class="flat" value="'.($selected>=0?$selected:'').'" size="2"'.($canedit&&($selected>=0)?'':' disabled="true"').' onChange="select_status(document.'.$formname.'.percentageshown.value)">%';
             print ' <input type="hidden" name="percentage" value="'.$selected.'">';
         }
         else
         {
-            print ' <input type="text" name="percentage" class="flat" value="'.$selected.'" size="2"'.($canedit?'':' disabled="true"').'>%';
+            print ' <input type="text" id="val'.$htmlname.'" name="percentage" class="flat" value="'.($selected>=0?$selected:'').'" size="2"'.($canedit?'':' disabled="true"').'>%';
         }
     }
 
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index 9ed9f71fc6f6ad899545c6ba4fce3d5a501351ad..75eb32b7535ec04d409c831b70946125e3a533c3 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -312,7 +312,8 @@ ActionsDone=Actions done
 ActionsToDoShort=To do
 ActionsRunningshort=Started
 ActionsDoneShort=Done
-ActionRunningNotStarted=Not started
+ActionNotApplicable=Not applicable
+ActionRunningNotStarted=To start
 ActionRunningShort=Started
 ActionDoneShort=Finished
 CompanyFoundation=Company/Foundation
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index 457ea750c00835609fc1e4df33723e5c5b63d193..3e6f0e30e0cb673ba83143202932edb47c09b11a 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -311,7 +311,8 @@ ActionsToDo=Événements à faire
 ActionsDone=Événements effectués
 ActionsToDoShort=À faire
 ActionsDoneShort=Effectuées
-ActionRunningNotStarted=Non commencé
+ActionNotApplicable=Non applicable
+ActionRunningNotStarted=A commencé
 ActionRunningShort=En cours
 ActionDoneShort=Terminé
 CompanyFoundation=Société ou institution