diff --git a/module/Plafond/src/Service/PlafondService.php b/module/Plafond/src/Service/PlafondService.php
index 3f923e1c5c9ed42ad0f9c1e2731fcff664d0835a..aa1ee7205b8c23b0c13bd95617303c04c054aa8a 100755
--- a/module/Plafond/src/Service/PlafondService.php
+++ b/module/Plafond/src/Service/PlafondService.php
@@ -107,25 +107,43 @@ class PlafondService extends AbstractEntityService
 
 
 
-    /**
-     * @param TypeVolumeHoraire                                                          $typeVolumeHoraire
-     * @param Structure|Intervenant|ElementPedagogique|VolumeHoraire|FonctionReferentiel $entity
-     *
-     * @return PlafondControle[]
-     */
     public function derogations(TypeVolumeHoraire $typeVolumeHoraire, Intervenant $intervenant): array
     {
-        $sqls = [];
-
-        $sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, null, false, false, false);
-        //$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::STRUCTURE, false, false, false);
-        //$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::ELEMENT, false, false, false);
-        //$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::REFERENTIEL, false, false, false);
-        //$sqls[] = $this->makeControleQuery($typeVolumeHoraire, $intervenant, PlafondPerimetre::VOLUME_HORAIRE, false, false, false);
+        $sql = "
+        SELECT
+          p.id id,
+          p.numero numero,
+          p.libelle libelle,
+          p.message message,
+          pp.code perimetre,
+          pe.code etat,
+          CASE pe.code WHEN 'bloquant' THEN 1 ELSE 0 END bloquant,
+          CASE WHEN COALESCE(tpi.heures,0) - ps.heures > 0 THEN 1 ELSE 0 END depassement,
+          COALESCE(tpi.heures,0) heures,
+          ps.heures plafond,
+          COALESCE(pd.heures,0) derogation
+        FROM
+          intervenant i
+          JOIN type_volume_horaire tvh ON 1=1
+          JOIN statut s ON s.id = i.statut_id
+          JOIN plafond_statut ps ON ps.statut_id = s.id AND ps.histo_destruction IS NULL
+          JOIN plafond p ON p.id = ps.plafond_id
+          JOIN plafond_perimetre pp ON pp.id = p.plafond_perimetre_id
+          JOIN plafond_etat pe ON pe.id = CASE tvh.code WHEN 'PREVU' THEN ps.plafond_etat_prevu_id WHEN 'REALISE' THEN ps.plafond_etat_realise_id ELSE 0 END
+          LEFT JOIN tbl_plafond_intervenant tpi ON tpi.intervenant_id = i.id AND tpi.plafond_id = p.id AND tpi.type_volume_horaire_id = tvh.id
+          LEFT JOIN plafond_derogation pd ON pd.histo_destruction IS NULL AND pd.intervenant_id = i.id AND pd.plafond_id = p.id
+        WHERE
+          i.id = :intervenant
+          AND tvh.id = :typeVolumeHoraire
+          AND pe.code NOT IN ('desactive', 'indicateur')
+        ";
 
-        $sql = implode("\n\nUNION ALL\n\n", $sqls);
+        $params = [
+            'intervenant' => $intervenant->getId(),
+            'typeVolumeHoraire' => $typeVolumeHoraire->getId(),
+        ];
+        $res = $this->getEntityManager()->getConnection()->fetchAllAssociative($sql, $params);
 
-        $res          = $this->getEntityManager()->getConnection()->fetchAllAssociative($sql);
         $depassements = [];
         foreach ($res as $r) {
             $depassements[] = PlafondControle::fromArray($r);