diff --git a/app/formations/formation_io.py b/app/formations/formation_io.py
index f6087994f649b3ec2bae9b3ebe87498529d7d894..8b2dfd4218fb8bc16265eef74c3c3ccffdb868d1 100644
--- a/app/formations/formation_io.py
+++ b/app/formations/formation_io.py
@@ -439,13 +439,17 @@ def formation_import_xml(doc: str | bytes, import_tags=True, use_local_refcomp=F
                                 referentiel_competence_id is not None
                             ):
                                 ac_code = child[1]["code"]
+                                ac_libelle = child[1]["libelle"]
+                                # Suppose que le couple (code,libelle) est unique dans le ref. comp.
                                 ac = (
-                                    ApcAppCritique.query.filter_by(code=ac_code)
+                                    ApcAppCritique.query.filter_by(
+                                        code=ac_code, libelle=ac_libelle
+                                    )
                                     .join(ApcNiveau)
                                     .join(ApcCompetence)
                                     .filter_by(referentiel_id=referentiel_competence_id)
                                 ).first()
-                                if ac is not None:
+                                if (ac is not None) and ac not in module.app_critiques:
                                     module.app_critiques.append(ac)
                                     db.session.add(module)
                                 else:
diff --git a/app/models/but_refcomp.py b/app/models/but_refcomp.py
index 69c3e0fc59926ba1925bf165c4ee98da3bdf06c7..635af3f9c4d7c64b734b9f391e6197c6f3ecbdec 100644
--- a/app/models/but_refcomp.py
+++ b/app/models/but_refcomp.py
@@ -644,15 +644,16 @@ class ApcAppCritique(models.ScoDocModel, XMLModel):
         return query
 
     def to_dict(self, with_code=False) -> dict:
+        "as a dict, with an oid guaranteed unique"
         if with_code:
-            return {"code": self.code, "libelle": self.libelle}
-        return {"libelle": self.libelle}
+            return {"code": self.code, "libelle": self.libelle, "oid": self.id}
+        return {"libelle": self.libelle, "oid": self.id}
 
     def get_label(self) -> str:
         return self.code + " - " + self.titre
 
     def __repr__(self):
-        return f"<{self.__class__.__name__} {self.code!r}>"
+        return f"<{self.__class__.__name__} id={self.id} {self.code!r}>"
 
     def get_saes(self):
         """Liste des SAE associƩes"""