diff --git a/VERSIONS_HOTLINE/145669 b/VERSIONS_HOTLINE/145669
new file mode 100644
index 0000000000000000000000000000000000000000..5275794b5c27570bec90aa83686b2ba518093b4c
--- /dev/null
+++ b/VERSIONS_HOTLINE/145669
@@ -0,0 +1 @@
+ - ticket #145669 : Boite agenda : Les selections d'articles sont bien filtrés
\ No newline at end of file
diff --git a/library/Class/Calendar.php b/library/Class/Calendar.php
index b58a5c4dae13b3935fef22188c1761440ec0dfd1..164088dfe51eb0b2cc28f755655f5916884dab20 100644
--- a/library/Class/Calendar.php
+++ b/library/Class/Calendar.php
@@ -157,17 +157,21 @@ class Class_Calendar {
     if ($tag = $this->_getParam('tag', null))
       $prefs['tag'] = $tag;
 
+    $preferences = ['display_order' => (isset($this->preferences['display_order'])
+                                        ? $this->preferences['display_order']
+                                        : $this->preferences['order']),
+                    'id_categorie' => $this->_getCategoriesIds(),
+                    'events_only' => true,
+                    'event_date' => $this->date,
+                    'id_bib' => $this->id_bib,
+                    'id_lieu' => $id_lieu,
+                    'custom_fields' => $this->getCustomFields(),
+                    'published' => $this->date >= strftime('%Y-%m', $this->getTimeSource()->time())];
+    if (isset($this->preferences['id_items']))
+        $preferences['id_items'] = $this->preferences['id_items'];
+
     $prefs = array_merge($prefs,
-                         ['display_order' => (isset($this->preferences['display_order'])
-                                              ? $this->preferences['display_order']
-                                              : $this->preferences['order']),
-                          'id_categorie' => $this->_getCategoriesIds(),
-                          'events_only' => true,
-                          'event_date' => $this->date,
-                          'id_bib' => $this->id_bib,
-                          'id_lieu' => $id_lieu,
-                          'custom_fields' => $this->getCustomFields(),
-                          'published' => $this->date >= strftime('%Y-%m', $this->getTimeSource()->time())],
+                         $preferences,
                          $extra_prefs);
 
     $articles = Class_Article::getArticlesByPreferences($prefs);
diff --git a/tests/application/modules/opac/controllers/CmsControllerCalendarActionTest.php b/tests/application/modules/opac/controllers/CmsControllerCalendarActionTest.php
index 397d59cab3dd8129a017ddb1aa1a597cf6a258c0..442f5cd70755e830bba4ef74722a6dad547a0210 100644
--- a/tests/application/modules/opac/controllers/CmsControllerCalendarActionTest.php
+++ b/tests/application/modules/opac/controllers/CmsControllerCalendarActionTest.php
@@ -687,6 +687,104 @@ class CmsControllerCalendarActionHeaderTest extends AbstractControllerTestCase {
 }
 
 
+class CmsControllerCalendarActionWithIdItemsTest extends AbstractControllerTestCase {
+  protected $_storm_default_to_volatile = true;
+
+  public function setUp() {
+    parent::setUp();
+
+    $cfg_accueil = [
+                    'modules' => [
+                                  '1' => [
+                                          'division' => '1',
+                                          'type_module' => 'CALENDAR',
+                                          'preferences' => [
+                                                            'titre' => 'Rendez-vous',
+                                                            'rss_avis' => false,
+                                                            'id_categorie' => '12-2',
+                                                            'id_items' => '100-102',
+                                                            'display_cat_select' => true,
+                                                            'enabled_filters' => 'date;place;custom_field_2;zork',
+                                                            'display_event_info' => 'none',
+                                          ]
+                                  ]
+                    ],
+                    'options' => []
+    ];
+
+    $time_source = new TimeSourceForTest('2021-12-14 09:00:00');
+    ZendAfi_View_Helper_Calendar_Table::setTimeSource($time_source);
+    ZendAfi_View_Helper_CalendarContent::setTimeSource($time_source);
+    Class_Calendar::setTimeSource($time_source);
+
+    $this->fixture(Class_Article::class,
+                   ['id' => 100,
+                    'titre' => 'Les toiles de Nathalie Novi',
+                    'events_debut' => '2021-12-01',
+                    'events_fin' => '2021-12-31',
+                    'categorie' => '',
+                    'contenu' => 'L\'ensemble des oeuvres de Nathalie Novi'
+                   ]);
+
+    $this->fixture(Class_Article::class,
+                   ['id' => 101,
+                    'titre' => 'Sécurité',
+                    'events_debut' => '2021-12-01',
+                    'events_fin' => '2021-12-31',
+                    'categorie' => '',
+                    'contenu' => 'Se protéger contre les spywhare'
+                   ]);
+
+    $this->fixture(Class_Article::class,
+                   ['id' => 102,
+                    'titre' => 'Exposition Nathalie Novi',
+                    'events_debut' => '2021-12-01',
+                    'events_fin' => '2021-12-31',
+                    'categorie' => '',
+                    'contenu' => 'Toutes les expositions de l\'artiste'
+                   ]);
+
+    $this->fixture(Class_Profil::class,
+                   ['id' => 4,
+                    'browser' => 'opac',
+                    'libelle' => 'Rendez-vous',
+                    'cfg_accueil' => $cfg_accueil]);
+
+    $callback = function ($preferences){
+      if (isset($preferences['id_items'])
+          && ($preferences['id_items'] === "100-102"))
+        return [Class_Article::find(100),
+                Class_Article::find(102)];
+      return [Class_Article::find(100),
+              Class_Article::find(101),
+              Class_Article::find(102)];
+    };
+
+    $this->onLoaderOfModel(Class_Article::class)
+         ->whenCalled('getArticlesByPreferences')
+         ->willDo($callback);
+
+    $this->dispatch('/index/index/id_profil/4');
+  }
+
+
+  /** @test */
+  public function agendaShouldDisplayToilesNathalieNovi() {
+    $this->assertXPathContentContains('//a[@class = "calendar_event_title"]', 'Les toiles de Nathalie Novi');
+  }
+
+
+  /** @test */
+  public function agendaShouldDisplayExpositionNathalieNovi() {
+    $this->assertXPathContentContains('//a[@class = "calendar_event_title"]', 'Exposition Nathalie Novi');
+  }
+
+
+  /** @test */
+  public function agendaShouldNotContainsSecurite() {
+    $this->assertNotXPathContentContains('//a[@class = "calendar_event_title"]', 'Sécurité');
+  }
+}
 
 
 class CmsControllerCalendarActionAjaxLinkTest extends AbstractControllerTestCase {