diff --git a/app/scodoc/sco_evaluations.py b/app/scodoc/sco_evaluations.py
index 9c5fad6d783bd229c6e5bd92293941eccf8bbf71..6d00c241148f62d3f1213709e30d869f1ddc2e87 100644
--- a/app/scodoc/sco_evaluations.py
+++ b/app/scodoc/sco_evaluations.py
@@ -514,6 +514,115 @@ def formsemestre_evaluations_cal(formsemestre_id):
     )
 
 
+########################################################################
+########################################################################
+########################################################################
+
+
+def form_eval_choice(
+    groups_infos,
+    with_selectall_butt=False,
+    with_deselect_butt=False,
+    submit_on_change=False,
+    default_deselect_others=False,
+    args: dict | None = None,
+    title="Evaluations additionnelles :",
+):
+    """
+    """
+    default_group_id = sco_groups.get_default_group(groups_infos.formsemestre_id)
+    args = args or {}
+    args_wdg = "\n".join(
+        [
+            f"""<input type="hidden" name="{k}" value="{v}"/>"""
+            for k, v in args.items()
+            if k not in ("formsemestre_id", "group_ids")
+        ]
+    )
+    H = [
+        f"""
+    <form id="group_selector" method="get">
+        <input type="hidden" name="formsemestre_id" id="formsemestre_id"
+            value="{groups_infos.formsemestre_id}"/>
+        <input type="hidden" name="default_group_id" id="default_group_id"
+            value="{default_group_id}"/>
+        {args_wdg}
+        {title}
+    {
+        menu_evals_choice(
+            groups_infos,
+            submit_on_change=submit_on_change,
+            default_deselect_others=default_deselect_others,
+        )
+    }
+    """
+    ]
+    if with_selectall_butt:
+        H.append(
+            """<input type="button" value="sélectionner tous" onmousedown="select_groupe_tous();"/>"""
+        )
+    if with_deselect_butt:
+        H.append(
+            """<input type="button" value="ne pas filtrer" onmousedown="remove_group_filter();"/>"""
+        )
+    H.append("</form>")
+
+    return "\n".join(H)
+
+def menu_evals_choice(
+    groups_infos,
+    submit_on_change=False,
+    default_deselect_others=True,
+):
+    """
+    """
+    default_group_id = sco_groups.get_default_group(groups_infos.formsemestre_id)
+    n_members = len(sco_groups.get_group_members(default_group_id))
+
+    values: dict = {
+        # Choix : Tous (tous les groupes)
+        "": [
+            {
+                "value": default_group_id,
+                "label": f"Tous ({n_members})",
+                "selected": default_group_id in groups_infos.group_ids,
+                "single": default_deselect_others,
+            }
+        ]
+    }
+
+    for partition in groups_infos.partitions:
+        p_name: str = partition["partition_name"]
+        vals: list[tuple[str, str, bool]] = []
+        # Les groupes dans cette partition:
+        for grp in sco_groups.get_partition_groups(partition): ############################################
+            selected: bool = grp["group_id"] in groups_infos.group_ids
+            if grp["group_name"]:
+                vals.append(
+                    {
+                        "value": grp["group_id"],
+                        "label": f"{grp['group_name']} ({len(sco_groups.get_group_members(grp['group_id']))})",
+                        "selected": selected,
+                    }
+                )
+
+        values[p_name] = vals
+
+    multi_select: scu.MultiSelect = scu.MultiSelect(
+        values=values, name="group_ids", html_id="group_ids_sel"
+    )
+
+    if submit_on_change:
+        multi_select.change_event("submit_group_selector();")
+
+    return multi_select.html()
+
+
+########################################################################
+########################################################################
+########################################################################
+
+
 def evaluation_date_first_completion(evaluation_id) -> datetime.datetime:
     """Première date à laquelle l'évaluation a été complète
     ou None si actuellement incomplète
diff --git a/app/scodoc/sco_saisie_notes.py b/app/scodoc/sco_saisie_notes.py
index cb13fccd03290819e1237e73a920b2bf3237c2f9..2aa562d1ec2746228604260d82ad3565329000ac 100644
--- a/app/scodoc/sco_saisie_notes.py
+++ b/app/scodoc/sco_saisie_notes.py
@@ -678,6 +678,7 @@ def saisie_notes(evaluation: Evaluation, group_ids: list[int] | tuple[int] = ())
         '<div id="saisie_notes"><span class="eval_title">Saisie des notes</span>',
     ]
     H.append("""<div id="group-tabs"><table><tr><td>""")
+    H.append(sco_evaluations.form_eval_choice(groups_infos, submit_on_change=True))
     H.append(sco_groups_view.form_groups_choice(groups_infos, submit_on_change=True))
     H.append('</td><td style="padding-left: 35px;">')
     H.append(