diff --git a/ecrire/public/phraser_html.php b/ecrire/public/phraser_html.php
index c074c236b9763428e6fb3bcfa8b1245d9ea37bf3..0f8f913affba4a4ea3d0cfde5510b559e9c3594a 100644
--- a/ecrire/public/phraser_html.php
+++ b/ecrire/public/phraser_html.php
@@ -453,7 +453,7 @@ function phraser_arg(&$texte, $sep, $result, &$pointeur_champ) {
 function phraser_champs_exterieurs($texte, $ligne, $sep, $nested) {
 	$res = [];
 	while (($p = strpos((string) $texte, (string) "%$sep")) !== false) {
-		if (!preg_match(',^%' . preg_quote((string) $sep, ',') . '([0-9]+)@,', substr((string) $texte, $p), $m)) {
+		if (!preg_match(',^%' . preg_quote((string) $sep, ',') . '([0-9]+)\n*@,', substr((string) $texte, $p), $m)) {
 			break;
 		}
 		$debut = substr((string) $texte, 0, $p);
@@ -522,7 +522,8 @@ function phraser_champs_interieurs(string $texte, int $no_ligne, string $sep) {
 			$champs_trouves[] = $champ;
 			$j = count($champs_trouves)-1;
 			// on remplace ce champ par un placeholder
-			$parties[] = "%$sep$j@"; // TODO : ajouter $nbl_champ retour ligne pour que la partie conserve le nombre de lignes
+			// ajouter $nbl_champ retour ligne pour que la partie conserve le nombre de lignes lors des itérations suivantes
+			$parties[] = ($t="%{$sep}{$j}" . str_repeat("\n", $nbl_champ). "@");
 			$nbl += $nbl_champ;
 
 			$texte = substr($texte, $poss[0] + strlen($match[0]));