diff --git a/module/actor.js b/module/actor.js
index f1496e1f..b4bfe9c4 100644
--- a/module/actor.js
+++ b/module/actor.js
@@ -200,7 +200,6 @@ export class RdDActor extends Actor {
   async checkMonnaiePresence() { // Ajout opportuniste si les pièces n'existent pas.
     if (!this.items) return; // Sanity check during import
     let manquantes = Monnaie.monnaiesManquantes(this.itemTypes['monnaie']);
-    //console.log("Manque : ", manquantes);
     if (manquantes.length > 0) {
       await this.createEmbeddedDocuments('Item', manquantes, { renderSheet: false });
     }
@@ -929,26 +928,27 @@ export class RdDActor extends Actor {
     if (!competence) {
       return;
     }
+    const stress = this.system.compteurs.experience.value;
     const niveau = Number(competence.system.niveau);
-    const stressTransforme = this.system.compteurs.experience.value;
-    const xpRequis = RdDItemCompetence.getCompetenceNextXp(niveau) - competence.system.xp;
-    if (stressTransforme <= 0 || niveau >= competence.system.niveau_archetype || xpRequis <= 0) {
+    const xpSuivant = RdDItemCompetence.getCompetenceNextXp(niveau);
+    const xpRequis = xpSuivant - competence.system.xp;
+    if (stress <= 0 || niveau >= competence.system.niveau_archetype) {
       ui.notifications.info(`La compétence ne peut pas augmenter!
-          stress disponible: ${stressTransforme}
+          stress disponible: ${stress}
           expérience requise: ${xpRequis}
           niveau : ${niveau}
           archétype : ${competence.system.niveau_archetype}`);
       return;
     }
-    const xpUtilise = Math.min(stressTransforme, xpRequis);
-    const gainNiveau = xpUtilise >= xpRequis ? 1 : 0;
+    const xpUtilise = Math.max(0, Math.min(stress, xpRequis));
+    const gainNiveau = (xpUtilise >= xpRequis || xpRequis <=0) ? 1 : 0;
     const nouveauNiveau = niveau + gainNiveau;
-    const nouveauXp = gainNiveau > 0 ? Math.max(competence.system.xp - xpRequis, 0) : (competence.system.xp + xpUtilise);
+    const nouveauXp = gainNiveau > 0 ? Math.max(competence.system.xp - xpSuivant, 0) : (competence.system.xp + xpUtilise);
     await competence.update({
       "system.xp": nouveauXp,
       "system.niveau": nouveauNiveau,
     });
-    const stressTransformeRestant = Math.max(0, stressTransforme - xpUtilise);
+    const stressTransformeRestant = Math.max(0, stress - xpUtilise);
     await this.update({ "system.compteurs.experience.value": stressTransformeRestant });
     this.updateExperienceLog('Dépense stress', xpUtilise, `Stress en ${competence.name} ${gainNiveau ? "pour passer à " + nouveauNiveau : ""}`);
   }
diff --git a/module/item-monnaie.js b/module/item-monnaie.js
index bff8385c..077d4d2a 100644
--- a/module/item-monnaie.js
+++ b/module/item-monnaie.js
@@ -22,12 +22,19 @@ const MONNAIES_STANDARD = [
     system: { quantite: 0, valeur_deniers: 1000, encombrement: 0.004, description: "" }
   }
 ]
+const VALEURS_STANDARDS = MONNAIES_STANDARD.map(it =>it.system.valeur_deniers);
 
 export class Monnaie {
 
-  static isSystemMonnaie(item) {
-    let present = MONNAIES_STANDARD.find(monnaie => monnaie.system.valeur_deniers == item?.system?.valeur_deniers);
-    return present;
+  static isSystemMonnaie(item, items) {
+    if (item.type == 'monnaie')    {
+      const valeur = item.system.valeur_deniers;
+      if (VALEURS_STANDARDS.includes(valeur)) {
+        const monnaiesDeValeur = items.filter(it => it.type == 'monnaie' && it.system.valeur_deniers == valeur)
+        return monnaiesDeValeur.length<=1;
+      }
+    }
+    return false;
   }
 
   static monnaiesData() {
@@ -40,10 +47,10 @@ export class Monnaie {
 
   static monnaiesManquantes(disponibles) {
     const manquantes = MONNAIES_STANDARD.filter(standard => !disponibles.find(disponible => Monnaie.deValeur(disponible, standard.system?.valeur_deniers)));
-    if (manquantes.length>0) {
+    if (manquantes.length > 0) {
       console.error('monnaiesManquantes', manquantes, ' avec monnaies', disponibles, MONNAIES_STANDARD);
     }
-    return []; //manquantes;
+    return manquantes;
   }
 
   static deValeur(monnaie, valeur) {
diff --git a/module/rdd-sheet-utility.js b/module/rdd-sheet-utility.js
index 1289aef1..9f52b7b6 100644
--- a/module/rdd-sheet-utility.js
+++ b/module/rdd-sheet-utility.js
@@ -26,7 +26,7 @@ export class RdDSheetUtility {
       destId: destItemId,
       targetActorId: actorId,
       itemId: item.id,
-      sourceActorId: item.actor.id,
+      sourceActorId: item.actor?.id,
       srcId: objetVersConteneur[item.id],
       onEnleverConteneur: () => { delete objetVersConteneur[item.id]; },
       onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; }
diff --git a/module/rdd-utility.js b/module/rdd-utility.js
index 991c7506..04bcb0c9 100644
--- a/module/rdd-utility.js
+++ b/module/rdd-utility.js
@@ -130,6 +130,7 @@ export class RdDUtility {
       'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-vehicules.html',
       'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-editor-notes-mj.html',
       //Items
+      'systems/foundryvtt-reve-de-dragon/templates/header-item.html',
       'systems/foundryvtt-reve-de-dragon/templates/item-competence-sheet.html',
       'systems/foundryvtt-reve-de-dragon/templates/item-competencecreature-sheet.html',
       'systems/foundryvtt-reve-de-dragon/templates/item-arme-sheet.html',
@@ -860,7 +861,7 @@ export class RdDUtility {
     let itemId = li.data("item-id");
     let objet = actorSheet.actor.getObjet(itemId);
 
-    if (objet.type == 'monnaie' && Monnaie.isSystemMonnaie(objet)) {
+    if (Monnaie.isSystemMonnaie(objet, actorSheet.actor.items)) {
       ui.notifications.warn("Suppression des monnaies de base impossible");
       return;
     }
diff --git a/templates/header-item.html b/templates/header-item.html
new file mode 100644
index 00000000..3638564a
--- /dev/null
+++ b/templates/header-item.html
@@ -0,0 +1,6 @@
+
+