diff --git a/ecrire/public/decompiler.php b/ecrire/public/decompiler.php
index 06d502891c95863934c82bc6a3731f411e980b47..252974af610172a3fcf7ac3603ac467dcebe2606 100644
--- a/ecrire/public/decompiler.php
+++ b/ecrire/public/decompiler.php
@@ -27,7 +27,7 @@ function decompiler_boucle($struct, $fmt = '', $prof = 0) {
 	$postaff = decompiler_($struct->postaff, $fmt, $prof);
 
 	$type = $struct->sql_serveur ? "$struct->sql_serveur:" : '';
-	$type .= ($struct->type_requete ?: $struct->table_optionnelle);
+	$type .= ($struct->type_requete ?: $struct->type_table_optionnelle);
 
 	if ($struct->jointures_explicites) {
 		$type .= ' ' . $struct->jointures_explicites;
diff --git a/ecrire/public/phraser_html.php b/ecrire/public/phraser_html.php
index 46b37469cf37e6973f1095bddb7d9881aa3e9723..b6efaa7c82ddd6081923b8dd8e0d92e0088edbae 100644
--- a/ecrire/public/phraser_html.php
+++ b/ecrire/public/phraser_html.php
@@ -1099,7 +1099,8 @@ function public_phraser_html_dist($texte, $id_parent, &$boucles, $descr, $ligne_
 		}
 
 		if ($table_optionnelle) {
-			$result->table_optionnelle = $type;
+			$result->table_optionnelle = true;
+			$result->type_table_optionnelle = $type;
 		}
 
 		// 1ere passe sur les criteres, vu comme des arguments sans fct
diff --git a/ecrire/src/Compilateur/Noeud/Boucle.php b/ecrire/src/Compilateur/Noeud/Boucle.php
index 7c58af3d61c200071fdcf08062d2bb5a37c47c6b..c938f8e8d45925fe5e1f9470ca89d8f43805ce40 100644
--- a/ecrire/src/Compilateur/Noeud/Boucle.php
+++ b/ecrire/src/Compilateur/Noeud/Boucle.php
@@ -84,6 +84,7 @@ class Boucle
 	 * Si oui, aucune erreur ne sera générée si la table demandée n'est pas présente
 	 */
 	public bool $table_optionnelle = false;
+	public string $type_table_optionnelle = '';
 
 	/**
 	 * Nom du fichier de connexion