diff --git a/app/scodoc/sco_utils.py b/app/scodoc/sco_utils.py
index 5aeb45364245283b61096a6b150522b8d67a5fc9..25245424edede1cc8a2ea88d1160dba940b89588 100644
--- a/app/scodoc/sco_utils.py
+++ b/app/scodoc/sco_utils.py
@@ -1463,7 +1463,12 @@ def date_debut_annee_scolaire(annee_sco: int | None = None) -> datetime.datetime
     """
     if annee_sco is None:
         annee_sco = annee_scolaire()
-    return datetime.datetime(year=annee_sco, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1)
+    try:
+        return datetime.datetime(
+            year=annee_sco, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1
+        )
+    except ValueError as exc:
+        raise ScoValueError("année scolaire invalide") from exc
 
 
 def date_fin_annee_scolaire(annee_sco: int | None = None) -> datetime.datetime:
@@ -1475,9 +1480,12 @@ def date_fin_annee_scolaire(annee_sco: int | None = None) -> datetime.datetime:
     # On s'affranchit ainsi des problèmes de durées de mois.
     if annee_sco is None:
         annee_sco = annee_scolaire()
-    return datetime.datetime(
-        year=annee_sco + 1, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1
-    ) - datetime.timedelta(days=1)
+    try:
+        return datetime.datetime(
+            year=annee_sco + 1, month=MONTH_DEBUT_ANNEE_SCOLAIRE, day=1
+        ) - datetime.timedelta(days=1)
+    except (TypeError, ValueError) as exc:
+        raise ScoValueError("année scolaire invalide") from exc
 
 
 def sem_decale_str(sem):
diff --git a/sco_version.py b/sco_version.py
index 6aa3cea4a4d8d96d4084b3dd7594516957cb3e7f..2f45e0690d565f9ceda9d5b9282dc4094a756ea9 100644
--- a/sco_version.py
+++ b/sco_version.py
@@ -3,7 +3,7 @@
 
 "Infos sur version ScoDoc"
 
-SCOVERSION = "9.7.45"
+SCOVERSION = "9.7.46"
 
 SCONAME = "ScoDoc"