diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index c2c784bae8a3e5a65643979073c1477425578e26..2b9ca159eda3f421b3af2be90bc84bbea3c17ebb 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -189,7 +189,7 @@ function echappe_html($letexte, $source='SOURCEPROPRE', $no_transform=false) {
 		foreach ($matches as $match) {
 			$num_echap++;
 
-			// Si le resultat contient des <div>, forcer la sortie de paragraphes			
+			// Si le resultat contient des <div>, forcer la sortie du paragraphe
 			if ( $match[1] == "doc" OR $match[1] == "emb" OR eregi("^\|center", $match[3]) )  {
 				$letexte = str_replace($match[0],
 					"\n\n</no p>@@SPIP_$source$num_echap@@<no p>\n\n", $letexte);
@@ -942,13 +942,22 @@ function traiter_raccourcis_generale($letexte) {
 	//
 	// Tableaux
 	//
+
+	// traiter le cas particulier des echappements (<doc...> par exemple)
+	// qui auraient provoque des \n\n</no p> devant les | des tableaux
+	$letexte = preg_replace(',[|]\n\n</no p>@@,','|@@', $letexte);
+	$letexte = preg_replace(',@@<no p>\n\n[|],','@@|', $letexte);
+
+	// ne pas oublier les tableaux au debut ou a la fin du texte
 	$letexte = preg_replace(",^\n?[|],", "\n\n|", $letexte);
 	$letexte = preg_replace(",\n\n+[|],", "\n\n\n\n|", $letexte);
 	$letexte = preg_replace(",[|](\n\n+|\n?$),", "|\n\n\n\n", $letexte);
-	if (preg_match_all(',\n\n[|].*[|]\n\n,Ums', $letexte,
+
+	// traiter chaque tableau
+	if (preg_match_all(',[^|](\n[|].*[|]\n)[^|],Ums', $letexte,
 	$regs, PREG_SET_ORDER))
 	foreach ($regs as $tab) {
-		$letexte = str_replace($tab[0], traiter_tableau($tab[0]), $letexte);
+		$letexte = str_replace($tab[1], traiter_tableau($tab[1]), $letexte);
 	}
 
 	//