diff --git a/formulaires/editer_bloc.html b/formulaires/editer_bloc.html
index 94b498e77febfcfe5c5c3028743a05445d55a440..b48112de5127d8a0b0a9e91b2c2adf36569f21f9 100644
--- a/formulaires/editer_bloc.html
+++ b/formulaires/editer_bloc.html
@@ -16,8 +16,8 @@
 			]
 			[(#ENV{id_blocs_type}|oui)
 			<p class="boutons boutons-flex">
-				<button type="submit" class="submit btn_secondaire"  name="annuler" value="1" formnovalidate><:bouton_annuler:></button>
-				<button type="submit" class="submit" name="ajouter" value="1"><:bloc:bouton_ajouter:></button>
+				[(#ENV{popin}|oui)<a href="#" onclick="lity.current().close(); return false;" class="submit btn btn_secondaire"><:bouton_annuler:></a>]
+				<button type="submit" class="submit btn" name="ajouter" value="1">[(#ENV{popin}|?{<:bloc:bouton_ajouter:>,<:bouton_enregistrer:/>})]</button>
 			</p>
 			]
 		</p>
diff --git a/formulaires/editer_bloc.php b/formulaires/editer_bloc.php
index b6e9f9431be67f78d843215fb3a6154b0edf6229..1df9d025917eec55c6c8f421e5e3a641e9813bed 100644
--- a/formulaires/editer_bloc.php
+++ b/formulaires/editer_bloc.php
@@ -20,13 +20,14 @@ include_spip('inc/editer');
 /**
  * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
  *
- * @param int|string $id_bloc  Identifiant du bloc. 'new' pour un nouveau bloc.
- * @param null       $objet    Type d'objet à associer (article, rubrique,...)
- * @param null       $id_objet Id de l'objet à associer
- * @param null       $retour   URL de redirection après le traitement
+ * @param int|string  $id_bloc  Identifiant du bloc. 'new' pour un nouveau bloc.
+ * @param string|null $objet    Type d'objet à associer (article, rubrique,...)
+ * @param int|null    $id_objet Id de l'objet à associer
+ * @param string|null $retour   URL de redirection après le traitement
+ * @param string|null $popin    Indique si le formulaire est ouvert en popin
  * @return string              Hash du formulaire
  */
-function formulaires_editer_bloc_identifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) {
+function formulaires_editer_bloc_identifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) {
 	return serialize([intval($id_bloc), $objet, $id_objet]);
 }
 
@@ -35,24 +36,29 @@ function formulaires_editer_bloc_identifier_dist($id_bloc = 'new', $objet = null
  *
  * Déclarer les champs postés et y intégrer les valeurs par défaut
  *
- * @param int|string $id_bloc  Identifiant du bloc. 'new' pour un nouveau bloc.
- * @param null       $objet    Type d'objet à associer (article, rubrique,...)
- * @param null       $id_objet Id de l'objet à associer
- * @param null       $retour   URL de redirection après le traitement
+ * @param int|string  $id_bloc  Identifiant du bloc. 'new' pour un nouveau bloc.
+ * @param string|null $objet    Type d'objet à associer (article, rubrique,...)
+ * @param int|null    $id_objet Id de l'objet à associer
+ * @param string|null $retour   URL de redirection après le traitement
+ * @param string|null $popin    Indique si le formulaire est ouvert en popin
  * @return array               Environnement du formulaire
  * @uses formulaires_editer_objet_charger()
  */
-function formulaires_editer_bloc_charger_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) {
-	if (!$objet || !(int)$id_objet) {
-		return null;
-	}
-
+function formulaires_editer_bloc_charger_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) {
 	if ((int)$id_bloc) {
 		$id_blocs_type = (int)sql_getfetsel('id_blocs_type', 'spip_blocs', 'id_bloc = ' . $id_bloc);
+		$infos = sql_fetsel('id_objet, objet', 'spip_blocs_liens', 'id_bloc = ' . $id_bloc);
+		$objet = $infos['objet'];
+		$id_objet = $infos['id_objet'];
 		$valeurs = formulaires_editer_objet_charger('bloc', $id_bloc, $id_blocs_type, 0, $retour, '');
 	} else {
 		$id_blocs_type = _request('id_blocs_type');
 	}
+	if (!$objet || !(int)$id_objet) {
+		return null;
+	}
+
+	$valeurs['popin'] = (bool)$popin;
 
 	if ($id_blocs_type) {
 		// charger les saisies du type de bloc
@@ -107,14 +113,15 @@ function formulaires_editer_bloc_charger_dist($id_bloc = 'new', $objet = null, $
  *
  * Vérifier les champs postés et signaler d'éventuelles erreurs
  *
- * @param int|string $id_bloc  Identifiant du bloc. 'new' pour un nouveau bloc.
- * @param string     $retour   URL de redirection après le traitement
- * @param null       $objet    Type d'objet à associer (article, rubrique,...)
- * @param null       $id_objet Id de l'objet à associer
+ * @param int|string  $id_bloc  Identifiant du bloc. 'new' pour un nouveau bloc.
+ * @param string|null $objet    Type d'objet à associer (article, rubrique,...)
+ * @param int|null    $id_objet Id de l'objet à associer
+ * @param string|null $retour   URL de redirection après le traitement
+ * @param string|null $popin    Indique si le formulaire est ouvert en popin
  * @return array               Tableau des erreurs
  * @uses formulaires_editer_objet_verifier()
  */
-function formulaires_editer_bloc_verifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) {
+function formulaires_editer_bloc_verifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) {
 	if ((int)$id_bloc) {
 		$id_blocs_type = (int)sql_getfetsel('id_blocs_type', 'spip_blocs', 'id_bloc = ' . $id_bloc);
 	} else {
@@ -147,17 +154,20 @@ function formulaires_editer_bloc_verifier_dist($id_bloc = 'new', $objet = null,
  *
  * Traiter les champs postés
  *
- * @param int|string $id_bloc       Identifiant du bloc. 'new' pour un nouveau bloc.
- * @param int|string $id_blocs_type Type de bloc
- * @param string     $retour        URL de redirection après le traitement
- * @param null       $objet         Type d'objet à associer (article, rubrique,...)
- * @param null       $id_objet      Id de l'objet à associer
- * @return array                    Retours des traitements
+ * @param int|string  $id_bloc  Identifiant du bloc. 'new' pour un nouveau bloc.
+ * @param string|null $objet    Type d'objet à associer (article, rubrique,...)
+ * @param int|null    $id_objet Id de l'objet à associer
+ * @param string|null $retour   URL de redirection après le traitement
+ * @param string|null $popin    Indique si le formulaire est ouvert en popin
+ * @return array                Retours des traitements
  * @uses formulaires_editer_objet_traiter()
  */
-function formulaires_editer_bloc_traiter_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) {
+function formulaires_editer_bloc_traiter_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) {
 	if ((int)$id_bloc) {
 		$id_blocs_type = (int)sql_getfetsel('id_blocs_type', 'spip_blocs', 'id_bloc = ' . $id_bloc);
+		$infos = sql_fetsel('id_objet, objet', 'spip_blocs_liens', 'id_bloc = ' . $id_bloc);
+		$objet = $infos['objet'];
+		$id_objet = $infos['id_objet'];
 	} else {
 		$id_blocs_type = _request('id_blocs_type');
 	}
diff --git a/prive/squelettes/contenu/bloc_edit.html b/prive/squelettes/contenu/bloc_edit.html
index 390934d319f0c89f78b89216d0b7733f97e5b45b..a085a408a4149a4bd3b1e7540421dc057061b9c9 100644
--- a/prive/squelettes/contenu/bloc_edit.html
+++ b/prive/squelettes/contenu/bloc_edit.html
@@ -30,8 +30,8 @@
 	#SET{redirect,#URL_ECRIRE{#OBJET|objet_info{url_voir},#OBJET|id_table_objet|concat{'=',#ID_OBJET}}}
 	<div class="ajax">
 ]
-[(#GET{redirect}|dd)]
-[(#FORMULAIRE_EDITER_BLOC{#ENV{id_bloc,new}, #OBJET, #ID_OBJET, #GET{redirect}})]
+
+[(#FORMULAIRE_EDITER_BLOC{#ENV{id_bloc,new}, #OBJET, #ID_OBJET, #GET{redirect}, #ENV{popin}})]
 
 [(#ENV{popin,''}|oui)
 	</div>
diff --git a/prive/squelettes/inclure/blocs_objet.html b/prive/squelettes/inclure/blocs_objet.html
index b0d4b46b4c0e3872ace4060b494a8c6f4e06f6f4..056da0ff5f6133b17e79f6c25176030c9e8b3c5b 100644
--- a/prive/squelettes/inclure/blocs_objet.html
+++ b/prive/squelettes/inclure/blocs_objet.html
@@ -19,9 +19,11 @@
 			#GENERER_BLOCK
 
 			[(#AUTORISER{modifier,bloc,#ID_BLOC})
-			<div class="deplacer-modifier">
-				[(#URL_ECRIRE{#VAL{bloc}|objet_info{url_edit},id_bloc=#ID_BLOC}|parametre_url{redirect,#SELF}|concat{'#bloc',#ID_BLOC}|icone_verticale{<:bloc:icone_modifier_bloc:/>,bloc,edit,right})]
-			</div>
+				<a href="[(#URL_ECRIRE{bloc_edit,id_bloc=#ID_BLOC}|parametre_url{popin,1}|parametre_url{var_zajax,contenu}|parametre_url{id_bloc,#ID_BLOC}|parametre_url{id_objet,#ID_OBJET}|parametre_url{objet,#OBJET})]"
+				   class="btn btn_mini popin">
+					<span class="sp-icone sp-icone-bloc" aria-hidden="true">[(#CHEMIN_IMAGE{bloc-16.png}|balise_img)]</span>
+					<:bloc:icone_modifier_bloc:/>
+				</a>
 			]
 
 		</div>