diff --git a/blocks_fonctions.php b/blocks_fonctions.php
index b7fad0102d7d80268c7b8be1035493bbfae5c37a..ff8987f3dcd32e1d07b628b9f14944b59ed92412 100644
--- a/blocks_fonctions.php
+++ b/blocks_fonctions.php
@@ -218,3 +218,22 @@ function blocks_trouver_squelette($identifiant, $force_public = false, $chemin_c
 
 	return $squelette;
 }
+
+function bloctypes_trouver_enfants($id_blocktype) {
+	return bloctypes_trouver_role($id_blocktype, 'enfant');
+}
+
+function bloctypes_trouver_parents($id_blocktype) {
+	return bloctypes_trouver_role($id_blocktype, 'parent');
+}
+
+function bloctypes_trouver_role($id_blocktype, $role) {
+	if (
+		$id_blocktype
+		&& $role
+		&& ($blocktypes_parents = objet_trouver_liens(['blocktype' => $id_blocktype], ['blocktype' => '*'], ['role' => $role]))
+	) {
+		return array_column($blocktypes_parents, 'id_objet');
+	}
+	return [];
+}
diff --git a/formulaires/editer_blocktype.php b/formulaires/editer_blocktype.php
index a2152a3c0f2965278cef237696992442b79f363b..ebebaebfe45896ea68608df48860f571f25bdf28 100644
--- a/formulaires/editer_blocktype.php
+++ b/formulaires/editer_blocktype.php
@@ -164,13 +164,11 @@ function formulaires_editer_blocktype_charger_dist($id_blocktype = 'new', $retou
 	$valeurs = formulaires_editer_objet_charger('blocktype', $id_blocktype, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
 	$valeurs['objets'] = blocks_deserialize($valeurs['objets']);
 
-	if ($blocktypes_enfants = objet_trouver_liens(['blocktype' => $id_blocktype], ['blocktype' => '*'], ['role' => 'enfant'])) {
-		$valeurs['blocktypes_enfants'] = array_column($blocktypes_enfants, 'id_objet');
+	if ($valeurs['blocktypes_enfants'] = bloctypes_trouver_enfants($id_blocktype)) {
 		$valeurs['conteneur_enfants'] = 'on';
 	}
 
-	if ($blocktypes_parents = objet_trouver_liens(['blocktype' => $id_blocktype], ['blocktype' => '*'], ['role' => 'parent'])) {
-		$valeurs['blocktypes_parents'] = array_column($blocktypes_parents, 'id_objet');
+	if ($valeurs['blocktypes_parents'] = bloctypes_trouver_parents($id_blocktype)) {
 		$valeurs['conteneur_parents'] = 'on';
 	}
 
diff --git a/prive/objets/contenu/blocktype.html b/prive/objets/contenu/blocktype.html
index 553dccc3d7d0226054aa3a2274979bb7ea310abf..46523f5318ab1b56141beac59945bcfab664675e 100644
--- a/prive/objets/contenu/blocktype.html
+++ b/prive/objets/contenu/blocktype.html
@@ -11,8 +11,8 @@
 <B>
 	<p><strong class="label"><:blocktype:champ_conteneur_enfants_label:/> : </strong></p>
 	<ul class="spip">
-		<BOUCLE(spip_blocktypes_liens){id_blocktype}{role=enfant}>
-		<li>#INFO_TITRE{blocktype,#ID_OBJET}</li>
+		<BOUCLE(DATA) {source tableau, #ID_BLOCKTYPE|bloctypes_trouver_enfants}>
+		<li>#INFO_TITRE{blocktype,#VALEUR}</li>
 		</BOUCLE>
 	</ul>
 </B>
@@ -20,8 +20,8 @@
 <B>
 	<p><strong class="label"><:blocktype:champ_conteneur_parents_label:/> : </strong></p>
 	<ul class="spip">
-		<BOUCLE(spip_blocktypes_liens){id_blocktype}{role=parent}>
-		<li>#INFO_TITRE{blocktype,#ID_OBJET}</li>
+		<BOUCLE(DATA) {source tableau, #ID_BLOCKTYPE|bloctypes_trouver_parents}>
+		<li>#INFO_TITRE{blocktype,#VALEUR}</li>
 		</BOUCLE>
 	</ul>
 </B>