diff --git a/app/scodoc/sco_excel.py b/app/scodoc/sco_excel.py
index a0c25c15852b8240f7c2301ee924b5c21c4eb37f..0b04975291c77e3fcea9898916004a99ff7cf7fd 100644
--- a/app/scodoc/sco_excel.py
+++ b/app/scodoc/sco_excel.py
@@ -40,7 +40,9 @@ from openpyxl.styles.numbers import FORMAT_NUMBER_00, FORMAT_GENERAL, FORMAT_DAT
 from openpyxl.comments import Comment
 from openpyxl import Workbook, load_workbook
 from openpyxl.cell import WriteOnlyCell
+from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE
 from openpyxl.styles import Font, Border, Side, Alignment, PatternFill
+from openpyxl.utils.exceptions import IllegalCharacterError
 from openpyxl.worksheet.worksheet import Worksheet
 
 import app.scodoc.sco_utils as scu
@@ -366,8 +368,17 @@ class ScoExcelSheet:
             value = value.replace(tzinfo=None)
 
         # création de la cellule
-        cell = WriteOnlyCell(self.ws, value)
-
+        try:
+            cell = WriteOnlyCell(self.ws, value)
+        except IllegalCharacterError as exc:
+            if isinstance(value, str):
+                # chaine contenant un caractère interdit dans Excel: élimine
+                value = ILLEGAL_CHARACTERS_RE.sub("", value)
+                cell = WriteOnlyCell(self.ws, value)
+            else:
+                raise ScoValueError(
+                    f"Valeur de cellule non autorisée: {value}"
+                ) from exc
         # recopie des styles
         if style is None:
             style = self.default_style
diff --git a/sco_version.py b/sco_version.py
index 007858c8e0c9689f775913ee1382f98f750598ed..efbf916092e02724b071d4b601c83905ca4259c0 100644
--- a/sco_version.py
+++ b/sco_version.py
@@ -3,7 +3,7 @@
 
 "Infos sur version ScoDoc"
 
-SCOVERSION = "9.7.63"
+SCOVERSION = "9.7.64"
 
 SCONAME = "ScoDoc"