diff --git a/Module.php b/Module.php
index 2383d737233cbd55e2e38e7359909e8047f20a11..c57cf1be6626e39e2b6c1b3940fa9237b837990e 100755
--- a/Module.php
+++ b/Module.php
@@ -2,11 +2,11 @@
 
 namespace UnicaenRenderer;
 
-use Zend\Config\Factory as ConfigFactory;
-use Zend\Mvc\ModuleRouteListener;
-use Zend\Mvc\MvcEvent;
-use Zend\Stdlib\ArrayUtils;
-use Zend\Stdlib\Glob;
+use Laminas\Mvc\ModuleRouteListener;
+use Laminas\Mvc\MvcEvent;
+use Laminas\Stdlib\ArrayUtils;
+use Laminas\Stdlib\Glob;
+use Laminas\Config\Factory as ConfigFactory;
 
 class Module
 {
@@ -16,6 +16,17 @@ class Module
         $eventManager        = $e->getApplication()->getEventManager();
         $moduleRouteListener = new ModuleRouteListener();
         $moduleRouteListener->attach($eventManager);
+
+        /* Active un layout spécial si la requête est de type AJAX. Valable pour TOUS les modules de l'application. */
+        $eventManager->getSharedManager()->attach('Laminas\Mvc\Controller\AbstractActionController', 'dispatch',
+            function (MvcEvent $e) {
+                $request = $e->getRequest();
+                if ($request instanceof HttpRequest && $request->isXmlHttpRequest()) {
+                    $e->getTarget()->layout('layout/ajax.phtml');
+                }
+            }
+        );
+
     }
 
     public function getConfig()
@@ -35,7 +46,7 @@ class Module
     public function getAutoloaderConfig()
     {
         return array(
-            'Zend\Loader\StandardAutoloader' => array(
+            'Laminas\Loader\StandardAutoloader' => array(
                 'namespaces' => array(
                     __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                 ),
diff --git a/composer.json b/composer.json
index f2500b375a7b33f97bfe1f783fb9cb126a2bf8c2..6aeea0a277fb201af8b1543564b3a354858c7ca7 100755
--- a/composer.json
+++ b/composer.json
@@ -1,21 +1,21 @@
 {
-  "name": "unicaen/renderer",
-  "description": "Module de rendu de texte avec templates et macros",
-  "repositories": [
-    {
-      "type": "composer",
-      "url": "https://gest.unicaen.fr/packagist"
-    }
-  ],
-  "require": {
-    "unicaen/app":                                  "^3.0",
-    "unicaen/privilege":                            "dev-master"
-  },
-  "autoload": {
-    "psr-0": {
+    "name": "unicaen/renderer",
+    "description": "Module de rendu de texte avec templates et macros",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "https://gest.unicaen.fr/packagist"
+        }
+    ],
+    "require": {
+        "unicaen/app": "^4.0",
+        "unicaen/privilege": "dev-laminas_migration",
+        "laminas/laminas-dependency-plugin": "^2.1"
     },
-    "classmap": [
-      "./Module.php"
-    ]
-  }
+    "autoload": {
+        "psr-0": [],
+        "classmap": [
+            "./Module.php"
+        ]
+    }
 }
diff --git a/config/merged/index.config.php b/config/merged/index.config.php
index f1a278c7e9981d73dffe6d8a9aa3ca624f1b3767..8af24bc43e0b08619b663fb2818feea031112d82 100755
--- a/config/merged/index.config.php
+++ b/config/merged/index.config.php
@@ -6,7 +6,7 @@ use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
 use UnicaenRenderer\Provider\Privilege\DocumentmacroPrivileges;
 use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
 use UnicaenPrivilege\Guard\PrivilegeController;
-use Zend\Router\Http\Literal;
+use Laminas\Router\Http\Literal;
 
 return [
     'bjyauthorize' => [
diff --git a/config/merged/macro.config.php b/config/merged/macro.config.php
index a6dfaab176fd0ef43a9505175a4c2e73e5c8e9ea..1c6f4b5e884c0b0c34fd1dda7755e35ed99b93d1 100755
--- a/config/merged/macro.config.php
+++ b/config/merged/macro.config.php
@@ -10,8 +10,8 @@ use UnicaenRenderer\Provider\Privilege\DocumentmacroPrivileges;
 use UnicaenRenderer\Service\Macro\MacroService;
 use UnicaenRenderer\Service\Macro\MacroServiceFactory;
 use UnicaenPrivilege\Guard\PrivilegeController;
-use Zend\Router\Http\Literal;
-use Zend\Router\Http\Segment;
+use Laminas\Router\Http\Literal;
+use Laminas\Router\Http\Segment;
 
 return [
     'bjyauthorize' => [
diff --git a/config/merged/rendu.config.php b/config/merged/rendu.config.php
index 34c42955ea7b4255a64da1fae52a966dec72ecda..8d459536ea8f76e9cfe91a1e07feb14705f9dc59 100755
--- a/config/merged/rendu.config.php
+++ b/config/merged/rendu.config.php
@@ -9,8 +9,8 @@ use UnicaenRenderer\Service\Rendu\RenduServiceFactory;
 use UnicaenRenderer\Provider\Privilege\DocumentcontenuPrivileges;
 use UnicaenPrivilege\Guard\PrivilegeController;
 use UnicaenRenderer\View\Helper\RenduViewHelper;
-use Zend\Router\Http\Literal;
-use Zend\Router\Http\Segment;
+use Laminas\Router\Http\Literal;
+use Laminas\Router\Http\Segment;
 
 return [
     'bjyauthorize' => [
diff --git a/config/merged/template.config.php b/config/merged/template.config.php
index 5bcbe2b8db357167b174abcd2d3038876c2d4174..22705121a75cda6f0f71cd642a41445d941696d4 100755
--- a/config/merged/template.config.php
+++ b/config/merged/template.config.php
@@ -10,8 +10,8 @@ use UnicaenRenderer\Provider\Privilege\DocumenttemplatePrivileges;
 use UnicaenRenderer\Service\Template\TemplateService;
 use UnicaenRenderer\Service\Template\TemplateServiceFactory;
 use UnicaenPrivilege\Guard\PrivilegeController;
-use Zend\Router\Http\Literal;
-use Zend\Router\Http\Segment;
+use Laminas\Router\Http\Literal;
+use Laminas\Router\Http\Segment;
 
 return [
     'bjyauthorize' => [
diff --git a/src/UnicaenRenderer/Controller/IndexController.php b/src/UnicaenRenderer/Controller/IndexController.php
index bce0b469c4e66682137293d7f7da081605cdb806..8c569317d342cdd82df6630c3d9e2f6e46a9d633 100755
--- a/src/UnicaenRenderer/Controller/IndexController.php
+++ b/src/UnicaenRenderer/Controller/IndexController.php
@@ -2,8 +2,8 @@
 
 namespace UnicaenRenderer\Controller;
 
-use Zend\Mvc\Controller\AbstractActionController;
-use Zend\View\Model\ViewModel;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 
 class IndexController extends AbstractActionController {
 
diff --git a/src/UnicaenRenderer/Controller/MacroController.php b/src/UnicaenRenderer/Controller/MacroController.php
index 7213b53617eb7dbcea8f97cbecf188eb37bddb79..c7ea6478349143d700aaf0817eb64b1957be8b4c 100755
--- a/src/UnicaenRenderer/Controller/MacroController.php
+++ b/src/UnicaenRenderer/Controller/MacroController.php
@@ -6,9 +6,9 @@ use Application\Service\Agent\AgentServiceAwareTrait;
 use UnicaenRenderer\Entity\Db\Macro;
 use UnicaenRenderer\Form\Macro\MacroFormAwareTrait;
 use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait;
-use Zend\Http\Request;
-use Zend\Mvc\Controller\AbstractActionController;
-use Zend\View\Model\ViewModel;
+use Laminas\Http\Request;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 
 class MacroController extends AbstractActionController {
     use MacroServiceAwareTrait;
diff --git a/src/UnicaenRenderer/Controller/RenduController.php b/src/UnicaenRenderer/Controller/RenduController.php
index 5da2ad2b6774a84e37c204fbf51a4cd37801874f..cb8e34b4e83fcc0af395dc437a21b5edc530e595 100644
--- a/src/UnicaenRenderer/Controller/RenduController.php
+++ b/src/UnicaenRenderer/Controller/RenduController.php
@@ -3,9 +3,9 @@
 namespace UnicaenRenderer\Controller;
 
 use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;
-use Zend\Http\Request;
-use Zend\Mvc\Controller\AbstractActionController;
-use Zend\View\Model\ViewModel;
+use Laminas\Http\Request;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 
 class RenduController extends AbstractActionController {
     use RenduServiceAwareTrait;
diff --git a/src/UnicaenRenderer/Controller/TemplateController.php b/src/UnicaenRenderer/Controller/TemplateController.php
index a7e86410f29df9029d6ef6af20e5d36044d1cba0..a6c5529e9e28383f7360e51e9aa7d44abc0ac4be 100755
--- a/src/UnicaenRenderer/Controller/TemplateController.php
+++ b/src/UnicaenRenderer/Controller/TemplateController.php
@@ -6,9 +6,9 @@ use UnicaenRenderer\Entity\Db\Template;
 use UnicaenRenderer\Form\Template\TemplateFormAwareTrait;
 use UnicaenRenderer\Service\Template\TemplateServiceAwareTrait;
 use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait;
-use Zend\Http\Request;
-use Zend\Mvc\Controller\AbstractActionController;
-use Zend\View\Model\ViewModel;
+use Laminas\Http\Request;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 
 class TemplateController extends AbstractActionController {
     use TemplateServiceAwareTrait;
diff --git a/src/UnicaenRenderer/Entity/Db/Macro.php b/src/UnicaenRenderer/Entity/Db/Macro.php
index 2f8bba678d93d095f5dd3fa1bb5f3b9edeca4778..941e3142d83cd96c4e9118a7e0caafb211b2f513 100755
--- a/src/UnicaenRenderer/Entity/Db/Macro.php
+++ b/src/UnicaenRenderer/Entity/Db/Macro.php
@@ -2,7 +2,7 @@
 
 namespace UnicaenRenderer\Entity\Db;
 
-use Zend\Permissions\Acl\Resource\ResourceInterface;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 class Macro implements ResourceInterface
 {
diff --git a/src/UnicaenRenderer/Entity/Db/Rendu.php b/src/UnicaenRenderer/Entity/Db/Rendu.php
index 53d36c71b2a0a9629176f45a3b0b708d519e6527..e700cf99cf7582b2d43fd813b151cada1cfb0cfe 100644
--- a/src/UnicaenRenderer/Entity/Db/Rendu.php
+++ b/src/UnicaenRenderer/Entity/Db/Rendu.php
@@ -3,7 +3,7 @@
 namespace UnicaenRenderer\Entity\Db;
 
 use DateTime;
-use Zend\Permissions\Acl\Resource\ResourceInterface;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 class Rendu implements ResourceInterface
 {
diff --git a/src/UnicaenRenderer/Entity/Db/Template.php b/src/UnicaenRenderer/Entity/Db/Template.php
index b2bbc46d8e0ba232bc242fb62d208c9362a18313..7f85697e33df471bcbfe79e89b4b74a393177218 100755
--- a/src/UnicaenRenderer/Entity/Db/Template.php
+++ b/src/UnicaenRenderer/Entity/Db/Template.php
@@ -2,7 +2,7 @@
 
 namespace UnicaenRenderer\Entity\Db;
 
-use Zend\Permissions\Acl\Resource\ResourceInterface;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 class Template implements ResourceInterface
 {
diff --git a/src/UnicaenRenderer/Form/Macro/MacroForm.php b/src/UnicaenRenderer/Form/Macro/MacroForm.php
index 6967a86e827fd537e9b7b690b0ab86869848e3a0..942d589c7be3b8dec0c9d795f491a1a6a6987fd6 100755
--- a/src/UnicaenRenderer/Form/Macro/MacroForm.php
+++ b/src/UnicaenRenderer/Form/Macro/MacroForm.php
@@ -4,13 +4,13 @@ namespace UnicaenRenderer\Form\Macro;
 
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenRenderer\Entity\Db\Macro;
-use Zend\Form\Element\Button;
-use Zend\Form\Element\Hidden;
-use Zend\Form\Element\Text;
-use Zend\Form\Element\Textarea;
-use Zend\Form\Form;
-use Zend\InputFilter\Factory;
-use Zend\Validator\Callback;
+use Laminas\Form\Element\Button;
+use Laminas\Form\Element\Hidden;
+use Laminas\Form\Element\Text;
+use Laminas\Form\Element\Textarea;
+use Laminas\Form\Form;
+use Laminas\InputFilter\Factory;
+use Laminas\Validator\Callback;
 
 class MacroForm extends Form {
     use EntityManagerAwareTrait;
diff --git a/src/UnicaenRenderer/Form/Macro/MacroHydrator.php b/src/UnicaenRenderer/Form/Macro/MacroHydrator.php
index d391221883b7feeac08fe4c5ccc60f3bd6f6d56c..9ae16b5f6c19aab3db4f49e1a79b70f2583a297d 100755
--- a/src/UnicaenRenderer/Form/Macro/MacroHydrator.php
+++ b/src/UnicaenRenderer/Form/Macro/MacroHydrator.php
@@ -3,7 +3,7 @@
 namespace UnicaenRenderer\Form\Macro;
 
 use UnicaenRenderer\Entity\Db\Macro;
-use Zend\Hydrator\HydratorInterface;
+use Laminas\Hydrator\HydratorInterface;
 
 class MacroHydrator implements HydratorInterface {
 
@@ -11,7 +11,7 @@ class MacroHydrator implements HydratorInterface {
      * @param Macro $object
      * @return array
      */
-    public function extract($object)
+    public function extract(object $object) : array
     {
         $data = [
             'code' => $object->getCode(),
diff --git a/src/UnicaenRenderer/Form/Template/TemplateForm.php b/src/UnicaenRenderer/Form/Template/TemplateForm.php
index 5de3907e1a0ef6f7436f7659df46d76914b8c5ac..1e2a3108baea8824b5d8b75cbb43f890b9041dcf 100755
--- a/src/UnicaenRenderer/Form/Template/TemplateForm.php
+++ b/src/UnicaenRenderer/Form/Template/TemplateForm.php
@@ -6,13 +6,13 @@ use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenRenderer\Entity\Db\Template;
 use UnicaenRenderer\Entity\Db\Macro;
 use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait;
-use Zend\Form\Element\Button;
-use Zend\Form\Element\Hidden;
-use Zend\Form\Element\Select;
-use Zend\Form\Element\Text;
-use Zend\Form\Form;
-use Zend\InputFilter\Factory;
-use Zend\Validator\Callback;
+use Laminas\Form\Element\Button;
+use Laminas\Form\Element\Hidden;
+use Laminas\Form\Element\Select;
+use Laminas\Form\Element\Text;
+use Laminas\Form\Form;
+use Laminas\InputFilter\Factory;
+use Laminas\Validator\Callback;
 
 class TemplateForm extends Form {
     use EntityManagerAwareTrait;
diff --git a/src/UnicaenRenderer/Form/Template/TemplateHydrator.php b/src/UnicaenRenderer/Form/Template/TemplateHydrator.php
index be9fc99d1ab1616455fe8a08afa897c7879008cd..1ed5c084e25bf65fdbce5b2185b2d17ead282d20 100755
--- a/src/UnicaenRenderer/Form/Template/TemplateHydrator.php
+++ b/src/UnicaenRenderer/Form/Template/TemplateHydrator.php
@@ -3,7 +3,7 @@
 namespace UnicaenRenderer\Form\Template;
 
 use UnicaenRenderer\Entity\Db\Template;
-use Zend\Hydrator\HydratorInterface;
+use Laminas\Hydrator\HydratorInterface;
 
 class TemplateHydrator implements HydratorInterface {
 
@@ -11,7 +11,7 @@ class TemplateHydrator implements HydratorInterface {
      * @param Template $object
      * @return array
      */
-    public function extract($object)
+    public function extract($object) : array
     {
         $data = [
             'code' => ($object)?$object->getCode():null,
diff --git a/src/UnicaenRenderer/Service/Macro/MacroService.php b/src/UnicaenRenderer/Service/Macro/MacroService.php
index 0d32e36c36fd849e5afa07a2c5531400ecb5ca67..8dc7c1a3326d19e59ad045b066ef4c960eeee399 100755
--- a/src/UnicaenRenderer/Service/Macro/MacroService.php
+++ b/src/UnicaenRenderer/Service/Macro/MacroService.php
@@ -8,7 +8,7 @@ use Doctrine\ORM\QueryBuilder;
 use UnicaenApp\Exception\RuntimeException;
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenRenderer\Entity\Db\Macro;
-use Zend\Mvc\Controller\AbstractActionController;
+use Laminas\Mvc\Controller\AbstractActionController;
 
 class MacroService {
     use EntityManagerAwareTrait;
diff --git a/src/UnicaenRenderer/Service/Rendu/RenduService.php b/src/UnicaenRenderer/Service/Rendu/RenduService.php
index 39260b1d5897f6c0cec28397a22014973c357146..f36a733a42ceed06de015581220928aa7eaa78c5 100644
--- a/src/UnicaenRenderer/Service/Rendu/RenduService.php
+++ b/src/UnicaenRenderer/Service/Rendu/RenduService.php
@@ -13,7 +13,7 @@ use UnicaenPdf\Exporter\PdfExporter;
 use UnicaenRenderer\Entity\Db\Rendu;
 use UnicaenRenderer\Entity\Db\Template;
 use UnicaenRenderer\Service\Template\TemplateServiceAwareTrait;
-use Zend\Mvc\Controller\AbstractActionController;
+use Laminas\Mvc\Controller\AbstractActionController;
 
 class RenduService {
     use EntityManagerAwareTrait;
diff --git a/src/UnicaenRenderer/Service/Template/TemplateService.php b/src/UnicaenRenderer/Service/Template/TemplateService.php
index 6bf992cc5db049e3286d57fdbd6c1dd508e102c7..691dc1fe5027f5baa4ea142bb659198b95cf75a1 100755
--- a/src/UnicaenRenderer/Service/Template/TemplateService.php
+++ b/src/UnicaenRenderer/Service/Template/TemplateService.php
@@ -9,7 +9,7 @@ use UnicaenApp\Exception\RuntimeException;
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenRenderer\Entity\Db\Template;
 use UnicaenRenderer\Service\Macro\MacroServiceAwareTrait;
-use Zend\Mvc\Controller\AbstractActionController;
+use Laminas\Mvc\Controller\AbstractActionController;
 
 class TemplateService {
     use EntityManagerAwareTrait;
diff --git a/src/UnicaenRenderer/View/Helper/RenduViewHelper.php b/src/UnicaenRenderer/View/Helper/RenduViewHelper.php
index ace340ac41f2556336c948d343ce7fd3a72f4a29..76cd13d4f940429c03fe52dcc540c77f8526d0ff 100644
--- a/src/UnicaenRenderer/View/Helper/RenduViewHelper.php
+++ b/src/UnicaenRenderer/View/Helper/RenduViewHelper.php
@@ -4,9 +4,9 @@ namespace UnicaenRenderer\View\Helper;
 
 use Application\View\Renderer\PhpRenderer;
 use UnicaenRenderer\Entity\Db\Rendu;
-use Zend\View\Helper\AbstractHelper;
-use Zend\View\Helper\Partial;
-use Zend\View\Resolver\TemplatePathStack;
+use Laminas\View\Helper\AbstractHelper;
+use Laminas\View\Helper\Partial;
+use Laminas\View\Resolver\TemplatePathStack;
 
 class RenduViewHelper extends AbstractHelper
 {
diff --git a/view/unicaen-renderer/default/default-form.phtml b/view/unicaen-renderer/default/default-form.phtml
index 6d1dd678ac713c8453f5513f7ff990a20b986181..b6e7012bc451f44bd928438faec08990b606776f 100755
--- a/view/unicaen-renderer/default/default-form.phtml
+++ b/view/unicaen-renderer/default/default-form.phtml
@@ -4,7 +4,7 @@
  * @var Form $form
  */
 
-use Zend\Form\Form;
+use Laminas\Form\Form;
 
 ?>
 
diff --git a/view/unicaen-renderer/index/index.phtml b/view/unicaen-renderer/index/index.phtml
index 7757874797bd7662d511e02e7cee94b7eb35d57c..9ef99148f143118093425a708180000f03f3bf6d 100755
--- a/view/unicaen-renderer/index/index.phtml
+++ b/view/unicaen-renderer/index/index.phtml
@@ -60,7 +60,6 @@ $canTemplate = $this->isAllowed(DocumenttemplatePrivileges::getResourceId(Docume
     </div>
 <?php endif; ?>
 
-
 <?php if ($canRendu) : ?>
     <h2> Gestion des rendus </h2>
 
diff --git a/view/unicaen-renderer/macro/index.phtml b/view/unicaen-renderer/macro/index.phtml
index 5cfc961ebd242f18108fe900bb8c5f0b2f9dabc6..823245159e551757c0f42c77256ae21baf93bd4a 100755
--- a/view/unicaen-renderer/macro/index.phtml
+++ b/view/unicaen-renderer/macro/index.phtml
@@ -37,7 +37,7 @@ $this->headTitle("Index des macros");
         Générer le JSON des macros
     </a>
 
-    <table class="table table-condensed table-hover">
+    <table id='macro-liste' class="table table-condensed table-hover">
         <thead>
             <tr>
                 <th> Code </th>
@@ -74,7 +74,7 @@ $this->headTitle("Index des macros");
                                class="ajax-modal" data-event="modification" data-toggle="tooltip" data-html="true"
                                title="Suppression de la macro <span class='highlight macro'><?php echo $macro->getCode(); ?></span>"
                             >
-                                <span class="icon detruire"></span></a>
+                                <span class="icon detruire text-danger"></span></a>
                         <?php endif; ?>
                     </td>
                 </tr>
@@ -89,5 +89,28 @@ $this->headTitle("Index des macros");
             event.div.modal('hide');
             window.location.reload();
         });
+
+        if(jQuery().dataTable) {
+            $('#macro-liste').DataTable({
+                "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "Tous"]],
+                "columnDefs": [
+                    {targets: 3, orderable: false, searchable: false},
+                ],
+                "language": {
+                    'lengthMenu': "Afficher _MENU_ &eacute;l&eacute;ments",
+                    "search": "Filtre de recherche : _INPUT_",
+                    "loadingRecords": "Chargement en cours...",
+                    'info': "<small class=\"text-highlight\">Affichage : <strong><i class=\"far fa-list-alt\"></i> _START_ - _END_ sur _TOTAL_</strong></small>",
+                    'infoEmpty': "",
+                    'infoFiltered': "<small class=\"text-highlight\">(_MAX_ &eacute;l&eacute;ments au total)</small>",
+                    'emptyTable': "Aucune donnée disponible.",
+                    'zeroRecords': "Aucun enregistrement trouvé.",
+                    "paginate": {
+                        "previous": "<i class=\"fas fa-chevron-left\"></i>",
+                        "next": "<i class=\"fas fa-chevron-right\"></i>"
+                    }
+                },
+            });
+        }
     });
 </script>
\ No newline at end of file
diff --git a/view/unicaen-renderer/macro/partial/filtre.phtml b/view/unicaen-renderer/macro/partial/filtre.phtml
index 316b1a6d8cee88c7f6dfc7d022b4ed88c57c4934..a11a240a09fd5086291acd112672ee1e93682325 100755
--- a/view/unicaen-renderer/macro/partial/filtre.phtml
+++ b/view/unicaen-renderer/macro/partial/filtre.phtml
@@ -10,20 +10,19 @@
 
 <div class="panel panel-default">
     <div class="panel-heading">
-        <span class="icon filtrer"></span> Filtre des macros
+        <h2>Filtrer les macros</h2>
     </div>
     <div class="panel-body">
         <form method="get" id="filtre" action="<?php echo $this->url(); ?>">
             <div class="row">
                 <!-- Variable -------------------------------------------------------- -->
-                <div class="col-md-3">
+                <div class="col-md-5">
                     <div class="form-group">
-                        <label for="variable">Variable associée :</label>
-                        <select id="variable" name="variable" class="selectpicker">
-                            <option value=""> Tous les variables </option>
-                            <?php foreach($variables as $variable) : ?>
+                        <select id="variable" name="variable" class="form-control selectpicker">
+                            <option value=""> Toutes les variables</option>
+                            <?php foreach ($variables as $variable) : ?>
                                 <option
-                                    value="<?php echo $variable; ?>"
+                                        value="<?php echo $variable; ?>"
                                     <?php if ($variable == $params['variable']) echo " selected "; ?>
                                 >
                                     <?php echo $variable; ?>
@@ -33,17 +32,16 @@
                     </div>
                 </div>
                 <!-- BOUTON -->
-                <div class="col-md-3">
-                    <br/>
-                    <div class="pull-right">
-                        <button class="btn btn-primary" id="clear">
-                            <span class="icon effacer"></span>
-                        </button>
-
-                        <button class="btn btn-primary" id="filter" style="width:20rem;">
+                <div class="col-md-7">
+                    <div class="form-group">
+                        <button class="btn btn-primary" id="filter">
                             <span class="icon filtrer"></span>
                             Filtrer
                         </button>
+                        <button class="btn btn-primary" id="clear">
+                            <span class="icon effacer"></span>
+                            Effacer
+                        </button>
                     </div>
                 </div>
             </div>
@@ -53,20 +51,27 @@
 
 
 <script>
-    $("form#filtre").submit(function(e){
-        e.preventDefault();
-    });
+    $(function () {
+        if (jQuery().selectpicker) {
+            $('#variable').selectpicker('render');
+        }
 
-    $('button#clear').click(function() {
-        window.location.href = 'macro';
-    });
+        $("form#filtre").submit(function (e) {
+            e.preventDefault();
+        });
+
+        $('button#clear').click(function () {
+            window.location.href = 'macro';
+        });
 
-    $('button#filter').click(function() {
-        let variableId = $('select#variable option:selected').val();
-        console.log( "variable=" + variableId);
+        $('button#filter').click(function () {
+            let variableId = $('select#variable option:selected').val();
+            console.log("variable=" + variableId);
 
-        let query = "";
-        query += "&variable=" + variableId;
-        window.location.href = 'macro?'+ query;
+            let query = "";
+            query += "&variable=" + variableId;
+            window.location.href = 'macro?' + query;
+        });
     });
+
 </script>
\ No newline at end of file
diff --git a/view/unicaen-renderer/rendu/index.phtml b/view/unicaen-renderer/rendu/index.phtml
index 4543d1f90ac4df24f7d7789faa7c4d08383465ba..644f3a4c60f0a05b4040b817448ce95e62940819 100644
--- a/view/unicaen-renderer/rendu/index.phtml
+++ b/view/unicaen-renderer/rendu/index.phtml
@@ -16,18 +16,17 @@ $canSupprimer = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(Docume
 
 <h1 class="page-header">
     Index des rendus
-    <span class="badge"><?php echo count($rendus); ?> </span>
 </h1>
 
-<table class="table table-condensed table-hover">
+<table id='rendu-liste' class="table table-condensed table-hover">
     <thead>
-        <tr>
-            <th> Id </th>
-            <th> Template </th>
-            <th> Date de génération </th>
-            <th> Sujet </th>
-            <th> Action </th>
-        </tr>
+    <tr>
+        <th> Id</th>
+        <th> Template</th>
+        <th> Date de génération</th>
+        <th> Sujet</th>
+        <th> Action</th>
+    </tr>
     </thead>
     <tbody>
     <?php foreach ($rendus as $rendu) : ?>
@@ -42,15 +41,15 @@ $canSupprimer = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(Docume
             <td>
                 <span title="<?php echo $rendu->getSujet(); ?>" data-toggle="tooltip" data-html="true">
                 <?php
-                    $sujet = $rendu->getSujet();
-                    if (strlen($sujet) > 50) $sujet = substr($rendu->getSujet(), 0, 46) . " ...";
-                    echo $sujet;
+                $sujet = $rendu->getSujet();
+                if (strlen($sujet) > 50) $sujet = substr($rendu->getSujet(), 0, 46) . " ...";
+                echo $sujet;
                 ?>
                 </span>
             </td>
             <td>
                 <?php if ($canVoir) : ?>
-                    <?php /** @see \UnicaenRenderer\Controller\RenduController::afficherAction() */?>
+                    <?php /** @see \UnicaenRenderer\Controller\RenduController::afficherAction() */ ?>
                     <a href="<?php echo $this->url('contenu/rendu/afficher', ['rendu' => $rendu->getId()], [], true); ?>"
                        title="Afficher le rendu" data-toggle="tooltip" data-html="true"
                        class="ajax-modal"
@@ -58,12 +57,12 @@ $canSupprimer = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(Docume
                         <span class="icon voir"></span></a>
                 <?php endif; ?>
                 <?php if ($canSupprimer) : ?>
-                    <?php /** @see \UnicaenRenderer\Controller\RenduController::supprimerAction() */?>
+                    <?php /** @see \UnicaenRenderer\Controller\RenduController::supprimerAction() */ ?>
                     <a href="<?php echo $this->url('contenu/rendu/supprimer', ['rendu' => $rendu->getId()], [], true); ?>"
                        title="Supprimer le rendu" data-toggle="tooltip" data-html="true"
                        class="ajax-modal" data-event="modification"
                     >
-                        <span class="icon detruire"></span></a>
+                        <span class="icon detruire text-danger"></span></a>
                 <?php endif; ?>
             </td>
         </tr>
@@ -72,7 +71,30 @@ $canSupprimer = $this->isAllowed(DocumentcontenuPrivileges::getResourceId(Docume
 </table>
 
 <script>
-    $(function() {
+    $(function () {
+        if (jQuery().dataTable) {
+            $('#rendu-liste').DataTable({
+                "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "Tous"]],
+                "columnDefs": [
+                    {targets: 4, orderable: false, searchable: false},
+                ],
+                "language": {
+                    'lengthMenu': "Afficher _MENU_ &eacute;l&eacute;ments",
+                    "search": "Filtre de recherche : _INPUT_",
+                    "loadingRecords": "Chargement en cours...",
+                    'info': "<small class=\"text-highlight\">Affichage : <strong><i class=\"far fa-list-alt\"></i> _START_ - _END_ sur _TOTAL_</strong></small>",
+                    'infoEmpty': "",
+                    'infoFiltered': "<small class=\"text-highlight\">(_MAX_ &eacute;l&eacute;ments au total)</small>",
+                    'emptyTable': "Aucune donnée disponible.",
+                    'zeroRecords': "Aucun enregistrement trouvé.",
+                    "paginate": {
+                        "previous": "<i class=\"fas fa-chevron-left\"></i>",
+                        "next": "<i class=\"fas fa-chevron-right\"></i>"
+                    }
+                },
+            });
+        }
+
         $("body").on("modification", function (event) {
             event.div.modal('hide');
             window.location.reload();
diff --git a/view/unicaen-renderer/template/index.phtml b/view/unicaen-renderer/template/index.phtml
index c739b74d7f8e5f3ce65b4ecb1a0d0c7b0a3e622b..fa591ef7aca74627bb94936cf5d5a74d7245aab1 100755
--- a/view/unicaen-renderer/template/index.phtml
+++ b/view/unicaen-renderer/template/index.phtml
@@ -29,7 +29,7 @@ $this->headTitle("Index des templates");
     </a>
 <?php endif; ?>
 
-<table class="table table-condensed table-hover">
+<table id='template-liste' class="table table-condensed table-hover">
     <thead>
         <tr>
             <th> Code </th>
@@ -69,7 +69,7 @@ $this->headTitle("Index des templates");
                         <a href="<?php echo $this->url('contenu/template/detruire', ['template' => $template->getId()], [], true); ?>"
                            class="ajax-modal" data-event="modification"
                         >
-                            <span class="icon detruire"></span></a>
+                            <span class="icon detruire text-danger"></span></a>
                     <?php endif; ?>
                 </td>
             </tr>
@@ -79,6 +79,29 @@ $this->headTitle("Index des templates");
 
 <script>
     $(function() {
+        if(jQuery().dataTable) {
+            $('#template-liste').DataTable({
+                "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "Tous"]],
+                "columnDefs": [
+                    {targets: 2, orderable: false, searchable: false},
+                ],
+                "language": {
+                    'lengthMenu': "Afficher _MENU_ &eacute;l&eacute;ments",
+                    "search": "Filtre de recherche : _INPUT_",
+                    "loadingRecords": "Chargement en cours...",
+                    'info': "<small class=\"text-highlight\">Affichage : <strong><i class=\"far fa-list-alt\"></i> _START_ - _END_ sur _TOTAL_</strong></small>",
+                    'infoEmpty': "",
+                    'infoFiltered': "<small class=\"text-highlight\">(_MAX_ &eacute;l&eacute;ments au total)</small>",
+                    'emptyTable': "Aucune donnée disponible.",
+                    'zeroRecords': "Aucun enregistrement trouvé.",
+                    "paginate": {
+                        "previous": "<i class=\"fas fa-chevron-left\"></i>",
+                        "next": "<i class=\"fas fa-chevron-right\"></i>"
+                    }
+                },
+            });
+        }
+
         $("body").on("modification", function (event) {
             event.div.modal('hide');
             window.location.reload();