diff --git a/src/UnicaenIndicateur/Controller/IndicateurController.php b/src/UnicaenIndicateur/Controller/IndicateurController.php
index 7a5942bf046efda7785d3b2c72652111425d2c07..f73be5fd36811216d99c305d1a4cdcf86ff8df1b 100644
--- a/src/UnicaenIndicateur/Controller/IndicateurController.php
+++ b/src/UnicaenIndicateur/Controller/IndicateurController.php
@@ -10,6 +10,7 @@ use UnicaenIndicateur\Form\Indicateur\IndicateurFormAwareTrait;
 use UnicaenIndicateur\Service\Abonnement\AbonnementServiceAwareTrait;
 use UnicaenIndicateur\Service\Indicateur\IndicateurServiceAwareTrait;
 use UnicaenApp\View\Model\CsvModel;
+use UnicaenIndicateur\Service\Perimetre\PerimetreServiceAwareTrait;
 use UnicaenMail\Service\Mail\MailServiceAwareTrait;
 use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
 use Laminas\Http\Request;
@@ -21,6 +22,7 @@ class IndicateurController extends AbstractActionController {
     use UserServiceAwareTrait;
     use AbonnementServiceAwareTrait;
     use MailServiceAwareTrait;
+    use PerimetreServiceAwareTrait;
 
     use IndicateurFormAwareTrait;
 
@@ -63,18 +65,28 @@ class IndicateurController extends AbstractActionController {
         $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this);
         $mails = $this->getMailService()->getMailsByMotClef($indicateur->generateTag());
 
-        $userStructurePerimetre = [12,5];
-        $userRolePerimetre = [1,15];
-
-        $userPerimetre = null;
-        switch ($indicateur->getPerimetre()) {
-            case Indicateur::PERIMETRE_STRUCTURE:
-                $userPerimetre = $userStructurePerimetre;
-                break;
-            case Indicateur::PERIMETRE_ROLE:
-                $userPerimetre = $userRolePerimetre;
-                break;
-        }
+        $user = $this->getUserService()->getConnectedUser();
+        $role = $this->getUserService()->getConnectedRole();
+
+        $perimetres = $this->getPerimetreService()->getPerimetres($user, $role);
+
+        $indicateurPerimetre = $indicateur->getPerimetre();
+        $perimetreValides = array_filter($perimetres, function(string $p) use ($indicateurPerimetre) {
+            return (strtolower(explode('_', $p)[0]) === strtolower($indicateurPerimetre));
+        });
+        $userPerimetre = array_map(function ($p) { return explode('_', $p)[1];}, $perimetreValides);
+
+//        $userPerimetre = null;
+//        switch ($indicateur->getPerimetre()) {
+//            case Indicateur::PERIMETRE_STRUCTURE:
+////                $userPerimetre = $user->getPerimetreStructure();
+//                $userPerimetre = $userStructurePerimetre;
+//                break;
+//            case Indicateur::PERIMETRE_ROLE:
+////                $userPerimetre = $user->getPerimetreRole();
+//                $userPerimetre = $userRolePerimetre;
+//                break;
+//        }
 
         $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur->getViewId());
         if ($exists === true) $result = $this->getIndicateurService()->getIndicateurData($indicateur, $userPerimetre);
diff --git a/src/UnicaenIndicateur/Controller/IndicateurControllerFactory.php b/src/UnicaenIndicateur/Controller/IndicateurControllerFactory.php
index e262a73994b415c6a8652217ac8538d48b2a96aa..8badfef1bfc5f52dfc1fe34acce6739259965cc7 100644
--- a/src/UnicaenIndicateur/Controller/IndicateurControllerFactory.php
+++ b/src/UnicaenIndicateur/Controller/IndicateurControllerFactory.php
@@ -8,6 +8,7 @@ use UnicaenIndicateur\Form\Indicateur\IndicateurForm;
 use UnicaenIndicateur\Service\Abonnement\AbonnementService;
 use UnicaenIndicateur\Service\Indicateur\IndicateurService;
 use Interop\Container\ContainerInterface;
+use UnicaenIndicateur\Service\Perimetre\PerimetreServiceInterface;
 use UnicaenMail\Service\Mail\MailService;
 use UnicaenUtilisateur\Service\User\UserService;;
 
@@ -26,12 +27,17 @@ class IndicateurControllerFactory {
          * @var IndicateurService $indicateurService
          * @var MailService $mailService
          * @var UserService $userService
+         * @var PerimetreServiceInterface $perimetreService
          */
         $abonnementService = $container->get(AbonnementService::class);
         $indicateurService = $container->get(IndicateurService::class);
         $mailService = $container->get(MailService::class);
         $userService = $container->get(UserService::class);
 
+        $config = $container->get('config');
+        $perimetreServiceKey = $container->get($config['unicaen-indicateur']['perimetreService']);
+        $perimetreService = $container->get($perimetreServiceKey::class);
+
         /**
          * @var IndicateurForm $indicateurForm
          */
@@ -41,6 +47,7 @@ class IndicateurControllerFactory {
         $controller->setAbonnementService($abonnementService);
         $controller->setIndicateurService($indicateurService);
         $controller->setMailService($mailService);
+        $controller->setPerimetreService($perimetreService);
         $controller->setUserService($userService);
         $controller->setIndicateurForm($indicateurForm);
         return $controller;
diff --git a/src/UnicaenIndicateur/Service/Perimetre/PerimetreServiceAwareTrait.php b/src/UnicaenIndicateur/Service/Perimetre/PerimetreServiceAwareTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..ba206e4892f55f813daa9a238017f459b4e1d1ee
--- /dev/null
+++ b/src/UnicaenIndicateur/Service/Perimetre/PerimetreServiceAwareTrait.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace UnicaenIndicateur\Service\Perimetre;
+
+use Application\Service\Perimetre\PerimetreService;
+
+trait PerimetreServiceAwareTrait
+{
+    private PerimetreService $perimetreService;
+
+    public function getPerimetreService(): PerimetreService
+    {
+        return $this->perimetreService;
+    }
+
+    public function setPerimetreService(PerimetreService $perimetreService): void
+    {
+        $this->perimetreService = $perimetreService;
+    }
+
+
+}
\ No newline at end of file
diff --git a/src/UnicaenIndicateur/Service/Perimetre/PerimetreServiceInterface.php b/src/UnicaenIndicateur/Service/Perimetre/PerimetreServiceInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..f099ec6a7a75c46a19010e54373a708cd0c7069a
--- /dev/null
+++ b/src/UnicaenIndicateur/Service/Perimetre/PerimetreServiceInterface.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace UnicaenIndicateur\Service\Perimetre;
+
+use UnicaenUtilisateur\Entity\Db\AbstractRole;
+use UnicaenUtilisateur\Entity\Db\AbstractUser;
+
+interface PerimetreServiceInterface {
+
+    public function getPerimetres(AbstractUser $user, AbstractRole $role) : array;
+}
\ No newline at end of file