diff --git a/TODO.md b/TODO.md
index a34329a07237361d42e5e2e37f8e2374e14c99a0..a27d9746bfca37c6c71b5e37f8572ff82bceab1f 100644
--- a/TODO.md
+++ b/TODO.md
@@ -2,7 +2,7 @@
 
 # blocs
 
-[ ] Supprimer le titre des blocs, pas utile, et utiliser une fonction de génération du titre
+[x] Supprimer le titre des blocs, pas utile, et utiliser une fonction de génération du titre
 
 [x] Formulaire de config : sur quels objets utiliser des blocs
 
diff --git a/blocks_fonctions.php b/blocks_fonctions.php
index ccf55196cd893aaa3f8feb460d8c63e7c4f57f1a..ca4e50274ce109b0b4429b3ebc77cdc8f884e6ba 100644
--- a/blocks_fonctions.php
+++ b/blocks_fonctions.php
@@ -138,3 +138,16 @@ function _block_charger_block($id_bloc) {
 
 	return recuperer_fond($squelette, $contexte);
 }
+
+function generer_TITRE_BLOC($id_bloc){
+	$infos = sql_fetsel(
+		'bt.titre, bl.objet, bl.rang_lien, bl.id_objet',
+		'spip_blocs b join spip_blocs_types bt using(id_blocs_type) left join spip_blocs_liens bl using(id_bloc)',
+		'b.id_bloc = '.(int)$id_bloc
+	);
+	$titre = $infos['titre'];
+	if($infos['id_objet'] && $infos['objet']) {
+		$titre = generer_objet_info($infos['id_objet'], $infos['objet'], 'titre') . ' - ' . $titre . ' #' . $infos['rang_lien'];
+	}
+	return $titre;
+}
diff --git a/prive/objets/liste/blocs.html b/prive/objets/liste/blocs.html
index 9a7e20d504f6f2b9289b462241696c7de107a14a..7e2fc88c023237825ad04b73b5843024b6ff0a62 100644
--- a/prive/objets/liste/blocs.html
+++ b/prive/objets/liste/blocs.html
@@ -21,7 +21,7 @@
 		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
 			<td class="picto">[(#CHEMIN_IMAGE{bloc-16.png}|balise_img)]</td>
 			<td class="statut">[(#STATUT|puce_statut{bloc,#ID_BLOC})]</td>
-			<td class="titre principale">[(#LOGO_BLOC|image_reduire{20,26})]<a href="[(#ID_BLOC|generer_url_entite{bloc})]" title="<:info_numero_abbreviation|attribut_html:/> #ID_BLOC">[(#RANG). ]#INFO_TITRE{blocs_type,#ID_BLOCS_TYPE}</a></td>
+			<td class="titre principale">[(#LOGO_BLOC|image_reduire{20,26})]<a href="[(#ID_BLOC|generer_url_entite{bloc})]" title="<:info_numero_abbreviation|attribut_html:/> #ID_BLOC">[(#RANG). ]#INFO_TITRE{bloc,#ID_BLOC}</a></td>
 			<td class="date secondaire">[(#DATE|affdate_jourcourt)]</td>
 			<td class="id">[(#AUTORISER{modifier,bloc,#ID_BLOC}|?{
 				<a href="[(#URL_ECRIRE{bloc_edit,id_bloc=#ID_BLOC})]">#ID_BLOC</a>,
diff --git a/prive/squelettes/contenu/bloc.html b/prive/squelettes/contenu/bloc.html
index 793f6fe60a2980d744d19258445d0bc171d26911..ca13712b2a1114c5826bde0730829061897856b1 100644
--- a/prive/squelettes/contenu/bloc.html
+++ b/prive/squelettes/contenu/bloc.html
@@ -12,7 +12,7 @@
 		]
 	]
 
-	<h1>[(#RANG). ](#TITRE|sinon{<:info_sans_titre:/>})[(#CHEMIN_IMAGE{bloc-24.png}|balise_img{bloc,cadre-icone})]</h1>
+	<h1>[(#RANG). ](#INFO_TITRE{bloc,#ID_BLOC}|sinon{<:info_sans_titre:/>})[(#CHEMIN_IMAGE{bloc-24.png}|balise_img{bloc,cadre-icone})]</h1>
 
 ],simple fiche_objet})]
 
diff --git a/prive/squelettes/hierarchie/bloc.html b/prive/squelettes/hierarchie/bloc.html
index 2db64ac77bb7790056edaa43dc66321d31ad1725..6f5fec58631af1398b414e074cacc74d666524b0 100644
--- a/prive/squelettes/hierarchie/bloc.html
+++ b/prive/squelettes/hierarchie/bloc.html
@@ -2,7 +2,7 @@
 <a href="#URL_ECRIRE{blocs}"><:bloc:titre_blocs:/></a>
 <BOUCLE_hierarchie(BLOCS){id_bloc}{statut?}>
 &gt; [(#URL_ECRIRE{blocs_type,id_blocs_type=#ID_BLOCS_TYPE}|lien_ou_expose{#INFO_TITRE{blocs_types,#ID_BLOCS_TYPE},''})]
-&gt; <strong class="on">#ID_BLOC</strong>
+&gt; <strong class="on">#INFO_TITRE{bloc,#ID_BLOC}</strong>
 </BOUCLE_hierarchie>
 [(#ENV{id_blocs_type}|oui)
 	&gt; [(#URL_ECRIRE{blocs_type,id_blocs_type=#ID_BLOCS_TYPE}|lien_ou_expose{#INFO_TITRE{blocs_types,#ID_BLOCS_TYPE},''})]