diff --git a/ecrire/bootstrap/inc/path.php b/ecrire/bootstrap/inc/path.php
index eefaa3f9770606a46d10bec681d5320e38e3dbae..43f830c081628f6605d526c65cb89032f4afb807 100644
--- a/ecrire/bootstrap/inc/path.php
+++ b/ecrire/bootstrap/inc/path.php
@@ -308,7 +308,7 @@ function save_path_cache() {
  * Trouve tous les fichiers du path correspondants à un pattern
  *
  * Pour un nom de fichier donné, ne retourne que le premier qui sera trouvé
- * par un `find_in_path()`
+ * par un `find_in_path()`, sauf si l'option `all_files` est activée.
  *
  * @api
  * @uses creer_chemin()
@@ -316,10 +316,11 @@ function save_path_cache() {
  *
  * @param string $dir
  * @param string $pattern
- * @param bool $recurs
+ * @param bool   $recurs
+ * @param bool   $all_files
  * @return array
  */
-function find_all_in_path($dir, $pattern, $recurs = false) {
+function find_all_in_path($dir, $pattern, $recurs = false, bool $all_files = false) {
 	$liste_fichiers = [];
 	$maxfiles = 10000;
 
@@ -336,10 +337,13 @@ function find_all_in_path($dir, $pattern, $recurs = false) {
 			$liste = preg_files($f, $pattern, $maxfiles - count($liste_fichiers), $recurs === true ? [] : $recurs);
 			foreach ($liste as $chemin) {
 				$nom = basename($chemin);
-				// ne prendre que les fichiers pas deja trouves
-				// car find_in_path prend le premier qu'il trouve,
-				// les autres sont donc masques
-				if (!isset($liste_fichiers[$nom])) {
+				if ($all_files) {
+					// On accumule tous les fichiers de même nom
+					$liste_fichiers[$nom][] = $chemin;
+				} elseif (!isset($liste_fichiers[$nom])) {
+					// ne prendre que les fichiers pas deja trouves
+					// car find_in_path prend le premier qu'il trouve,
+					// les autres sont donc masques
 					$liste_fichiers[$nom] = $chemin;
 				}
 			}