diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd7ac080d8e7d7061bf57da0ba972fffe84248d6..aee518eab2c722aec9921360974e9d77392a21fd 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
 ## Nouveautés
 
 * Les modèles de pièces justificatives peuvent être téléchargés en fonction de l'année courante (paramètre :annee à ajouter dans l'URL qui sera remplacé dynamiquement par l'année en cours)
+* Les vues matérialisées sont recalculées à chaque mise à jour
 
 ## Notes de mise à jour
 
diff --git a/admin/actions/update-bdd.php b/admin/actions/update-bdd.php
index c4d670ce0394783e9377a8c4d4aee16253744d0e..c7b07396248efdf8e00bc65d449a54e4e5f785e9 100644
--- a/admin/actions/update-bdd.php
+++ b/admin/actions/update-bdd.php
@@ -63,6 +63,8 @@ $dataGen->update();
 $c->println('');
 $mm->migration('post');
 
+// Recalcul des vues matérialisées
+$bdd->refreshMaterializedViews();
 
 // Néttoyage des caches
 $oa->run('clear-cache');
\ No newline at end of file
diff --git a/admin/src/BddAdmin/Bdd.php b/admin/src/BddAdmin/Bdd.php
index cd3cd157423ef8c45aabd82b4b05b57efef18753..b3d720f1023b3135190ca9fb38f6ca6024ed3516 100644
--- a/admin/src/BddAdmin/Bdd.php
+++ b/admin/src/BddAdmin/Bdd.php
@@ -680,6 +680,29 @@ class Bdd
 
 
 
+    public function refreshMaterializedViews($ddl = null)
+    {
+        if (!$ddl) {
+            $ddl = $this->materializedView()->get();
+        } else {
+            $ddl = Ddl::normalize($ddl)->get(Ddl::MATERIALIZED_VIEW);
+            if (!$ddl) $ddl = [];
+        }
+
+        $this->logBegin("Recalcul de toutes les vues matérialisées");
+        foreach ($ddl as $mv) {
+            try {
+                $this->logMsg("Vue matérialisée " . $mv['name'] . " ...", true);
+                $this->materializedView()->refresh($mv);
+            } catch (\Throwable $e) {
+                $this->logError($e);
+            }
+        }
+        $this->logEnd();
+    }
+
+
+
     /**
      * @return array
      * @throws BddCompileException
diff --git a/admin/src/BddAdmin/Driver/Oracle/MaterializedViewManager.php b/admin/src/BddAdmin/Driver/Oracle/MaterializedViewManager.php
index 0e9e9d9271edafb012fe405c24fd0da5d2f31c0d..68805800578af0b4ed3f8eda6e5a9d1422fc6899 100644
--- a/admin/src/BddAdmin/Driver/Oracle/MaterializedViewManager.php
+++ b/admin/src/BddAdmin/Driver/Oracle/MaterializedViewManager.php
@@ -100,4 +100,18 @@ class MaterializedViewManager extends AbstractManager implements MaterializedVie
         $this->drop($oldName);
         $this->create($new);
     }
+
+
+
+    /**
+     * @param string|array $name
+     */
+    public function refresh($name)
+    {
+        if (is_array($name)) {
+            $name = $name['name'];
+        }
+
+        $this->addQuery("BEGIN DBMS_SNAPSHOT.REFRESH( '$name','C'); END;", 'Mise à jour de la vue matérialisée ' . $name);
+    }
 }
\ No newline at end of file
diff --git a/admin/src/BddAdmin/Manager/MaterializedViewManagerInteface.php b/admin/src/BddAdmin/Manager/MaterializedViewManagerInteface.php
index 1ee33bbdca19d7ebb1b599dca47ddbec77546c18..5fe6afbe45d507c1a490b813899b8d85e7ed9ef5 100644
--- a/admin/src/BddAdmin/Manager/MaterializedViewManagerInteface.php
+++ b/admin/src/BddAdmin/Manager/MaterializedViewManagerInteface.php
@@ -4,5 +4,8 @@ namespace BddAdmin\Manager;
 
 interface MaterializedViewManagerInteface extends ManagerInterface
 {
-
+    /**
+     * @param string|array $name
+     */
+    public function refresh($name);
 }