diff --git a/application/modules/opac/controllers/BibController.php b/application/modules/opac/controllers/BibController.php
index 7123dc1e0b90329323aa1a2f956c3a4f4aa7701c..59ab1338cbd795a94088cc4d13f68aafa5b5354c 100644
--- a/application/modules/opac/controllers/BibController.php
+++ b/application/modules/opac/controllers/BibController.php
@@ -90,9 +90,7 @@ class BibController extends ZendAfi_Controller_Action {
 	function selectionAction() {
 		$this->view->titre = $this->view->_('Sélection de bibliothèques pour la recherche');
 		$this->view->zones = Class_Zone::findAll();
-		$this->view->id_bibs_session = [];
-		if(array_isset('id_bibs', $_SESSION["selection_bib"]))
-			$this->view->id_bibs_session = $_SESSION["selection_bib"]['id_bibs'];
+		$this->view->id_bibs_session = ($id_bibs = Zend_Registry::get('session')->id_bibs) ? $id_bibs : [];
 	}
 
 
diff --git a/library/Class/Profil.php b/library/Class/Profil.php
index 53b49fb2788619ae6a0ceb404a6e093b9b6de086..1309d908084cc6bb9f7916e13c80b76128912a9b 100644
--- a/library/Class/Profil.php
+++ b/library/Class/Profil.php
@@ -117,13 +117,18 @@ class Class_Profil extends Storm_Model_Abstract {
 	}
 
 
-
 	public static function goBackToPreviousProfil() {
 		$session = Zend_Registry::get('session');
 		$session->id_profil = $session->previous_id_profil;
 	}
 
 
+	public static function hasChanged() {
+		$session = Zend_Registry::get('session');
+		return $session->id_profil != $session->previous_id_profil;
+	}
+
+
 	/**
 	 * @param Class_Profil $profil
 	 */
diff --git a/library/ZendAfi/Controller/Plugin/SelectionBib.php b/library/ZendAfi/Controller/Plugin/SelectionBib.php
index c612a17120d8f76d413e561230cf6665addc993b..2761ae4e1cb699ab10981f6d0212f782611f2fdd 100644
--- a/library/ZendAfi/Controller/Plugin/SelectionBib.php
+++ b/library/ZendAfi/Controller/Plugin/SelectionBib.php
@@ -20,15 +20,22 @@
  */
 
 class ZendAfi_Controller_Plugin_SelectionBib extends Zend_Controller_Plugin_Abstract {
+	protected $_session;
+
 	public function preDispatch(Zend_Controller_Request_Abstract $request)	{
+		$this->_session = Zend_Registry::get('session');
+
 		if ($request->getModuleName() != 'opac')
 			return;
 
 		if(!$params = $request->getParams())
 			return;
 
-		if($request->getParam('id_profil', null))
+
+		if(Class_Profil::hasChanged()) {
 			unset($_SESSION['selection_bib']);
+			$this->_session->id_bibs = [];
+		}
 
 		$this->setIdBibsParams($request);
 
@@ -106,7 +113,6 @@ class ZendAfi_Controller_Plugin_SelectionBib extends Zend_Controller_Plugin_Abst
 		if(!is_array($id_bibs))
 			$id_bibs = explode(',', $id_bibs);
 
-		unset($_SESSION['selection_bib']);
-		return $_SESSION['selection_bib']['id_bibs'] = $id_bibs;
+		$this->_session->id_bibs = $id_bibs;
 	}
 }
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/TagRechercheSimple.php b/library/ZendAfi/View/Helper/TagRechercheSimple.php
index 9866315b278cf8e40d8bfd382455721b6934b49b..2d69d9b2a771f654770813d10f9baeb51c8d1bc9 100644
--- a/library/ZendAfi/View/Helper/TagRechercheSimple.php
+++ b/library/ZendAfi/View/Helper/TagRechercheSimple.php
@@ -59,7 +59,8 @@ class ZendAfi_View_Helper_TagRechercheSimple extends Zend_View_Helper_HtmlElemen
 		if ((int)$this->preferences["select_bib"] !== 1)
 			return '';
 
-		$bib_ids = array_key_exists('id_bibs', $_SESSION['selection_bib']) ? $_SESSION['selection_bib']['id_bibs'] : '' ;
+		$session = Zend_Registry::get('session');
+		$bib_ids = ($id_bibs = $session->id_bibs) ? $id_bibs : [];
 
 		$input = $this->view->formHidden('bib_select', implode(',',$bib_ids));
 
diff --git a/tests/application/modules/opac/controllers/BibControllerTest.php b/tests/application/modules/opac/controllers/BibControllerTest.php
index 83b7bf971ef642ff69e5c7e6e52b1a90b3e25d5a..82ed4f53c728f992ee1fb068a55956bcc7ce89bf 100644
--- a/tests/application/modules/opac/controllers/BibControllerTest.php
+++ b/tests/application/modules/opac/controllers/BibControllerTest.php
@@ -324,11 +324,18 @@ class BibControllerBibViewInexistantTest extends BibControllerWithZoneTestCase {
 
 
 abstract class BibControllerSelectionTestCase extends AbstractControllerTestCase {
-		public function setUp() {
+	protected $_session;
+
+
+	public function setUp() {
 		parent::setUp();
+
+		$this->_session = Zend_Registry::get('session');
+
 		unset($_REQUEST['geo_zone']);
 		unset($_REQUEST['geo_bib']);
 		unset($_SESSION['selection_bib']);
+
 		$_SESSION['selection_bib'] = ['id_bibs' => []];
 
 		$this->fixture('Class_Zone',
@@ -355,12 +362,12 @@ abstract class BibControllerSelectionTestCase extends AbstractControllerTestCase
 																	'id_zone' => 1]);
 
 		$paris = $this->fixture('Class_Bib',
-																 ['id' => 3,
-																	'id_site' => '2',
-																	'libelle' => 'Paris',
-																	'visibilite' => 2,
-																	'id_zone' => 2]);
-		}
+														['id' => 3,
+														 'id_site' => '2',
+														 'libelle' => 'Paris',
+														 'visibilite' => 2,
+														 'id_zone' => 2]);
+	}
 }
 
 
@@ -401,14 +408,14 @@ class BibControllerBibSelectionWithEmptySessionTest extends BibControllerSelecti
 class BibControllerBibSelectionWithBibsIdsInSessionTest extends BibControllerSelectionTestCase {
 	public function setUp() {
 		parent::setUp();
-		$_SESSION['selection_bib'] = ['id_bibs' => [1, 2]];
+		$this->_session->id_bibs = [1, 2];
 		$this->dispatch('bib/selection', true);
 	}
 
 
 	/** @test */
 	public function cairoShouldBeChecked() {
-		$this->assertXPath('//li/input[@checked="checked"][@value="1"]');
+		$this->assertXPath('//li/input[@checked="checked"][@value="1"]', $this->_response->getBody());
 	}
 
 
@@ -436,35 +443,43 @@ class BibControllerBibSelectionPostDispatchTest extends BibControllerSelectionTe
 
 	/** @test */
 	public function seesionShouldContainsCasablancaAndCairo() {
-		$this->assertEquals([1, 2] ,$_SESSION['selection_bib']['id_bibs']);
+		$this->assertEquals([1, 2] , $this->_session->id_bibs);
 	}
+}
 
 
-	/** @test */
-	public function sessionShouldNotContainsMessage() {
-		$this->assertFalse(array_key_exists('message', $_SESSION['selection_bib']));
+
+
+class BibControllerBibSelectionWithProfilIdParamTest extends BibControllerSelectionTestCase {
+	public function setUp() {
+		parent::setUp();
+		Class_Profil::setCurrentProfil(Class_Profil::find(1));
+		$this->_session->id_bibs = [1, 2];
+		$this->dispatch('opac/index/index/id_profil/1', true);
 	}
 
 
 	/** @test */
-	public function sessionShouldNotContainsHtml() {
-		$this->assertFalse(array_key_exists('html', $_SESSION['selection_bib']));
+	public function sessionSlectionBibShouldNotExist() {
+		$this->assertEquals([1,2], $this->_session->id_bibs);
 	}
 }
 
 
 
-
-class BibControllerBibSelectionWithProfilIdParamTest extends BibControllerSelectionTestCase {
+class BibControllerBibSelectionWithProfilHasChangedTest extends BibControllerSelectionTestCase {
 	public function setUp() {
 		parent::setUp();
-		$this->dispatch('opac/index/index/id_profil/1', true);
+		Class_Profil::setCurrentProfil(Class_Profil::find(1));
+		$this->_session->id_bibs = [1, 2];
+		$this->dispatch('opac/index/index/id_profil/2', true);
 	}
 
 
 	/** @test */
 	public function sessionSlectionBibShouldNotExist() {
-		$this->assertFalse(array_key_exists('id_bibs', $_SESSION['selection_bib']));
+		$this->assertEmpty($this->_session->id_bibs);
 	}
+
 }
 ?>
\ No newline at end of file