diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index f7fb0f861869424c10d3de8567f815bc1fc2db7c..1eae7409feb8d5f9cd3b6400f3e97a972ef67b32 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -1074,14 +1074,17 @@ function extraire_multi ($letexte) {
 //
 // Ce filtre retourne la donnee si c'est la premiere fois qu'il la voit ;
 // possibilite de gerer differentes "familles" de donnees |unique{famille}
+# |unique{famille,1} affiche le nombre d'elements affiches (preferer toutefois #TOTAL_UNIQUE)
 # ameliorations possibles :
 # 1) si la donnee est grosse, mettre son md5 comme cle
 # 2) purger $mem quand on change de squelette (sinon bug inclusions)
 //
 // http://www.spip.net/@unique
 // http://doc.spip.org/@unique
-function unique($donnee, $famille='') {
+function unique($donnee, $famille='', $cpt = false) {
 	static $mem;
+	if ($cpt)
+		return count($mem[$famille]);
 	if (!($mem[$famille][$donnee]++))
 		return $donnee;
 }
@@ -1709,4 +1712,4 @@ function concat(){
 	return $texte;
 }
 
-?>
+?>
\ No newline at end of file
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index c39ddf6e84ccea1007a5b4a601f03b5d16831f4d..b63ea4e655bbc153b8ba5f9f59861107e5e1f047 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -1263,4 +1263,20 @@ function balise_PIPELINE_dist($p) {
 	return $p;
 }
 
+//
+// #TOTAL_UNIQUE
+// pour recuperer le nombre d'elements affiches par l'intermediaire du filtre
+// |unique
+// usage:
+// #TOTAL_UNIQUE afiche le nombre de #BALISE|unique
+// #TOTAL_UNIQUE{famille} afiche le nombre de #BALISE|unique{famille}
+//
+// http://doc.spip.org/@balise_TOTAL_UNIQUE_dist
+function balise_TOTAL_UNIQUE_dist($p) {
+	$_famille = interprete_argument_balise(1,$p);
+	$_famille = $_famille ? $_famille : "''";
+	$p->code = "unique('', $_famille, true)";
+	return $p;
+}
+
 ?>
\ No newline at end of file