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"