diff --git a/ecrire/exec/breves_edit.php b/ecrire/exec/breves_edit.php
index 71eeffc755f96ff208058564489b5962ff5a00d1..a085ccd102b03a80dae6b75e0e4bcddac3e9b34c 100644
--- a/ecrire/exec/breves_edit.php
+++ b/ecrire/exec/breves_edit.php
@@ -23,6 +23,7 @@ function exec_breves_edit_dist()
 global
   $champs_extra,
   $connect_statut,
+  $connect_id_rubrique,
   $id_breve,
   $id_rubrique,
   $lien_titre,
@@ -130,6 +131,17 @@ if ($connect_statut=="0minirezo" OR $statut=="prop" OR $new == "oui") {
 
 	debut_cadre_couleur("$logo_parent", false, "",_T('entree_interieur_rubrique').aide ("brevesrub"));
 
+	// appel du script a la racine, faut choisir 
+	// on prend le dernier secteur cree
+	// dans une liste restreinte si admin restreint
+
+	if (!$id_rubrique) {
+		$in = !$connect_id_rubrique ? ''
+		  : (' AND id_rubrique IN (' . join(',', $connect_id_rubrique) . ')');
+		$row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0$in ORDER BY id_rubrique DESC LIMIT 1"));		
+		$id_rubrique = $row_rub['id_rubrique'];
+	}
+
 	// selecteur de rubrique (en general pas d'ajax car toujours racine)
 	$selecteur_rubrique = charger_fonction('chercher_rubrique', 'inc');
 	echo $selecteur_rubrique($id_rubrique, 'breve', ($statut == 'publie'));
diff --git a/ecrire/exec/sites_edit.php b/ecrire/exec/sites_edit.php
index 1086008cd8409974ccac0f4431dbcfade6158bc9..efc58bc51bb7c70dcda213004908ac0fa8a4a5f7 100644
--- a/ecrire/exec/sites_edit.php
+++ b/ecrire/exec/sites_edit.php
@@ -16,7 +16,7 @@ include_spip('inc/presentation');
 // http://doc.spip.org/@exec_sites_edit_dist
 function exec_sites_edit_dist()
 {
-  global $champs_extra, $connect_statut, $descriptif, $id_rubrique, $id_secteur, $id_syndic, $new, $nom_site, $syndication, $url_site, $url_syndic;
+  global $champs_extra, $connect_statut, $descriptif, $id_rubrique, $id_secteur, $id_syndic, $new, $nom_site, $syndication, $url_site, $url_syndic, $connect_id_rubrique;
 
 $result = spip_query("SELECT * FROM spip_syndic WHERE id_syndic=" . intval($id_syndic));
 
@@ -34,7 +34,9 @@ else {
 	$syndication = 'non';
 	$new = 'oui';
 	if (!intval($id_rubrique)) {
-		$row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent='0' ORDER BY titre LIMIT 1"));
+		$in = !$connect_id_rubrique ? ''
+		  : (' WHERE id_rubrique IN (' . join(',', $connect_id_rubrique) . ')');
+		$row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques$in ORDER BY id_rubrique DESC LIMIT 1"));		
 		$id_rubrique = $row['id_rubrique'];
 	}
 }
diff --git a/ecrire/inc/article_select.php b/ecrire/inc/article_select.php
index 35b6fbdf833d468e5d5b37e2072409a7a66221c6..f321541c569fc7516048330a740444a8c4623911 100644
--- a/ecrire/inc/article_select.php
+++ b/ecrire/inc/article_select.php
@@ -20,7 +20,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // new=oui = article a creer si on valide le formulaire
 // http://doc.spip.org/@article_select
 function article_select($id_article, $id_rubrique, $lier_trad, $new) {
-  global $connect_id_auteur, $spip_lang; 
+  global $connect_id_auteur, $connect_id_rubrique, $spip_lang; 
   $id_article = intval($id_article);
   $id_rubrique =  intval($id_rubrique);
   $lier_trad =  intval($lier_trad);
@@ -61,6 +61,18 @@ else if ($new=='oui') {
 	if ($lier_trad)
 		$row = article_select_trad($lier_trad);
 
+	// appel du script a la racine, faut choisir 
+	// admin restreint ==> sa premiere rubrique
+	// autre ==> la derniere rubrique cree
+	if (!$row['id_rubrique']) {
+		if ($connect_id_rubrique)
+			$row['id_rubrique'] = $id_rubrique = $connect_id_rubrique[0]; 
+		else {
+			$row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques ORDER BY id_rubrique DESC LIMIT 1"));
+			$row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique'];
+		}
+	}
+
 	// recuperer le secteur, pour affecter les bons champs extras
 	if (!$row['id_secteur']) {
 		$row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));