diff --git a/app.js b/app.js
index a82e0d468037dd72bfe8e5137b147e5daf4ea5e5..60e5638c370cd6dc825db9103c474f091c03d522 100644
--- a/app.js
+++ b/app.js
@@ -84,6 +84,39 @@ app.get("/document", (req, res) => {
 });
 
 
+//  route pour la sauvegarde de documents 
+app.post('/document/save', async (req, res) => {
+    try {
+        const documentData = req.body;
+        const savedDocumentId = await db.saveDocument(documentData);
+
+        res.status(200).json({ message: 'Document sauvegardé avec succès', documentId: savedDocumentId });
+    } catch (error) {
+        console.error('Erreur lors de la sauvegarde du document:', error);
+        res.status(500).json({ message: 'Erreur lors de la sauvegarde du document' });
+    }
+});
+
+
+
+// route pour affichier mes docs
+app.get("/mes-documents", async (req, res) => {
+    if (!res.locals.user) {
+        return res.redirect("/login"); // Redirige vers la page de connexion si l'utilisateur n'est pas connecté
+    }
+    try {
+        // la fonction db.getDocumentsByUserId(userId) renvoie tous les documents pour cet utilisateur
+        const documents = await db.getDocumentsByUserId(res.locals.user._id);
+        res.render("index", { documents: documents }); // Passezles documents au template EJS
+    } catch (error) {
+        console.error('Erreur lors de la récupération des documents:', error);
+        res.status(500).send('Erreur lors de la récupération des documents');
+    }
+});
+
+
+
+
 
 app.all("*", (req, res) => res.status(404).send("<h1>Il semblerait que cette page n'existe pas.</h1>"));
 
diff --git a/db/Database.js b/db/Database.js
index 948635d7b2ef047f06f606227663452f8f6d6fb9..b111cec24528869fecc14609cd5e7a66c84ac4d2 100644
--- a/db/Database.js
+++ b/db/Database.js
@@ -60,6 +60,33 @@ class Database{
         };
     }
 
+    // sauvgarde le fichier 
+    async saveDocument(documentData) {
+        // Vérifie si le document a un ID pour déterminer si c'est une création ou une mise à jour
+        if (documentData._id) {
+            // Convertir _id en un objet ObjectId
+            const documentId = documentData._id;
+            delete documentData._id; // Retire _id des données car on ne peut pas le mettre à jour
+            const result = await this.#db.collection('documents').updateOne(
+                { _id: new this.#client.ObjectId(documentId) },
+                { $set: documentData }
+            );
+            return result.upsertedId || documentId; // Retourne l'ID mis à jour ou l'ID existant
+        } else {
+            // C'est un nouveau document, utilisez la méthode insert
+            const result = await this.insert('documents', documentData);
+            return result; // Retourne l'ID du nouveau document créé
+        }
+    }
+
+
+
+    // chercher les docs d'un utilisateur
+    async getDocumentsByUserId(userId) {
+        return await this.#db.collection('documents').find({ auteur: userId }).toArray();
+    }
+
+
     // Gestion des Collections
     async createPartage(userId, documentId) {
         await this.insert('partage', { userId, documentId });
diff --git a/views/document.ejs b/views/document.ejs
index ad2ae00c5d637d0c6ba4543ee3d05a7f90625dfc..575af694601cadbd0ab816cf0203e8fe3668872c 100644
--- a/views/document.ejs
+++ b/views/document.ejs
@@ -10,6 +10,7 @@
 <body>
     <%- include('partials/header') %>
     <div class="spreadsheet-container">
+        <button onclick="sauvegarderDocument()">Sauvegarder</button>
         <table>
             <% for(let row = 0; row < 18; row++) { %>
             <tr>
@@ -27,6 +28,43 @@
   
     <script>
       // JavaScript pour la gestion des événements peut être ajouté ici
+      function sauvegarderDocument() {
+            const tableau = [];
+            const lignes = document.querySelectorAll("table tr");
+
+            lignes.forEach((ligne, rowIndex) => {
+                if (rowIndex === 0) return; // Ignorer l'en-tête
+
+                const cellules = ligne.querySelectorAll("td");
+                const rowData = Array.from(cellules).map(cell => cell.innerText || "");
+                tableau.push(rowData);
+            });
+
+            // Créer un objet pour envoyer
+            const documentData = {
+                nom: "Nom du Document", // le rendre dynamique si nécessaire
+                contenu: tableau
+            };
+
+            // Appel AJAX pour envoyer les données
+            envoyerDonnees(documentData);
+        }
+
+        function envoyerDonnees(data) {
+            fetch('/document/save', { // Mette ici ton URL de sauvegarde
+                method: 'POST',
+                headers: { 'Content-Type': 'application/json' },
+                body: JSON.stringify(data)
+            })
+            .then(response => response.json())
+            .then(data => {
+                console.log('Succès:', data);
+                // Traite ici le retour de la sauvegarde
+            })
+            .catch((error) => {
+                console.error('Erreur:', error);
+            });
+        }
     </script>
   </body>
     <%- include('partials/footer') %>