diff --git a/config/merged/indicateur.config.php b/config/merged/indicateur.config.php
index e308a6147cad602dff26d9cf2def221f2892c23c..25f06bf7141bbe6ffa7d8ebdd48304e9034db459 100644
--- a/config/merged/indicateur.config.php
+++ b/config/merged/indicateur.config.php
@@ -28,6 +28,7 @@ return [
                         'modifier',
                         'detruire',
                         'exporter',
+                        'regenerer',
                     ],
                     'privileges' => [
                         IndicateurPrivileges::AFFICHER,
@@ -87,6 +88,17 @@ return [
                         ],
                         'may_terminate' => true,
                     ],
+                    'regenerer' => [
+                        'type'  => Segment::class,
+                        'options' => [
+                            'route'    => '/regenerer/:indicateur',
+                            'defaults' => [
+                                'controller' => IndicateurController::class,
+                                'action'     => 'regenerer',
+                            ],
+                        ],
+                        'may_terminate' => true,
+                    ],
                     'creer' => [
                         'type'  => Literal::class,
                         'options' => [
diff --git a/src/UnicaenIndicateur/Controller/IndicateurController.php b/src/UnicaenIndicateur/Controller/IndicateurController.php
index 819a298ea99084a8558caebb842e501eee25e668..2597969e8096752ee692831b5d9c0a236c839a0f 100644
--- a/src/UnicaenIndicateur/Controller/IndicateurController.php
+++ b/src/UnicaenIndicateur/Controller/IndicateurController.php
@@ -123,6 +123,18 @@ class IndicateurController extends AbstractActionController {
         return $this->redirect()->toRoute('indicateurs', [], [], true);
     }
 
+    public function regenererAction() : Response
+    {
+        $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this);
+        $indicateur->setDernierRafraichissement(new DateTime());
+        $this->getIndicateurService()->createView($indicateur);
+        $this->getIndicateurService()->update($indicateur);
+
+        $retour = $this->params()->fromQuery('retour');
+        if ($retour) return $this->redirect()->toUrl($retour);
+        return $this->redirect()->toRoute('indicateur/afficher', ['indicateur' => $indicateur->getId()], [], true);
+    }
+
     public function exporterAction(): CsvModel
     {
         $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this);
diff --git a/src/UnicaenIndicateur/Entity/Db/Indicateur.php b/src/UnicaenIndicateur/Entity/Db/Indicateur.php
index 87189b981cb679415d454f62562663e2a8da09da..0d1d9dbaf17376fa8fd779f506ac2e5b31e79559 100644
--- a/src/UnicaenIndicateur/Entity/Db/Indicateur.php
+++ b/src/UnicaenIndicateur/Entity/Db/Indicateur.php
@@ -32,7 +32,7 @@ class Indicateur {
         return $this->id;
     }
 
-    public function getTitre() : string
+    public function getTitre() : ?string
     {
         return $this->titre;
     }
@@ -42,7 +42,7 @@ class Indicateur {
         $this->titre = $titre;
     }
 
-    public function getDescription() : string
+    public function getDescription() : ?string
     {
         return $this->description;
     }
@@ -52,7 +52,7 @@ class Indicateur {
         $this->description = $description;
     }
 
-    public function getRequete() : string
+    public function getRequete() : ?string
     {
         return $this->requete;
     }
@@ -72,7 +72,7 @@ class Indicateur {
         $this->dernierRafraichissement = $dernierRafraichissement;
     }
 
-    public function getViewId() : string
+    public function getViewId() : ?string
     {
         return $this->viewId;
     }
diff --git a/view/unicaen-indicateur/indicateur/afficher.phtml b/view/unicaen-indicateur/indicateur/afficher.phtml
index 32259265daeb310e1a2df480bdbe9164531f08f4..b084b2c73ff6f0a9dd5ab65b126128fe7d5829cc 100644
--- a/view/unicaen-indicateur/indicateur/afficher.phtml
+++ b/view/unicaen-indicateur/indicateur/afficher.phtml
@@ -19,7 +19,18 @@ use UnicaenIndicateur\Entity\Db\Indicateur;
 
 <?php if ($exists !== true) : ?>
     <div class="alert alert-danger">
-        La vue matérialisée associée à l'indicateur ne semble pas exister.
+        <div class="row">
+            <div class="col-md-9">
+                La vue matérialisée associée à l'indicateur ne semble pas exister.
+            </div>
+            <div class="col-md-3">
+                <?php /** @see \UnicaenIndicateur\Controller\IndicateurController::regenererAction() */?>
+                <a href="<?php echo $this->url('indicateur/regenerer', ['indicateur' => $indicateur->getId()], [], true); ?>" class="btn btn-primary">
+                    <span class="icon icon-synchroniser"></span>
+                    Regénérer la vue associée
+                </a>
+            </div>
+        </div>
     </div>
 <?php else : ?>
     <div class="row">