diff --git a/ecrire/public/interfaces.php b/ecrire/public/interfaces.php
index b0f1547a58a0e15f370fd9c6b414c069d40477ff..c5ac87557f3e512ad85da936d44c77cfddd14d77 100644
--- a/ecrire/public/interfaces.php
+++ b/ecrire/public/interfaces.php
@@ -555,6 +555,16 @@ class Boucle {
 	 */
 	public $debug = [];
 
+	/** 
+	 * Index de la boucle dont le champ présent dans cette boucle est originaire,
+	 * notamment si le champ a été trouve dans une boucle parente
+	 * 
+	 * Tableau nom du champ => index de boucle
+	 * 
+	 * @var array $index_champ 
+	*/
+	public $index_champ = [];
+
 	// obsoletes, conserves provisoirement pour compatibilite
 	public $tout = false;
 	public $plat = false;
diff --git a/ecrire/public/references.php b/ecrire/public/references.php
index 1f3ed7d02d3df8fb78d696b02001131126a83977..fd713aaf01129435ca6e531f7dfa8252665c985d 100644
--- a/ecrire/public/references.php
+++ b/ecrire/public/references.php
@@ -156,7 +156,7 @@ function index_pile(
 				$boucles[$idb]->select[] = $t;
 			}
 			// renseigner la boucle source de ce champ pour les traitements
-			$boucles[$idb_origine]->source_champ[$nom_champ_origine] = $idb;
+			$boucles[$idb_origine]->index_champ[$nom_champ_origine] = $idb;
 			$champ = '$Pile[$SP' . ($i ? "-$i" : "") . '][\'' . $c . '\']';
 			if (!$joker) {
 				return index_compose($conditionnel, $champ);
@@ -733,8 +733,8 @@ function champs_traitements($p) {
 		// Recuperer le type de boucle (articles, DATA) et la table SQL sur laquelle elle porte
 		$idb = index_boucle($p);
 		// si le champ a ete trouve dans une boucle parente sa source est renseignee ici
-		if (!empty($p->boucles[$idb]->source_champ[$p->nom_champ])) {
-			$idb = $p->boucles[$idb]->source_champ[$p->nom_champ];
+		if (!empty($p->boucles[$idb]->index_champ[$p->nom_champ])) {
+			$idb = $p->boucles[$idb]->index_champ[$p->nom_champ];
 		}
 
 		// mais on peut aussi etre hors boucle. Se mefier.