diff --git a/config/merged/etat-instance.config.php b/config/merged/etat-instance.config.php
index 40146420164fc4c82dd849f559f197a7708c4971..d5835b68fc8d8dc382494bacf89a99a4abab12ad 100644
--- a/config/merged/etat-instance.config.php
+++ b/config/merged/etat-instance.config.php
@@ -16,6 +16,13 @@ return [
     'bjyauthorize' => [
         'guards' => [
             PrivilegeController::class => [
+                [
+                    'controller' => EtatInstanceController::class,
+                    'action' => [
+                        'rechercher-utilisateur',
+                    ],
+                    'roles' => [],
+                ],
                 [
                     'controller' => EtatInstanceController::class,
                     'action' => [
@@ -53,8 +60,18 @@ return [
                         ],
                         'may_terminate' => true,
                         'child_routes' => [
-                            'supprimer' => [
+                            'rechercher-utilisateur' => [
                                 'type' => Literal::class,
+                                'options' => [
+                                    'route' => '/rechercher-utilisateur',
+                                    'defaults' => [
+                                        'controller' => EtatInstanceController::class,
+                                        'action' => 'rechercher-utilisateur',
+                                    ],
+                                ],
+                            ],
+                            'supprimer' => [
+                                'type' => Segment::class,
                                 'options' => [
                                     'route' => '/supprimer/:instance',
                                     'defaults' => [
diff --git a/src/UnicaenEtat/Controller/EtatInstanceController.php b/src/UnicaenEtat/Controller/EtatInstanceController.php
index a37414f3a88798afa5e96005cf07ea81f80504ab..80cbded180ad095adaacc73d0e6442e683afc517 100644
--- a/src/UnicaenEtat/Controller/EtatInstanceController.php
+++ b/src/UnicaenEtat/Controller/EtatInstanceController.php
@@ -4,18 +4,26 @@ namespace UnicaenEtat\Controller;
 
 use Laminas\Http\Request;
 use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\JsonModel;
 use Laminas\View\Model\ViewModel;
 use UnicaenEtat\Service\EtatInstance\EtatInstanceServiceAwareTrait;
+use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait;
+use UnicaenUtilisateur\Entity\Db\User;
 
 class EtatInstanceController extends AbstractActionController {
     use EtatInstanceServiceAwareTrait;
+    use EtatTypeServiceAwareTrait;
 
     public function indexAction() : ViewModel
     {
-        $instances = $this->getEtatInstanceService()->getEtatsInstances();
+        $params = $this->params()->fromQuery();
+        $instances = $this->getEtatInstanceService()->getEtatsInstancesWithFiltre($params);
+        $types = $this->getEtatTypeService()->getEtatsTypes();
 
         return new ViewModel([
+            'params' => $params,
             'instances' => $instances,
+            'types' => $types,
         ]);
     }
 
@@ -42,4 +50,22 @@ class EtatInstanceController extends AbstractActionController {
         }
         return $vm;
     }
+    public function rechercherUtilisateurAction()
+    {
+        if (($term = $this->params()->fromQuery('term'))) {
+            /** @var User $utilisateurs */
+            $utilisateurs = $this->getEtatInstanceService()->findUtilisateurByTerm($term);
+            foreach ($utilisateurs as $utilisateur) {
+                $result[] = array(
+                    'id' => $utilisateur->getHistoCreateur()->getId(),
+                    'label' => $utilisateur->getHistoCreateur()->getDisplayName(),
+                );
+            }
+            usort($result, function ($a, $b) {
+                return strcmp($a['label'], $b['label']);
+            });
+            return new JsonModel($result);
+        }
+        exit;
+    }
 }
\ No newline at end of file
diff --git a/src/UnicaenEtat/Controller/EtatInstanceControllerFactory.php b/src/UnicaenEtat/Controller/EtatInstanceControllerFactory.php
index b1bb6bb32813a8d260eb105d75ab099fc6c742f0..702724ab093d8c3709167f93759a76a555e7f98e 100644
--- a/src/UnicaenEtat/Controller/EtatInstanceControllerFactory.php
+++ b/src/UnicaenEtat/Controller/EtatInstanceControllerFactory.php
@@ -4,6 +4,7 @@ namespace UnicaenEtat\Controller;
 
 use Interop\Container\ContainerInterface;
 use UnicaenEtat\Service\EtatInstance\EtatInstanceService;
+use UnicaenEtat\Service\EtatType\EtatTypeService;
 
 class EtatInstanceControllerFactory {
 
@@ -17,11 +18,14 @@ class EtatInstanceControllerFactory {
     {
         /**
          * @var EtatInstanceService $instanceService
+         * @var EtatTypeService $typeService
          */
         $instanceService = $container->get(EtatInstanceService::class);
+        $typeService = $container->get(EtatTypeService::class);
 
         $controller = new EtatInstanceController();
         $controller->setEtatInstanceService($instanceService);
+        $controller->setEtatTypeService($typeService);
         return $controller;
     }
 }
\ No newline at end of file
diff --git a/src/UnicaenEtat/Service/EtatInstance/EtatInstanceService.php b/src/UnicaenEtat/Service/EtatInstance/EtatInstanceService.php
index cf800063a1301662820fa7ddc4db5091c3e811e4..37b85d8686c7d239a79e6a0b1941f1b81639f87a 100644
--- a/src/UnicaenEtat/Service/EtatInstance/EtatInstanceService.php
+++ b/src/UnicaenEtat/Service/EtatInstance/EtatInstanceService.php
@@ -10,6 +10,7 @@ use UnicaenApp\Exception\RuntimeException;
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenEtat\Entity\Db\EtatInstance;
 use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait;
+use UnicaenUtilisateur\Entity\Db\User;
 
 class EtatInstanceService {
     use EntityManagerAwareTrait;
@@ -79,6 +80,8 @@ class EtatInstanceService {
     public function createQueryBuilder() : QueryBuilder
     {
         $qb = $this->getEntityManager()->getRepository(EtatInstance::class)->createQueryBuilder('einstance')
+            ->addSelect('createur')->join('einstance.histoCreateur', 'createur')
+            ->addSelect('modificateur')->join('einstance.histoModificateur', 'modificateur')
             ->join('einstance.type', 'etype')->addSelect('etype')
             ->leftJoin('etype.categorie', 'ecategorie')->addSelect('ecategorie')
         ;
@@ -128,6 +131,43 @@ class EtatInstanceService {
         return $result;
     }
 
+    /**
+     * @param ?string $term
+     * @return User[]
+     */
+    public function findUtilisateurByTerm(?string $term) : array
+    {
+        $qb = $this->createQueryBuilder()
+            ->andWhere("LOWER(createur.displayName) like :search")
+            ->setParameter('search', '%'.strtolower($term).'%');
+        $result = $qb->getQuery()->getResult();
+
+        $validateurs = [];
+        /** @var  $item */
+        foreach ($result as $item) {
+            $validateurs[$item->getHistoCreateur()->getId()] = $item;
+        }
+        return $validateurs;
+    }
+
+    /**
+     * @param array $params
+     * @return EtatInstance[]
+     */
+    public function getEtatsInstancesWithFiltre(array $params) : array
+    {
+        $qb = $this->createQueryBuilder();
+        if (isset($params['type'])  AND $params['type'] !== '') {
+            $qb = $qb->andWhere('etype.code = :code')->setParameter('code', $params['type']);
+        }
+        if (isset($params['utilisateur']) AND isset($params['utilisateur']['id']) AND $params['utilisateur']['id'] !== '') {
+            $id = ((int) $params['utilisateur']['id']);
+            $qb = $qb->andWhere('createur.id = :id')->setParameter('id', $id);
+        }
+
+        $result = $qb->getQuery()->getResult();
+        return $result;
+    }
     /** FACADE ********************************************************************************************************/
 
     public function createWithCode(string $code) : EtatInstance
diff --git a/view/unicaen-etat/etat-categorie/index.phtml b/view/unicaen-etat/etat-categorie/index.phtml
index ac0c155a3ec85a9b198f8661bf4d49577c531141..f77b0aef65d8fbca9a31d88dea5abb598e50dc5d 100644
--- a/view/unicaen-etat/etat-categorie/index.phtml
+++ b/view/unicaen-etat/etat-categorie/index.phtml
@@ -23,8 +23,7 @@ $this->headTitle("Catégories d'état");
             Ajouter une catégorie d'état
         </a>
     </div>
-    <div class="pull-right">
-
+    <div class="col-md-4">
         <?php /** @see \UnicaenEtat\Controller\EtatTypeController::indexAction() */ ?>
         <a href="<?php echo $this->url('unicaen-etat/etat-type', [], [], true); ?>"
            class="btn btn-primary action">
@@ -32,10 +31,10 @@ $this->headTitle("Catégories d'état");
             Accéder aux types
         </a>
         <br/>
-        <a href="<?php echo $this->url('unicaen-etat/etat-type/ajouter', [], [], true); ?>"
-           class="btn btn-primary action disabled">
+        <a href="<?php echo $this->url('unicaen-etat/etat-instance', [], [], true); ?>"
+           class="btn btn-primary action">
             <span class="icon acceder"></span>
-            Accéder aux instances TODO
+            Accéder aux instances
         </a>
     </div>
 </div>
diff --git a/view/unicaen-etat/etat-instance/index.phtml b/view/unicaen-etat/etat-instance/index.phtml
index 855e8b84e25f8372e9f7cba44edc15555dd239d2..391c5848a6035152094f4969e6c3a11721270d6e 100644
--- a/view/unicaen-etat/etat-instance/index.phtml
+++ b/view/unicaen-etat/etat-instance/index.phtml
@@ -3,6 +3,7 @@
 /**
  * @see \UnicaenEtat\Controller\EtatCategorieController::indexAction()
  * @var EtatInstance[] $instances
+ * @var array $params
  */
 
 use UnicaenEtat\Entity\Db\EtatInstance;
@@ -16,14 +17,8 @@ $this->headTitle("Catégories d'état");
             Instances d'état
             <span class="badge"><?php echo count($instances); ?></span>
         </h1>
-<!--        --><?php ///** @see \UnicaenEtat\Controller\EtatCategorieController::ajouterAction() */ ?>
-<!--        <a href="--><?php //echo $this->url('unicaen-etat/etat-instance/ajouter', [], [], true); ?><!--"-->
-<!--           class="btn btn-primary action ajax-modal" data-event="modification">-->
-<!--            <span class="icon ajouter"></span>-->
-<!--            Ajouter une catégorie d'état-->
-<!--        </a>-->
     </div>
-    <div class="pull-right">
+    <div class="col-md-4">
 
         <?php /** @see \UnicaenEtat\Controller\EtatTypeController::indexAction() */ ?>
         <a href="<?php echo $this->url('unicaen-etat/etat-type', [], [], true); ?>"
@@ -40,7 +35,7 @@ $this->headTitle("Catégories d'état");
     </div>
 </div>
 
-<span class="todo"> filtre</span> <br><br>
+<?php echo $this->partial('partial/filtre', ["params" => $params, "categories" => $categories, "types" => $types], [], true); ?>
 
 <table class="table table-condensed table-hover">
     <thead>
diff --git a/view/unicaen-etat/etat-instance/partial/filtre.phtml b/view/unicaen-etat/etat-instance/partial/filtre.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..2aaf0752ac1058fc1db0d1ce84629f7454c6e93e
--- /dev/null
+++ b/view/unicaen-etat/etat-instance/partial/filtre.phtml
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @var array $params
+ * @var \UnicaenValidation\Entity\Db\EtatType[] $types
+ */
+
+use UnicaenApp\Form\Element\SearchAndSelect;
+
+?>
+
+<div class="card card-default">
+    <div class="card-header">
+        <span class="icon icon-filtrer"></span>
+        Filtrer les instances de validations
+    </div>
+    <div class="card-body">
+        <form id="filter" method="get" action="<?php echo $this->url(); ?>">
+        <div class="row">
+            <div class="col-md-8">
+                <div class="row">
+                    <div class="col-md-6">
+                        <label for="type">Type d'état : </label>
+                        <select id="type" name="type" class="selectpicker" data-live-search="true">
+                            <option value="">Peu importe</option>
+                            <?php foreach ($types as $etype) : ?>
+                                <option value="<?php echo $etype->getCode(); ?>">
+                                    <?php echo ($etype->getCategorie())?$etype->getCategorie()->getLibelle():"Sans catégorie"; ?>
+                                    >
+                                    <?php echo $etype->getLibelle(); ?>
+                                </option>
+                            <?php endforeach; ?>
+                        </select>
+                    </div>
+                    <div class="col-md-6">
+                        <?php
+                        /** @see \UnicaenEtat\Controller\EtatInstanceController::rechercherUtilisateurAction() */
+                        $agentF = new SearchAndSelect('utilisateur', ['label' => "Utilisateur·trice :"]);
+                        $agentF
+                            ->setAutocompleteSource($this->url('unicaen-etat/etat-instance/rechercher-utilisateur'))
+                            ->setSelectionRequired(true)
+                            ->setAttributes([
+                                'id' => 'utilisateur',
+                                'placeholder' => "Nom de l'utilisateur·trice ...",
+                            ]);
+                        ?>
+                        <?php echo $this->formControlGroup($agentF); ?>
+                    </div>
+                </div>
+            </div>
+            <div class="col-md-4">
+                <button type="button" id="filter" class="btn btn-primary filter-action">
+                    <span class="icon filtrer" aria-hidden="true"></span> Filtrer
+                </button>
+                <br/>
+                <button type="button" id="reset" class="btn btn-primary filter-action">
+                    <span class="icon effacer" aria-hidden="true"></span> R.A.Z.
+                </button>
+            </div>
+        </div>
+        </form>
+    </div>
+</div>
+
+
+<script>
+    $('button#reset').click(function (e) {
+        e.preventDefault();
+        window.location = '?';
+    });
+    $('button#filter').click(function () {
+        $('form#filter').submit();
+    });
+
+<?php if ($params['utilisateur']['id'] !== "") :?>
+    $('input[name="utilisateur[label]').val(" <?php echo $params['utilisateur']['label']; ?> ");
+    $('input[name="utilisateur[id]').val("<?php echo $params['utilisateur']['id']; ?>");
+<?php endif; ?>
+
+$('select#type option[value=<?php echo $params['type']; ?>]').prop('selected', true);
+</script>
\ No newline at end of file
diff --git a/view/unicaen-etat/etat-type/index.phtml b/view/unicaen-etat/etat-type/index.phtml
index 828ae510414d507f6b23aab336cdb6264ef4bcde..76f4afbb88c36bd3656e8ca661cbe42ef2e32a96 100644
--- a/view/unicaen-etat/etat-type/index.phtml
+++ b/view/unicaen-etat/etat-type/index.phtml
@@ -23,7 +23,7 @@ $this->headTitle("Types d'état")
             Ajouter un type d'état
         </a>
     </div>
-    <div class="pull-right">
+    <div class="col-md-4">
         <?php /** @see \UnicaenEtat\Controller\EtatCategorieController::indexAction() */ ?>
         <a href="<?php echo $this->url('unicaen-etat/etat-categorie', [], [], true); ?>"
            class="btn btn-primary action">