diff --git a/src/UnicaenApp/ORM/Event/Listeners/HistoriqueListener.php b/src/UnicaenApp/ORM/Event/Listeners/HistoriqueListener.php
index ef1fd09b0824c779b30a0ad6c7f7104994665a71..daad7972dfef8f8adf1dacd1a78daf4c34e1e7f4 100644
--- a/src/UnicaenApp/ORM/Event/Listeners/HistoriqueListener.php
+++ b/src/UnicaenApp/ORM/Event/Listeners/HistoriqueListener.php
@@ -1,21 +1,22 @@
 <?php
+
 namespace UnicaenApp\ORM\Event\Listeners;
 
-use RuntimeException;
-use UnicaenAuth\Entity\Db\AbstractUser;
-use Zend\ServiceManager\ServiceLocatorAwareInterface;
-use Zend\ServiceManager\ServiceLocatorAwareTrait;
+use Doctrine\Common\EventSubscriber;
 use Doctrine\ORM\Event\LifecycleEventArgs;
 use Doctrine\ORM\Event\PreUpdateEventArgs;
 use Doctrine\ORM\Events;
-use Doctrine\Common\EventSubscriber;
+use RuntimeException;
 use UnicaenApp\Entity\HistoriqueAwareInterface;
+use UnicaenAuth\Entity\Db\AbstractUser;
+use Zend\ServiceManager\ServiceLocatorAwareInterface;
+use Zend\ServiceManager\ServiceLocatorAwareTrait;
 
 /**
  * Listener Doctrine.
  *
- * Modifie automatiquement l'heure et l'auteur de la création/modification
- * de tout enregistrement dont la classe implémente HistoriqueAwareInterface.
+ * Renseigne si besoin l'heure et l'auteur de la création/modification
+ * de toute entité dont la classe implémente HistoriqueAwareInterface.
  *
  * Déclenchement : avant que l'enregistrement ne soit persisté (création) ou mis à jour (update).
  *
@@ -32,11 +33,8 @@ class HistoriqueListener implements EventSubscriber, ServiceLocatorAwareInterfac
     protected $identity;
 
     /**
-     *
      * @param LifecycleEventArgs $args
-     *
-     * @return void
-     * @throws RuntimeException Aucun utilisateur connecté disponible pour la gestion de l'historique
+     * @throws RuntimeException Aucun utilisateur disponible pour en faire l'auteur de la création/modification
      */
     protected function updateHistorique(LifecycleEventArgs $args)
     {
@@ -47,45 +45,61 @@ class HistoriqueListener implements EventSubscriber, ServiceLocatorAwareInterfac
             return;
         }
 
-        // l'utilisateur connecté sera l'auteur de la création/modification
-        $user = null;
-        if (($identity = $this->getIdentity())) {
-            if (isset($identity['db']) && $identity['db'] instanceof AbstractUser) {
-                $user = $identity['db'];
-                /* @var $user AbstractUser */
-            }
-        }
-        if (null === $user) {
-            throw new RuntimeException("Aucun utilisateur connecté disponible pour la gestion de l'historique.");
-        }
-
         $now = new \DateTime();
 
-        /**
-         * Historique
-         */
-
         if (null === $entity->getHistoCreation()) {
             $entity->setHistoCreation($now);
         }
 
+        // on tente d'abord d'obtenir l'utilisateur connecté pour en faire l'auteur de la création/modification.
+        $user = $this->getAuthenticatedUser();
+        // si aucun utilisateur connecté n'est disponible, on utilise l'éventuel auteur existant
+        if (null === $user) {
+            $user = $entity->getHistoCreateur();
+        }
+        // si nous ne disposons d'aucun utilisateur, basta!
+        if (null === $user) {
+            throw new RuntimeException("Aucun utilisateur disponible pour en faire l'auteur de la création/modification.");
+        }
+
         if (null === $entity->getHistoCreateur()) {
             $entity->setHistoCreateur($user);
         }
 
         $entity->setHistoModificateur($user);
         $entity->setHistoModification($now);
-
+        /* ce bloc a été mis en commentaire car il est inutile: cf. 2 lignes précédentes !
         if (null === $entity->getHistoDestruction() && null === $entity->getHistoDestructeur()) {
-            $entity->setHistoModification($now)
+            $entity
+                ->setHistoModification($now)
                 ->setHistoModificateur($user);
         }
+        */
 
         if (null !== $entity->getHistoDestruction() && null === $entity->getHistoDestructeur()) {
             $entity->setHistoDestructeur($user);
         }
     }
 
+    /**
+     * Recherche l'utilisateur connecté pour l'utiliser comme auteur de la création/modification.
+     *
+     * @return AbstractUser
+     */
+    private function getAuthenticatedUser()
+    {
+        $user = null;
+
+        if (($identity = $this->getIdentity())) {
+            if (isset($identity['db']) && $identity['db'] instanceof AbstractUser) {
+                /* @var $user AbstractUser */
+                $user = $identity['db'];
+            }
+        }
+
+        return $user;
+    }
+
     /**
      * @param LifecycleEventArgs $args
      */