diff --git a/home/admin.py b/home/admin.py
index 0d9b2607bca160f287b06f121cf9b5f3981b0bf1..cd9858c26c22a5d6d736a1452ac044514ec244c2 100644
--- a/home/admin.py
+++ b/home/admin.py
@@ -54,7 +54,7 @@ class ActivityListAdmin(ExportCsvMixin, admin.ModelAdmin):
 	list_display = ("activity", "participant", "priority", "accepted")
 	list_filter = (
 		"activity", "participant__is_registered", "activity__display",
-		"accepted", "activity__must_subscribe",
+		"accepted", "activity__subscribing_open",
 	)
 	list_editable = ("accepted",)
 	ordering = ("activity", "priority", "participant",)
diff --git a/home/templates/admin.html b/home/templates/admin.html
index 2ce70f3e5df0a2c2dabc3a301740024b70920314..6335a12a8ea4a62aebf5617c8f41aa1ade1e0981 100644
--- a/home/templates/admin.html
+++ b/home/templates/admin.html
@@ -139,6 +139,10 @@
 			<div class="qty">Obtenus</div>
 			<div class="nb_small">{{ metrics.granted }}</div>
 		</div>
+		<div class="stat">
+			<div class="qty">Malformé</div>
+			<div class="nb_small">{{ metrics.malformed }}</div>
+		</div>
 	</div>
 
 	<p>*Le nombre d'activité "inscription" est le nombre d'activités affichée (dans la liste de la page
@@ -147,6 +151,12 @@
 		apparaître plusieures fois)
 	</p>
 
+	{% if metrics.malformed %}
+	<ul class="messagelist"><li class="error">
+		Des activités non ouvertes aux inscriptions apparaissent dans les listes de souhait.
+	</li></ul>
+	{% endif %}
+
 	<h2>Répartition des activités</h2>
 
 	<p>La répartition se fait depuis la <a href="{% url 'admin:index' %}">page d'administration de django</a>,
diff --git a/home/views.py b/home/views.py
index 395b3a2acec6e075c3dbf226f6d6f18a85ea1482..3facc96c516de6c98ef5f36d3408c41fef323409 100644
--- a/home/views.py
+++ b/home/views.py
@@ -155,6 +155,8 @@ class AdminView(SuperuserRequiredMixin, TemplateView):
 			rennes = registered.filter(school="R").count()
 			saclay = registered.filter(school="P").count()
 			non_registered = EmailUser.objects.filter(is_active=True).count() - participants
+			# mugs = registered.filter(mug=True).count()
+			sleeps = registered.filter(sleeps=True).count()
 
 			meal1 = registered.filter(meal_friday_evening=True).count()
 			meal2 = registered.filter(meal_saturday_morning=True).count()
@@ -164,21 +166,19 @@ class AdminView(SuperuserRequiredMixin, TemplateView):
 			meal6 = registered.filter(meal_sunday_midday=True).count()
 			meals = meal1 + meal2 + meal3 + meal4 + meal5 + meal6
 
-			# mugs = registered.filter(mug=True).count()
-			sleeps = registered.filter(sleeps=True).count()
-
 			activites = acts.count()
 			displayed = acts.filter(display=True).count()
 			planning = acts.filter(on_planning=True).count()
 			act_ins = acts.filter(display=True, must_subscribe=True).count()
-			true_ins = acts.filter(subscribing_open=True).count()
-			wish = wishes.count()
-			granted = wishes.filter(accepted=True).count()
-
 			st_present = acts.filter(display=True, status=InterludesActivity.Status.PRESENT).count()
 			st_distant = acts.filter(display=True, status=InterludesActivity.Status.DISTANT).count()
 			st_both = acts.filter(display=True, status=InterludesActivity.Status.BOTH).count()
 
+			true_ins = acts.filter(subscribing_open=True).count()
+			wish = wishes.count()
+			granted = wishes.filter(accepted=True).count()
+			malformed = ActivityList.objects.filter(activity__subscribing_open=False).count()
+
 		# validation de la repartition des activités
 		accepted = wishes.filter(accepted=True)
 		# order_by is useless but required