diff --git a/module/Application/src/Application/Controller/ServiceController.php b/module/Application/src/Application/Controller/ServiceController.php
index af137463cdfce51165b7a865b97c9ddf60bec72d..d23dc95b4106dc9dda944f2c58f1ea5cf5a4a3f5 100644
--- a/module/Application/src/Application/Controller/ServiceController.php
+++ b/module/Application/src/Application/Controller/ServiceController.php
@@ -343,6 +343,7 @@ class ServiceController extends AbstractController
         }
         $service       = $this->getServiceService();
         $form          = $this->getFormServiceSaisie();
+        $form->setTypeVolumeHoraire($typeVolumeHoraire);
         $element       = $this->context()->elementPedagogiqueFromPost('element');
         $etablissement = $this->context()->etablissementFromPost();
 
@@ -464,6 +465,7 @@ class ServiceController extends AbstractController
         }
         $service = $this->getServiceService();
         $form    = $this->getFormServiceSaisie();
+        $form->setTypeVolumeHoraire($typeVolumeHoraire);
 
         $intervenant = $this->getServiceLocalContext()->getIntervenant();
 
diff --git a/module/Application/src/Application/Controller/VolumeHoraireController.php b/module/Application/src/Application/Controller/VolumeHoraireController.php
index 9d8ebda1761a4144a151365dd091f90c669c2807..15788dfbcf0f0534a6068b36a7023c4d4e2eb8a9 100644
--- a/module/Application/src/Application/Controller/VolumeHoraireController.php
+++ b/module/Application/src/Application/Controller/VolumeHoraireController.php
@@ -29,101 +29,106 @@ class VolumeHoraireController extends AbstractController
     use WorkflowServiceAwareTrait;
     use PlafondProcessusAwareTrait;
 
+
+
     public function listeAction()
     {
         $this->em()->getFilters()->enable('historique')->init([
-            \Application\Entity\Db\VolumeHoraire::class
+            \Application\Entity\Db\VolumeHoraire::class,
         ]);
         $service = $this->getEvent()->getParam('service');
-        /* @var $service Service  */
-        if (! $service) throw new RuntimeException("Service non spécifié ou introuvable.");
+        /* @var $service Service */
+        if (!$service) throw new RuntimeException("Service non spécifié ou introuvable.");
 
         $typeVolumeHoraire = $this->context()->typeVolumeHoraireFromQueryPost('type-volume-horaire');
 
         $service->setTypeVolumeHoraire($typeVolumeHoraire);
-        $readOnly           = 1 == (int)$this->params()->fromQuery('read-only', 0);
+        $readOnly = 1 == (int)$this->params()->fromQuery('read-only', 0);
+
+        $volumeHoraireListe = $service->getVolumeHoraireListe()->setTypeVolumehoraire($typeVolumeHoraire);
+        $semestriel         = $this->getServiceContext()->isModaliteServicesSemestriel($typeVolumeHoraire);
 
-        $volumeHoraireListe = $service->getVolumeHoraireListe()->setTypeVolumehoraire( $typeVolumeHoraire );
-        $semestriel = $this->getServiceContext()->isModaliteServicesSemestriel();
         return compact('volumeHoraireListe', 'readOnly', 'semestriel');
     }
 
+
+
     public function saisieAction()
     {
         $this->em()->getFilters()->enable('historique')->init([
             \Application\Entity\Db\VolumeHoraire::class,
-            \Application\Entity\Db\MotifNonPaiement::class
+            \Application\Entity\Db\MotifNonPaiement::class,
         ]);
 
-        $service            = $this->context()->serviceFromRoute();
-        $typeVolumehoraire  = $this->context()->typeVolumeHoraireFromQueryPost('type-volume-horaire');
-        $periode            = $this->context()->periodeFromQueryPost();
-        $typeIntervention   = $this->context()->typeInterventionFromQueryPost('type-intervention');
-        $errors = [];
+        $service           = $this->context()->serviceFromRoute();
+        $typeVolumehoraire = $this->context()->typeVolumeHoraireFromQueryPost('type-volume-horaire');
+        $periode           = $this->context()->periodeFromQueryPost();
+        $typeIntervention  = $this->context()->typeInterventionFromQueryPost('type-intervention');
+        $errors            = [];
 
 
         $canViewMNP = $this->isAllowed($service->getIntervenant(), Privileges::MOTIF_NON_PAIEMENT_VISUALISATION);
         $canEditMNP = $this->isAllowed($service->getIntervenant(), Privileges::MOTIF_NON_PAIEMENT_EDITION);
 
 
-        if ($canViewMNP){
+        if ($canViewMNP) {
             $tousMotifsNonPaiement = $this->params()->fromQuery('tous-motifs-non-paiement');
-            if ($tousMotifsNonPaiement == '1'){
-                $motifNonPaiement   = false;
-            }else{
-                $motifNonPaiement   = $this->context()->motifNonPaiementFromQueryPost('motif-non-paiement');
+            if ($tousMotifsNonPaiement == '1') {
+                $motifNonPaiement = false;
+            } else {
+                $motifNonPaiement = $this->context()->motifNonPaiementFromQueryPost('motif-non-paiement');
             }
             $ancienMotifNonPaiement = $this->context()->motifNonPaiementFromQueryPost('ancien-motif-non-paiement', $motifNonPaiement);
-        }else{
-            $motifNonPaiement   = false;
+        } else {
+            $motifNonPaiement       = false;
             $ancienMotifNonPaiement = false;
         }
 
 
-
         /* @var $service \Application\Entity\Db\Service */
-        $service->setTypeVolumeHoraire( $typeVolumehoraire );
+        $service->setTypeVolumeHoraire($typeVolumehoraire);
         $volumeHoraireList = $service->getVolumeHoraireListe($periode, $typeIntervention);
         $volumeHoraireList->setMotifNonPaiement($motifNonPaiement);
 
         $form = $this->getFormVolumeHoraireSaisie();
-        $form->setViewMNP( $canViewMNP );
-        $form->setEditMNP( $canEditMNP );
+        $form->setViewMNP($canViewMNP);
+        $form->setEditMNP($canEditMNP);
 
         $request = $this->getRequest();
-        if ($request->isPost()){
+        if ($request->isPost()) {
             $heures = StringFromFloat::run($request->getPost()['heures']);
-            try{
+            try {
                 $volumeHoraireList->setHeures($heures, $motifNonPaiement, $ancienMotifNonPaiement);
-            }catch(\Exception $e){
+            } catch (\Exception $e) {
                 $errors[] = $e->getMessage();
             }
         }
-        $form->bind( $volumeHoraireList );
-        if ($request->isPost()){
-            if ($form->isValid()){
-                try{
+        $form->bind($volumeHoraireList);
+        if ($request->isPost()) {
+            if ($form->isValid()) {
+                try {
                     $this->getProcessusPlafond()->beginTransaction();
                     $this->getServiceService()->save($service);
                     $this->updateTableauxBord($service->getIntervenant());
                     $this->getProcessusPlafond()->endTransaction($service->getIntervenant(), $typeVolumehoraire);
-                }catch(\Exception $e){
-                    $e = DbException::translate($e);
+                } catch (\Exception $e) {
+                    $e        = DbException::translate($e);
                     $errors[] = $e->getMessage();
                 }
-            }else{
+            } else {
                 $errors[] = 'La validation du formulaire a échoué. L\'enregistrement des données n\'a donc pas été fait.';
             }
         }
 
-        $terminal = $this->getRequest()->isXmlHttpRequest();
+        $terminal  = $this->getRequest()->isXmlHttpRequest();
         $viewModel = new \Zend\View\Model\ViewModel();
         $viewModel
-                ->setTemplate('application/volume-horaire/saisie')
-                ->setVariables(compact('form', 'errors', 'ancienMotifNonPaiement'));
+            ->setTemplate('application/volume-horaire/saisie')
+            ->setVariables(compact('form', 'errors', 'ancienMotifNonPaiement'));
         if ($terminal) {
             return $this->popoverInnerViewModel($viewModel, "Saisie d'heures d'enseignement", false);
         }
+
         return $viewModel;
     }
 
@@ -132,7 +137,7 @@ class VolumeHoraireController extends AbstractController
     private function updateTableauxBord(Intervenant $intervenant)
     {
         $this->getServiceWorkflow()->calculerTableauxBord([
-            'formule','validation_enseignement','service','service_saisie','piece_jointe_fournie'
+            'formule', 'validation_enseignement', 'service', 'service_saisie', 'piece_jointe_fournie',
         ], $intervenant);
     }
 
diff --git a/module/Application/src/Application/Form/Service/Saisie.php b/module/Application/src/Application/Form/Service/Saisie.php
index 11c300af2aa3b8dc17efda94566f8e333f5ec5b0..0ff231ff171189ad93317faec14e0f4457da1595 100644
--- a/module/Application/src/Application/Form/Service/Saisie.php
+++ b/module/Application/src/Application/Form/Service/Saisie.php
@@ -4,6 +4,7 @@ namespace Application\Form\Service;
 
 use Application\Entity\Db\Periode;
 use Application\Entity\Db\Service;
+use Application\Entity\Db\Traits\TypeVolumeHoraireAwareTrait;
 use Application\Form\AbstractForm;
 use Application\Form\Service\Traits\SaisieFieldsetAwareTrait;
 use Application\Form\VolumeHoraire\Traits\SaisieMultipleFieldsetAwareTrait;
@@ -20,6 +21,7 @@ use Zend\Stdlib\Hydrator\HydratorInterface;
  */
 class Saisie extends AbstractForm
 {
+    use TypeVolumeHoraireAwareTrait;
     use PeriodeServiceAwareTrait;
     use SaisieFieldsetAwareTrait;
     use SaisieMultipleFieldsetAwareTrait;
diff --git a/module/Application/src/Application/Service/ContextService.php b/module/Application/src/Application/Service/ContextService.php
index 02b63ec3b479830a4b2df66e4d44bde9cb6a82ee..fc85fd73d91744fcf967d63d564f5bc19c41e25d 100644
--- a/module/Application/src/Application/Service/ContextService.php
+++ b/module/Application/src/Application/Service/ContextService.php
@@ -187,7 +187,7 @@ class ContextService extends AbstractService
      */
     public function isModaliteServicesSemestriel($typeVolumeHoraire = TypeVolumeHoraire::CODE_PREVU): bool
     {
-        return $this->getModaliteServices() == Parametre::SERVICES_MODALITE_SEMESTRIEL;
+        return $this->getModaliteServices($typeVolumeHoraire) == Parametre::SERVICES_MODALITE_SEMESTRIEL;
     }
 
 
diff --git a/module/Application/src/Application/View/Helper/Service/Liste.php b/module/Application/src/Application/View/Helper/Service/Liste.php
index dc78da31b02f229cb251da055738d240825659a0..5dd8e2ccbc70de964f605a0ddeecbda27adc092e 100644
--- a/module/Application/src/Application/View/Helper/Service/Liste.php
+++ b/module/Application/src/Application/View/Helper/Service/Liste.php
@@ -296,7 +296,7 @@ class Liste extends AbstractViewHelper
     {
         $ligneView = $this->getView()->serviceLigne($this, $service);
 
-        if ($this->getServiceContext()->isModaliteServicesSemestriel()){
+        if ($this->getServiceContext()->isModaliteServicesSemestriel($this->getTypeVolumeHoraire())){
             $volumeHoraireListe = $this->getView()->volumeHoraireListe($service->getVolumeHoraireListe());
             /* @var $volumeHoraireListe \Application\View\Helper\VolumeHoraire\Liste */
         }else{
diff --git a/module/Application/src/Application/View/Helper/Service/SaisieForm.php b/module/Application/src/Application/View/Helper/Service/SaisieForm.php
index 7966ae1849a4b4bb61572d6ca5368f5590602673..e572d93d237d000a068546453e2b5d11d8c763d4 100644
--- a/module/Application/src/Application/View/Helper/Service/SaisieForm.php
+++ b/module/Application/src/Application/View/Helper/Service/SaisieForm.php
@@ -2,7 +2,6 @@
 
 namespace Application\View\Helper\Service;
 
-use Application\Entity\Db\Parametre;
 use Application\Entity\Db\Periode;
 use Application\Entity\Db\Service;
 use Application\Entity\Db\TypeVolumeHoraire;
@@ -130,7 +129,7 @@ class SaisieForm extends AbstractViewHelper
 
     public function renderVolumesHoraires()
     {
-        if (!$this->getServiceContext()->isModaliteServicesSemestriel()){
+        if (!$this->getServiceContext()->isModaliteServicesSemestriel($this->form->getTypeVolumeHoraire())){
             return null;
         }
         $res = '';
diff --git a/module/Application/view/application/service/volumes-horaires-refresh.phtml b/module/Application/view/application/service/volumes-horaires-refresh.phtml
index bf78c0f5461db131664bf92964df4974ea8a1c94..b3d8296a2485611d4f86d4f30d372902c361664b 100644
--- a/module/Application/view/application/service/volumes-horaires-refresh.phtml
+++ b/module/Application/view/application/service/volumes-horaires-refresh.phtml
@@ -1,3 +1,7 @@
 <?php
 
+/**
+ * @var $this \Application\View\Renderer\PhpRenderer
+ */
+
 echo $this->serviceSaisieForm( $form )->renderVolumesHoraires();
\ No newline at end of file