diff --git a/modele/data_client.ts b/modele/data_client.ts
index 496f4cf3cb29a203c51c007bfd95ec59d308b0d4..19a5215f7688bec3a27d95e6ae1ec7198c0d6015 100644
--- a/modele/data_client.ts
+++ b/modele/data_client.ts
@@ -27,6 +27,10 @@ class Client {
         return this._id_cli;
     }
     set id_cli(value: string) {
+        const idNumber = Number(value);
+        if (!Number.isInteger(idNumber) || idNumber <= 0) {
+            throw new Error("id_cli doit être un entier supérieur à 0");
+        }
         this._id_cli = value;
     }
 
@@ -34,6 +38,9 @@ class Client {
         return this._civ_cli;
     }
     set civ_cli(value: string) {
+        if (value !== "M." && value !== "Mme") {
+            throw new Error('civ_cli doit être "M." ou "Mme"');
+        }
         this._civ_cli = value;
     }
 
@@ -41,6 +48,9 @@ class Client {
         return this._nom_cli;
     }
     set nom_cli(value: string) {
+        if (value.length < 2 || !/^[a-zA-Z]+$/.test(value)) {
+            throw new Error("nom_cli doit avoir au moins 2 caractères alphabétiques");
+        }
         this._nom_cli = value;
     }
 
@@ -48,6 +58,9 @@ class Client {
         return this._prenom_cli;
     }
     set prenom_cli(value: string) {
+        if (value.length < 2 || !/^[a-zA-Z]+$/.test(value)) {
+            throw new Error("prenom_cli doit avoir au moins 2 caractères alphabétiques");
+        }
         this._prenom_cli = value;
     }
 
@@ -62,6 +75,9 @@ class Client {
         return this._mel_cli;
     }
     set mel_cli(value: string) {
+        if (!value.includes("@")) {
+            throw new Error("mel_cli doit contenir au moins un '@'");
+        }
         this._mel_cli = value;
     }
 
@@ -69,6 +85,9 @@ class Client {
         return this._adr_cli;
     }
     set adr_cli(value: string) {
+        if (value.length < 15) {
+            throw new Error("adr_cli doit avoir au moins 15 caractères");
+        }
         this._adr_cli = value;
     }
 
@@ -83,6 +102,9 @@ class Client {
         return this._commune_cli;
     }
     set commune_cli(value: string) {
+        if (value.length < 2) {
+            throw new Error("commune_cli doit avoir au moins 2 caractères");
+        }
         this._commune_cli = value;
     }
 
@@ -90,7 +112,12 @@ class Client {
         return this._tauxmax_remise_cli;
     }
     set tauxmax_remise_cli(value: string) {
+        const taux = Number(value);
+        if (isNaN(taux) || taux < 0 || taux > 100) {
+            throw new Error("tauxmax_remise_cli doit être un nombre entre 0 et 100");
+        }
         this._tauxmax_remise_cli = value;
     }
 }
+
 export { Client }
\ No newline at end of file
diff --git a/modele/data_facture.ts b/modele/data_facture.ts
index c98cc0d1f6ade80800af559beda0f494de91b1ff..765e96f241153e3c6b7ac835c9243d6de0b45906 100644
--- a/modele/data_facture.ts
+++ b/modele/data_facture.ts
@@ -1,4 +1,4 @@
-class Facture {	
+class Facture {
     private _num_fact: string;
     private _date_fact: string;
     private _comment_fact: string;
@@ -6,7 +6,7 @@ class Facture {
     private _id_cli: string;
     private _id_forfait: string;
 
-    constructor(num_fact = "", date_fact = "", comment_fact = "", taux_remise_fact = "", id_cli = "", id_forfait= "") {
+    constructor(num_fact = "", date_fact = "", comment_fact = "", taux_remise_fact = "", id_cli = "", id_forfait = "") {
         this._num_fact = num_fact;
         this._date_fact = date_fact;
         this._comment_fact = comment_fact;
@@ -19,6 +19,10 @@ class Facture {
         return this._num_fact;
     }
     set num_fact(value: string) {
+        const num = Number(value);
+        if (!Number.isInteger(num) || num <= 0) {
+            throw new Error("num_fact doit être un entier supérieur à 0");
+        }
         this._num_fact = value;
     }
 
@@ -26,6 +30,9 @@ class Facture {
         return this._date_fact;
     }
     set date_fact(value: string) {
+        if (isNaN(Date.parse(value))) {
+            throw new Error("date_fact doit être une date valide");
+        }
         this._date_fact = value;
     }
 
@@ -40,6 +47,10 @@ class Facture {
         return this._taux_remise_fact;
     }
     set taux_remise_fact(value: string) {
+        const taux = Number(value);
+        if (isNaN(taux) || taux < 0 || taux > 100) {
+            throw new Error("taux_remise_fact doit être un nombre entre 0 et 100");
+        }
         this._taux_remise_fact = value;
     }
 
@@ -47,6 +58,10 @@ class Facture {
         return this._id_cli;
     }
     set id_cli(value: string) {
+        const idNumber = Number(value);
+        if (!Number.isInteger(idNumber) || idNumber <= 0) {
+            throw new Error("id_cli doit être un entier supérieur à 0");
+        }
         this._id_cli = value;
     }
 
@@ -57,4 +72,5 @@ class Facture {
         this._id_forfait = value;
     }
 }
-export { Facture };
\ No newline at end of file
+
+export { Facture }
diff --git a/modele/data_forfait.ts b/modele/data_forfait.ts
index 862965b8b638043078cf5c67f9151e8647e2ed7b..b588b166b5cb12a685e543651f076bcdc8b95ca6 100644
--- a/modele/data_forfait.ts
+++ b/modele/data_forfait.ts
@@ -13,6 +13,9 @@ class Forfait_livraison {
         return this._lib_forfait;
     }
     set lib_forfait(value: string) {
+        if (value.length < 5) {
+            throw new Error("lib_forfait doit avoir au moins 5 caractères");
+        }
         this._lib_forfait = value;
     }
 
@@ -20,6 +23,9 @@ class Forfait_livraison {
         return this._id_forfait;
     }
     set id_forfait(value: string) {
+        if (value.length < 3 || value.length > 6) {
+            throw new Error("id_forfait doit être une chaîne entre 3 et 6 caractères");
+        }
         this._id_forfait = value;
     }
 
@@ -27,7 +33,12 @@ class Forfait_livraison {
         return this._mt_forfait;
     }
     set mt_forfait(value: string) {
+        const montant = Number(value);
+        if (isNaN(montant) || montant <= 0) {
+            throw new Error("mt_forfait doit être un réel supérieur à 0");
+        }
         this._mt_forfait = value;
     }
 }
+
 export { Forfait_livraison }
\ No newline at end of file
diff --git a/modele/data_ligne.ts b/modele/data_ligne.ts
index 96fd8a6105730d1cbb4e1e0fef638b65fcc48ef8..7e9a96063b63cc5401b22219c2decf6c16e06467 100644
--- a/modele/data_ligne.ts
+++ b/modele/data_ligne.ts
@@ -27,6 +27,10 @@ class Ligne {
         return this._qte_prod;
     }
     set qte_prod(value: string) {
+        const quantite = Number(value);
+        if (!Number.isInteger(quantite) || quantite <= 0) {
+            throw new Error("qte_prod doit être un entier supérieur à 0");
+        }
         this._qte_prod = value;
     }
 }
diff --git a/modele/data_produit.ts b/modele/data_produit.ts
index 33d07e3b7e9b91310a318a260cd86f0a9348ef6b..f86f1b76cbc149affdc210a101ffe56953398ae4 100644
--- a/modele/data_produit.ts
+++ b/modele/data_produit.ts
@@ -19,6 +19,9 @@ class Produit {
         return this._code_prod;
     }
     set code_prod(value: string) {
+        if (value.length < 3 || value.length > 8) {
+            throw new Error("code_prod doit être une chaîne de 3 à 8 caractères");
+        }
         this._code_prod = value;
     }
 
@@ -26,6 +29,9 @@ class Produit {
         return this._lib_prod;
     }
     set lib_prod(value: string) {
+        if (value.length < 4) {
+            throw new Error("lib_prod doit avoir au moins 4 caractères");
+        }
         this._lib_prod = value;
     }
 
@@ -33,6 +39,9 @@ class Produit {
         return this._type;
     }
     set type(value: string) {
+        if (value !== "plate" && value !== "pétillante") {
+            throw new Error('type doit être "plate" ou "pétillante"');
+        }
         this._type = value;
     }
 
@@ -40,6 +49,9 @@ class Produit {
         return this._origine;
     }
     set origine(value: string) {
+        if (value.length < 3) {
+            throw new Error("origine doit avoir au moins 3 caractères");
+        }
         this._origine = value;
     }
 
@@ -47,6 +59,10 @@ class Produit {
         return this._conditionnement;
     }
     set conditionnement(value: string) {
+        const cond = Number(value);
+        if (!Number.isInteger(cond) || cond < 25 || cond > 200) {
+            throw new Error("conditionnement doit être un entier entre 25 et 200");
+        }
         this._conditionnement = value;
     }
 
@@ -54,7 +70,12 @@ class Produit {
         return this._tarif_ht;
     }
     set tarif_ht(value: string) {
+        const tarif = Number(value);
+        if (isNaN(tarif) || tarif <= 0) {
+            throw new Error("tarif_ht doit être un réel supérieur à 0");
+        }
         this._tarif_ht = value;
     }
 }
+
 export { Produit }
diff --git a/modele/test_data.test.ts b/modele/test_data.test.ts
index 9359c2a50109d90eb23de55271ae5066d7ead4f2..6654636d1b82cfc3c4658f04a219b2e4fb56b132 100644
--- a/modele/test_data.test.ts
+++ b/modele/test_data.test.ts
@@ -21,6 +21,140 @@ Deno.test("Client initialisation compléte correcte", () => {
   assertEquals(client.tauxmax_remise_cli, "10");
 });
 
+// Tests des setters avec valeurs incorrectes
+
+Deno.test("Set id_cli négatif", () => {
+  const a = new Client();
+  assertThrows(() => a.id_cli = "-1", Error);
+});
+
+Deno.test("Set id_cli zéro", () => {
+  const a = new Client();
+  assertThrows(() => a.id_cli = "0", Error);
+});
+
+Deno.test("Set id_cli non entier", () => {
+  const a = new Client();
+  assertThrows(() => a.id_cli = "abc", Error);
+});
+
+Deno.test("Set civ_cli invalide", () => {
+  const a = new Client();
+  assertThrows(() => a.civ_cli = "Dr", Error);
+});
+
+Deno.test("Set nom_cli trop court", () => {
+  const a = new Client();
+  assertThrows(() => a.nom_cli = "P", Error);
+});
+
+Deno.test("Set nom_cli avec non alphabetique", () => {
+  const a = new Client();
+  assertThrows(() => a.nom_cli = "P1", Error);
+});
+
+Deno.test("Set prenom_cli trop court", () => {
+  const a = new Client();
+  assertThrows(() => a.prenom_cli = "H", Error);
+});
+
+Deno.test("Set prenom_cli avec non alphabetique", () => {
+  const a = new Client();
+  assertThrows(() => a.prenom_cli = "H1", Error);
+});
+
+Deno.test("Set mel_cli sans '@'", () => {
+  const a = new Client();
+  assertThrows(() => a.mel_cli = "huguesporchet.com", Error);
+});
+
+Deno.test("Set adr_cli trop court", () => {
+  const a = new Client();
+  assertThrows(() => a.adr_cli = "4 place", Error);
+});
+
+Deno.test("Set commune_cli trop court", () => {
+  const a = new Client();
+  assertThrows(() => a.commune_cli = "M", Error);
+});
+
+Deno.test("Set tauxmax_remise_cli négatif", () => {
+  const a = new Client();
+  assertThrows(() => a.tauxmax_remise_cli = "-1", Error);
+});
+
+Deno.test("Set tauxmax_remise_cli supérieur à 100", () => {
+  const a = new Client();
+  assertThrows(() => a.tauxmax_remise_cli = "101", Error);
+});
+
+Deno.test("Set tauxmax_remise_cli non numérique", () => {
+  const a = new Client();
+  assertThrows(() => a.tauxmax_remise_cli = "abc", Error);
+});
+
+// Tests pour les setters de Client
+
+Deno.test("Set id_cli correctement", () => {
+  const a = new Client();
+  a.id_cli = "10";
+  assertEquals(a.id_cli, "10");
+});
+
+Deno.test("Set civ_cli correctement", () => {
+  const a = new Client();
+  a.civ_cli = "Mme";
+  assertEquals(a.civ_cli, "Mme");
+});
+
+Deno.test("Set nom_cli correctement", () => {
+  const a = new Client();
+  a.nom_cli = "Dupont";
+  assertEquals(a.nom_cli, "Dupont");
+});
+
+Deno.test("Set prenom_cli correctement", () => {
+  const a = new Client();
+  a.prenom_cli = "Jean";
+  assertEquals(a.prenom_cli, "Jean");
+});
+
+Deno.test("Set tel_cli correctement", () => {
+  const a = new Client();
+  a.tel_cli = "0123456789";
+  assertEquals(a.tel_cli, "0123456789");
+});
+
+Deno.test("Set mel_cli correctement", () => {
+  const a = new Client();
+  a.mel_cli = "jean.dupont@example.com";
+  assertEquals(a.mel_cli, "jean.dupont@example.com");
+});
+
+Deno.test("Set adr_cli correctement", () => {
+  const a = new Client();
+  a.adr_cli = "123 rue de la Paix";
+  assertEquals(a.adr_cli, "123 rue de la Paix");
+});
+
+Deno.test("Set cp_cli correctement", () => {
+  const a = new Client();
+  a.cp_cli = "75001";
+  assertEquals(a.cp_cli, "75001");
+});
+
+Deno.test("Set commune_cli correctement", () => {
+  const a = new Client();
+  a.commune_cli = "Paris";
+  assertEquals(a.commune_cli, "Paris");
+});
+
+Deno.test("Set tauxmax_remise_cli correctement", () => {
+  const a = new Client();
+  a.tauxmax_remise_cli = "15";
+  assertEquals(a.tauxmax_remise_cli, "15");
+});
+
 // Tests pour data_facture.ts
 Deno.test("Facture initialisation compléte correcte", () => {
   const facture = new Facture("8", "2021-05-01", "paiement différé", "5", "1", "EXPRES");
@@ -32,6 +166,96 @@ Deno.test("Facture initialisation compléte correcte", () => {
   assertEquals(facture.id_forfait, "EXPRES");
 });
 
+// Tests des setters avec valeurs incorrectes
+
+Deno.test("Set num_fact négatif", () => {
+  const a = new Facture();
+  assertThrows(() => a.num_fact = "-1", Error);
+});
+
+Deno.test("Set num_fact zéro", () => {
+  const a = new Facture();
+  assertThrows(() => a.num_fact = "0", Error);
+});
+
+Deno.test("Set num_fact non entier", () => {
+  const a = new Facture();
+  assertThrows(() => a.num_fact = "abc", Error);
+});
+
+Deno.test("Set date_fact invalide", () => {
+  const a = new Facture();
+  assertThrows(() => a.date_fact = "invalid-date", Error);
+});
+
+Deno.test("Set taux_remise_fact négatif", () => {
+  const a = new Facture();
+  assertThrows(() => a.taux_remise_fact = "-1", Error);
+});
+
+Deno.test("Set taux_remise_fact supérieur à 100", () => {
+  const a = new Facture();
+  assertThrows(() => a.taux_remise_fact = "101", Error);
+});
+
+Deno.test("Set taux_remise_fact non numérique", () => {
+  const a = new Facture();
+  assertThrows(() => a.taux_remise_fact = "abc", Error);
+});
+
+Deno.test("Set id_cli négatif", () => {
+  const a = new Facture();
+  assertThrows(() => a.id_cli = "-1", Error);
+});
+
+Deno.test("Set id_cli zéro", () => {
+  const a = new Facture();
+  assertThrows(() => a.id_cli = "0", Error);
+});
+
+Deno.test("Set id_cli non entier", () => {
+  const a = new Facture();
+  assertThrows(() => a.id_cli = "abc", Error);
+});
+
+// Tests pour les setters de Facture
+
+Deno.test("Set num_fact correctement", () => {
+  const a = new Facture();
+  a.num_fact = "10";
+  assertEquals(a.num_fact, "10");
+});
+
+Deno.test("Set date_fact correctement", () => {
+  const a = new Facture();
+  a.date_fact = "2023-05-01";
+  assertEquals(a.date_fact, "2023-05-01");
+});
+
+Deno.test("Set comment_fact correctement", () => {
+  const a = new Facture();
+  a.comment_fact = "Paiement comptant";
+  assertEquals(a.comment_fact, "Paiement comptant");
+});
+
+Deno.test("Set taux_remise_fact correctement", () => {
+  const a = new Facture();
+  a.taux_remise_fact = "10";
+  assertEquals(a.taux_remise_fact, "10");
+});
+
+Deno.test("Set id_cli correctement", () => {
+  const a = new Facture();
+  a.id_cli = "5";
+  assertEquals(a.id_cli, "5");
+});
+
+Deno.test("Set id_forfait correctement", () => {
+  const a = new Facture();
+  a.id_forfait = "EXPRES";
+  assertEquals(a.id_forfait, "EXPRES");
+});
+
 // Tests pour data_forfait.ts
 Deno.test("Forfait_livraison initialisation compléte correcte", () => {
   const forfait = new Forfait_livraison("livraison standard", "STD", "10");
@@ -40,6 +264,58 @@ Deno.test("Forfait_livraison initialisation compléte correcte", () => {
   assertEquals(forfait.mt_forfait, "10");
 });
 
+// Tests des setters avec valeurs incorrectes
+
+Deno.test("Set lib_forfait trop court", () => {
+  const a = new Forfait_livraison();
+  assertThrows(() => a.lib_forfait = "test", Error);
+});
+
+Deno.test("Set id_forfait trop court", () => {
+  const a = new Forfait_livraison();
+  assertThrows(() => a.id_forfait = "AB", Error);
+});
+
+Deno.test("Set id_forfait trop long", () => {
+  const a = new Forfait_livraison();
+  assertThrows(() => a.id_forfait = "ABCDEFG", Error);
+});
+
+Deno.test("Set mt_forfait négatif", () => {
+  const a = new Forfait_livraison();
+  assertThrows(() => a.mt_forfait = "-1", Error);
+});
+
+Deno.test("Set mt_forfait zéro", () => {
+  const a = new Forfait_livraison();
+  assertThrows(() => a.mt_forfait = "0", Error);
+});
+
+Deno.test("Set mt_forfait non numérique", () => {
+  const a = new Forfait_livraison();
+  assertThrows(() => a.mt_forfait = "abc", Error);
+});
+
+// Tests pour les setters de Forfait_livraison
+
+Deno.test("Set lib_forfait correctement", () => {
+  const a = new Forfait_livraison();
+  a.lib_forfait = "Livraison standard";
+  assertEquals(a.lib_forfait, "Livraison standard");
+});
+
+Deno.test("Set id_forfait correctement", () => {
+  const a = new Forfait_livraison();
+  a.id_forfait = "STD";
+  assertEquals(a.id_forfait, "STD");
+});
+
+Deno.test("Set mt_forfait correctement", () => {
+  const a = new Forfait_livraison();
+  a.mt_forfait = "15.50";
+  assertEquals(a.mt_forfait, "15.50");
+});
+
 //Tests pour data_ligne.ts
 
 Deno.test("Ligne initialisation compléte correcte", () => {
@@ -49,6 +325,43 @@ Deno.test("Ligne initialisation compléte correcte", () => {
   assertEquals(ligne.qte_prod, "10");
 });
 
+// Tests des setters avec valeurs incorrectes
+
+Deno.test("Set qte_prod négatif", () => {
+  const a = new Ligne();
+  assertThrows(() => a.qte_prod = "-1", Error);
+});
+
+Deno.test("Set qte_prod zéro", () => {
+  const a = new Ligne();
+  assertThrows(() => a.qte_prod = "0", Error);
+});
+
+Deno.test("Set qte_prod non entier", () => {
+  const a = new Ligne();
+  assertThrows(() => a.qte_prod = "abc", Error);
+});
+
+// Tests pour les setters de Ligne
+
+Deno.test("Set num_fact correctement", () => {
+  const a = new Ligne();
+  a.num_fact = "5";
+  assertEquals(a.num_fact, "5");
+});
+
+Deno.test("Set code_prod correctement", () => {
+  const a = new Ligne();
+  a.code_prod = "ACQARMAP";
+  assertEquals(a.code_prod, "ACQARMAP");
+});
+
+Deno.test("Set qte_prod correctement", () => {
+  const a = new Ligne();
+  a.qte_prod = "25";
+  assertEquals(a.qte_prod, "25");
+});
+
 // Tests pour data_produits.ts
 Deno.test("Produit initialisation", () => {
   const produit = new Produit("HEALSIPO", "Healsio", "plate", "Portugal", "100", "1.90");
@@ -58,4 +371,99 @@ Deno.test("Produit initialisation", () => {
   assertEquals(produit.origine, "Portugal");
   assertEquals(produit.conditionnement, "100");
   assertEquals(produit.tarif_ht, "1.90");
+});
+
+// Tests des setters avec valeurs incorrectes
+
+Deno.test("Set code_prod trop court", () => {
+  const a = new Produit();
+  assertThrows(() => a.code_prod = "AB", Error);
+});
+
+Deno.test("Set code_prod trop long", () => {
+  const a = new Produit();
+  assertThrows(() => a.code_prod = "ABCDEFGHI", Error);
+});
+
+Deno.test("Set lib_prod trop court", () => {
+  const a = new Produit();
+  assertThrows(() => a.lib_prod = "AB", Error);
+});
+
+Deno.test("Set type invalide", () => {
+  const a = new Produit();
+  assertThrows(() => a.type = "gazeuse", Error);
+});
+
+Deno.test("Set origine trop court", () => {
+  const a = new Produit();
+  assertThrows(() => a.origine = "FR", Error);
+});
+
+Deno.test("Set conditionnement trop petit", () => {
+  const a = new Produit();
+  assertThrows(() => a.conditionnement = "20", Error);
+});
+
+Deno.test("Set conditionnement trop grand", () => {
+  const a = new Produit();
+  assertThrows(() => a.conditionnement = "201", Error);
+});
+
+Deno.test("Set conditionnement non entier", () => {
+  const a = new Produit();
+  assertThrows(() => a.conditionnement = "abc", Error);
+});
+
+Deno.test("Set tarif_ht négatif", () => {
+  const a = new Produit();
+  assertThrows(() => a.tarif_ht = "-1.00", Error);
+});
+
+Deno.test("Set tarif_ht zéro", () => {
+  const a = new Produit();
+  assertThrows(() => a.tarif_ht = "0", Error);
+});
+
+Deno.test("Set tarif_ht non numérique", () => {
+  const a = new Produit();
+  assertThrows(() => a.tarif_ht = "abc", Error);
+});
+
+// Tests pour les setters de Produit
+
+Deno.test("Set code_prod correctement", () => {
+  const a = new Produit();
+  a.code_prod = "HEALSIPO";
+  assertEquals(a.code_prod, "HEALSIPO");
+});
+
+Deno.test("Set lib_prod correctement", () => {
+  const a = new Produit();
+  a.lib_prod = "Healsio";
+  assertEquals(a.lib_prod, "Healsio");
+});
+
+Deno.test("Set type correctement", () => {
+  const a = new Produit();
+  a.type = "plate";
+  assertEquals(a.type, "plate");
+});
+
+Deno.test("Set origine correctement", () => {
+  const a = new Produit();
+  a.origine = "Portugal";
+  assertEquals(a.origine, "Portugal");
+});
+
+Deno.test("Set conditionnement correctement", () => {
+  const a = new Produit();
+  a.conditionnement = "100";
+  assertEquals(a.conditionnement, "100");
+});
+
+Deno.test("Set tarif_ht correctement", () => {
+  const a = new Produit();
+  a.tarif_ht = "1.90";
+  assertEquals(a.tarif_ht, "1.90");
 });
\ No newline at end of file