diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php
index b4bef1ecc5fc3850adbfb18e5b2fa986356defec..df983adc2c493df7f36f09c021dbaaea0024524f 100644
--- a/htdocs/imports/import.php
+++ b/htdocs/imports/import.php
@@ -28,6 +28,7 @@ require_once(DOL_DOCUMENT_ROOT."/core/class/html.formother.class.php");
 require_once(DOL_DOCUMENT_ROOT."/imports/class/import.class.php");
 require_once(DOL_DOCUMENT_ROOT.'/includes/modules/import/modules_import.php');
 require_once(DOL_DOCUMENT_ROOT."/lib/files.lib.php");
+require_once(DOL_DOCUMENT_ROOT."/lib/import.lib.php");
 
 $langs->load("exports");
 $langs->load("errors");
@@ -101,6 +102,7 @@ foreach($fieldsarray as $elem)
 /*
  * Actions
  */
+
 /*
 if ($action=='downfield' || $action=='upfield')
 {
@@ -309,20 +311,9 @@ if ($step == 1 || ! $datatoimport)
 
 	llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:Módulo_Importaciones');
 
-	$h = 0;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=1'.$param;
-	$head[$h][1] = $langs->trans("Step")." 1";
-	$hselected=$h;
-	$h++;
-
-	/*
-	 $head[$h][0] = '';
-	 $head[$h][1] = $langs->trans("Step")." 2";
-	 $h++;
-	 */
+    $head = import_prepare_head($param, 1);
 
-	dol_fiche_head($head, $hselected, $langs->trans("NewImport"));
+	dol_fiche_head($head, 'step1', $langs->trans("NewImport"));
 
 
 	print '<table class="notopnoleftnoright" width="100%">';
@@ -369,7 +360,7 @@ if ($step == 1 || ! $datatoimport)
 
 	print '</table>';
 
-	print '</div>';
+    dol_fiche_end();
 
 	if ($mesg) print $mesg;
 
@@ -384,18 +375,9 @@ if ($step == 2 && $datatoimport)
 
 	llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:M&oacute;dulo_Importaciones');
 
-	$h = 0;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=1';
-	$head[$h][1] = $langs->trans("Step")." 1";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=2'.$param;
-	$head[$h][1] = $langs->trans("Step")." 2";
-	$hselected=$h;
-	$h++;
+    $head = import_prepare_head($param,2);
 
-	dol_fiche_head($head, $hselected, $langs->trans("NewImport"));
+	dol_fiche_head($head, 'step2', $langs->trans("NewImport"));
 
 
 	print '<table width="100%" class="border">';
@@ -450,7 +432,7 @@ if ($step == 2 && $datatoimport)
 
 	print '</table></form>';
 
-	print '</div>';
+    dol_fiche_end();
 
 	if ($mesg) print $mesg;
 }
@@ -466,25 +448,9 @@ if ($step == 3 && $datatoimport)
 
 	llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:M&oacute;dulo_Importaciones');
 
+    $head = import_prepare_head($param,3);
 
-	$h = 0;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=1'.$param;
-	$head[$h][1] = $langs->trans("Step")." 1";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=2'.$param;
-	$head[$h][1] = $langs->trans("Step")." 2";
-	$hselected=$h;
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=3'.$param;
-	$head[$h][1] = $langs->trans("Step")." 3";
-	$hselected=$h;
-	$h++;
-
-
-	dol_fiche_head($head, $hselected, $langs->trans("NewImport"));
+	dol_fiche_head($head, 'step3', $langs->trans("NewImport"));
 
 
 	print '<table width="100%" class="border">';
@@ -595,7 +561,7 @@ if ($step == 3 && $datatoimport)
 	print '</table></form>';
 
 
-	print '</div>';
+    dol_fiche_end();
 
 	if ($mesg) print $mesg;
 }
@@ -684,27 +650,9 @@ if ($step == 4 && $datatoimport)
 
 	llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:M&oacute;dulo_Importaciones');
 
-	$h = 0;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=1'.$param;
-	$head[$h][1] = $langs->trans("Step")." 1";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=2'.$param;
-	$head[$h][1] = $langs->trans("Step")." 2";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=3'.$param;
-	$head[$h][1] = $langs->trans("Step")." 3";
-	$hselected=$h;
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=4'.$param;
-	$head[$h][1] = $langs->trans("Step")." 4";
-	$hselected=$h;
-	$h++;
+    $head = import_prepare_head($param,4);
 
-	dol_fiche_head($head, $hselected, $langs->trans("NewImport"));
+	dol_fiche_head($head, 'step4', $langs->trans("NewImport"));
 
 	print '<table width="100%" class="border">';
 
@@ -793,7 +741,7 @@ if ($step == 4 && $datatoimport)
 	foreach ($array_match_file_to_database as $key => $val)
 	{
 		$var=!$var;
-		show_elem($fieldssource,$lefti,$key,$val,$var);		// key is field number in source file
+		show_elem($fieldssource,$key,$val,$var);		// key is field number in source file
 		//print '> '.$lefti.'-'.$key.'-'.$val;
 		$listofkeys[$key]=1;
 		$fieldsplaced[$key]=1;
@@ -811,7 +759,7 @@ if ($step == 4 && $datatoimport)
 	{
 		$var=!$var;
 		$newkey=getnewkey($fieldssource,$listofkeys);
-		show_elem($fieldssource,$lefti,$newkey,'',$var);	// key start after field number in source file
+		show_elem($fieldssource,$newkey,'',$var);	// key start after field number in source file
 		//print '> '.$lefti.'-'.$newkey;
 		$listofkeys[$key]=1;
 		$lefti++;
@@ -915,7 +863,7 @@ if ($step == 4 && $datatoimport)
 		{
 			//$var=!$var;
 			$nbofnotimportedfields++;
-			show_elem($fieldssource,$lefti,$key,'',$var,'nostyle');
+			show_elem($fieldssource,$key,'',$var,'nostyle');
 			//print '> '.$lefti.'-'.$key;
 			$listofkeys[$key]=1;
 			$lefti++;
@@ -924,7 +872,7 @@ if ($step == 4 && $datatoimport)
 
 	// Print one more empty field
 	$newkey=getnewkey($fieldssource,$listofkeys);
-	show_elem($fieldssource,$lefti,$newkey,'',$var,'nostyle');
+	show_elem($fieldssource,$newkey,'',$var,'nostyle');
 	//print '> '.$lefti.'-'.$newkey;
 	$listofkeys[$newkey]=1;
 	$nbofnotimportedfields++;
@@ -938,14 +886,15 @@ if ($step == 4 && $datatoimport)
 	while ($i < $nbofnotimportedfields)
 	{
 		// Print empty cells
-		show_elem('','','','none',$var,'nostyle');
+		show_elem('','','none',$var,'nostyle');
 		$i++;
 	}
 	print '</td></tr>';
 
 	print '</table>';
 
-	print '</div>';
+    dol_fiche_end();
+
 
 	if ($conf->use_javascript_ajax)
 	{
@@ -1108,30 +1057,10 @@ if ($step == 5 && $datatoimport)
 
 	llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:M&oacute;dulo_Importaciones');
 
-	$h = 0;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=1'.$param;
-	$head[$h][1] = $langs->trans("Step")." 1";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=2'.$param;
-	$head[$h][1] = $langs->trans("Step")." 2";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=3'.$param;
-	$head[$h][1] = $langs->trans("Step")." 3";
-	$h++;
+    $head = import_prepare_head($param,5);
 
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=4'.$param;
-	$head[$h][1] = $langs->trans("Step")." 4";
-	$h++;
+	dol_fiche_head($head, 'step5', $langs->trans("NewImport"));
 
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=5'.$param;
-	$head[$h][1] = $langs->trans("Step")." 5";
-	$hselected=$h;
-	$h++;
-
-	dol_fiche_head($head, $hselected, $langs->trans("NewImport"));
 
 	print '<table width="100%" class="border">';
 
@@ -1258,7 +1187,7 @@ if ($step == 5 && $datatoimport)
 
 	print '</table>';
 
-	print '</div>';
+    dol_fiche_end();
 
 
     if (GETPOST('action') != 'launchsimu')
@@ -1454,34 +1383,10 @@ if ($step == 6 && $datatoimport)
 
 	llxHeader('',$langs->trans("NewImport"),'EN:Module_Imports_En|FR:Module_Imports|ES:M&oacute;dulo_Importaciones');
 
-	$h = 0;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=1'.$param;
-	$head[$h][1] = $langs->trans("Step")." 1";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=2'.$param;
-	$head[$h][1] = $langs->trans("Step")." 2";
-	$h++;
+    $head = import_prepare_head($param,6);
 
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=3'.$param;
-	$head[$h][1] = $langs->trans("Step")." 3";
-	$h++;
+	dol_fiche_head($head, 'step6', $langs->trans("NewImport"));
 
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=4'.$param;
-	$head[$h][1] = $langs->trans("Step")." 4";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=5'.$param;
-	$head[$h][1] = $langs->trans("Step")." 5";
-	$h++;
-
-	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step=6'.$param;
-	$head[$h][1] = $langs->trans("Step")." 6";
-	$hselected=$h;
-	$h++;
-
-	dol_fiche_head($head, $hselected, $langs->trans("NewImport"));
 
 	print '<table width="100%" class="border">';
 
@@ -1648,7 +1553,8 @@ if ($step == 6 && $datatoimport)
 	if (count($arrayoferrors) > 0) $db->rollback();	// We force rollback because this was errors.
 	else  $db->commit();	// We can commit if no errors.
 
-	print '</div>';
+    dol_fiche_end();
+
 
 	// Show result
 	print '<center>';
@@ -1671,10 +1577,17 @@ $db->close();
 llxFooter();
 
 
-/*
+/**
  * Function to put the movable box of a source field
+ *
+ * @param	array	$fieldssource	List of source fields
+ * @param	int		$pos			Pos
+ * @param	string	$key			Key
+ * @param	boolean	$var			Line style (odd or not)
+ * @param	int		$nostyle		Hide style
+ * @return	void
  */
-function show_elem($fieldssource,$i,$pos,$key,$var,$nostyle='')
+function show_elem($fieldssource,$pos,$key,$var,$nostyle='')
 {
 	global $langs,$bc;
 
@@ -1727,9 +1640,10 @@ function show_elem($fieldssource,$i,$pos,$key,$var,$nostyle='')
 
 /**
  * Return not used field number
- * @param 	$fieldssource
- * @param	$listofkey
- * @return
+ *
+ * @param 	array	$fieldssource
+ * @param	array	$listofkey
+ * @return	void
  */
 function getnewkey(&$fieldssource,&$listofkey)
 {
diff --git a/htdocs/lib/import.lib.php b/htdocs/lib/import.lib.php
new file mode 100755
index 0000000000000000000000000000000000000000..23e7f30f73ad97aaa1f78ce0d86cbd958902ffe9
--- /dev/null
+++ b/htdocs/lib/import.lib.php
@@ -0,0 +1,56 @@
+<?php
+/* Copyright (C) 2006-2009 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2007      Rodolphe Quiedeville <rodolphe@quiedeville.org>
+ * Copyright (C) 2010      Regis Houssin        <regis@dolibarr.fr>
+ * Copyright (C) 2010      Juanjo Menent        <jmenent@2byte.es>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *  \file       htdocs/lib/order.lib.php
+ *  \brief      Ensemble de fonctions de base pour le module commande
+ *  \ingroup    commande
+ */
+
+/**
+ * Function to return list of tabs for import pages
+ *
+ * @param	string		$param		Params to add on url links
+ * @param	int			$maxstep	Limit steps to maxstep or no limit if 0
+ * @return	array					Array of tabs
+ */
+function import_prepare_head($param, $maxstep=0)
+{
+	global $langs;
+
+	if (empty($maxstep)) $maxstep=6;
+
+	$h=0;
+	$head = array();
+	$i=1;
+	while($i <= $maxstep)
+	{
+    	$head[$h][0] = DOL_URL_ROOT.'/imports/import.php?step='.$i.$param;
+    	$head[$h][1] = $langs->trans("Step")." ".$i;
+    	$head[$h][2] = 'step'.$i;
+    	$h++;
+    	$i++;
+	}
+
+	return $head;
+}
+
+?>