diff --git a/server.R b/server.R
index 86404b852697f184873e9665e74bff3ba5d3153b..90e2c87d46b24bc2179e0858e4943cd631b397b2 100644
--- a/server.R
+++ b/server.R
@@ -1,68 +1,68 @@
 server <- function(input, output, session) {
-
   r <- reactiveValues(
     filteredData = all_data,
+    filteredByProject = all_data, # Étape intermédiaire filtrée par daterange et project_name
     filteredTopics = NULL,
     filteredProjects = NULL,
     filteredAuthors = NULL,
     filteredReCodes = NULL,
-    filteredCategories = NULL
+    filteredCategories = NULL,
+    filteredByDate = NULL,
   )
 
-  # Mise à jour des filtres selon la date
+  # Filtrage par date et project_name uniquement
   observeEvent(input$daterange, {
     req(input$daterange)
-    r$filteredData <- all_data %>%
-      filter(updated_at >= as.Date(input$daterange[[1]]) &
-               updated_at <= as.Date(input$daterange[[2]]))
+    r$filteredByDate <- all_data %>%
+      filter(
+        updated_at >= as.Date(input$daterange[[1]]) &
+          updated_at <= as.Date(input$daterange[[2]]) &
+          (if (length(input$project_name)) project_name %in% input$project_name else TRUE)
+      )
+    updateFilters() # Mise à jour des choix basés sur le filtrage intermédiaire
+  })
+
+  # Mise à jour des autres filtres
+  observe({
+    req(input$daterange)
+    r$filteredData <- r$filteredByDate %>%
+      filter(
+        (if (length(input$topics)) sapply(input$topics, function(t) grepl(t, topics)) %>% rowSums() > 0 else TRUE) &
+          (if (length(input$author)) author %in% input$author else TRUE) &
+          (if (length(input$re_code)) re_code %in% input$re_code else TRUE) &
+          (if (length(input$categorie)) categorie %in% input$categorie else TRUE)
+      )
     updateFilters()
   })
 
-  # Fonction de mise à jour des filtres
+  # Fonction de mise à jour des choix pour les filtres
   updateFilters <- reactive({
-    filteredTopics <- r$filteredData$topics %>%
-      strsplit(",") %>%
-      unlist() %>%
-      trimws() %>%
-      unique()
-    updateSelectizeInput(session, "topics", choices = filteredTopics, selected = input$topics)
-
-    updateSelectizeInput(session, "project_name", choices = unique(r$filteredData$project_name), selected = input$project_name)
-    updateSelectizeInput(session, "author", choices = unique(r$filteredData$author), selected = input$author)
-    updateSelectizeInput(session, "re_code", choices = unique(r$filteredData$re_code), selected = input$re_code)
-    updateSelectizeInput(session, "categorie", choices = unique(r$filteredData$categorie), selected = input$categorie)
+    # Basé sur les données filtrées par date et projet
+    updateSelectizeInput(session, "topics", choices = unique(r$filteredByDate$topics)%>%
+                           strsplit(split = ",") %>%  # Divise les chaînes en éléments séparés
+                           unlist() %>%               # Aplatit la liste obtenue
+                           na.omit() %>%              # Supprime les NA (au cas où)
+                           .[. != ""] %>%             # Supprime les chaînes vides
+                           trimws() %>%                # suppremie les espace avnt et apres
+                           unique() , selected = input$topics)
+    updateSelectizeInput(session, "author", choices = unique(r$filteredByDate$author), selected = input$author)
+    updateSelectizeInput(session, "categorie", choices = unique(r$filteredByDate$categorie), selected = input$categorie)
+
+    # Basé uniquement sur les données globales pour éviter que project_name soit affecté
+    updateSelectizeInput(session, "project_name", choices = sort(unique(r$filteredByDate$project_name)), selected = input$project_name)
   })
 
-  # Réinitialisation des filtres sauf les dates
+  # Réinitialisation des filtres
   observeEvent(input$reset, {
-    r$filteredData <- all_data %>%
+    r$filteredByDate <- all_data %>%
       filter(updated_at >= as.Date(input$daterange[[1]]) &
                updated_at <= as.Date(input$daterange[[2]]))
+    r$filteredData <- r$filteredByDate
     updateSelectizeInput(session, "topics", selected = NULL)
-    updateSelectizeInput(session, "project_name", selected = NULL)
     updateSelectizeInput(session, "author", selected = NULL)
-    updateSelectizeInput(session, "re_code", selected = NULL)
     updateSelectizeInput(session, "categorie", selected = NULL)
     updateFilters()
   })
-
-  # Mise à jour des données filtrées
-  observe({
-    req(input$daterange)
-    r$filteredData <- all_data %>%
-      filter(
-        updated_at >= as.Date(input$daterange[[1]]) &
-          updated_at <= as.Date(input$daterange[[2]]) &
-          (if (length(input$topics)) sapply(input$topics, function(t) grepl(t, topics)) %>% rowSums() > 0 else TRUE) &
-          (if (length(input$project_name)) project_name %in% input$project_name else TRUE) &
-          (if (length(input$author)) author %in% input$author else TRUE) &
-          (if (length(input$re_code)) re_code %in% input$re_code else TRUE) &
-          (if (length(input$categorie)) categorie %in% input$categorie else TRUE)
-      )
-    updateFilters()
-  })
-
-  # Liens dynamiques pour les projets va partir car les projet en sous groupe ne fonctionne pas
   output$lien <- renderUI({
     projects_with_links <- r$filteredData %>%
       filter(origine == "Gitlab_Forge" & project_name %in% input$project_name)
@@ -87,7 +87,6 @@ server <- function(input, output, session) {
       ggplot2::labs(shape = "Événement", color = "Événement", x = "") +
       ggplot2::scale_x_datetime(timezone = "Europe/Paris") +
       gouvdown::theme_gouv()+
-      gouvdown::scale_color_gouv_discrete(palette = "pal_gouv_qual2")+
       ggplot2::theme(
         axis.text.x = ggplot2::element_text(angle = 0, hjust = 1),
         axis.title.y = ggplot2::element_blank()
@@ -96,6 +95,7 @@ server <- function(input, output, session) {
     plotly::ggplotly(p, tooltip = "text")
   })
 
+
   output$table <- renderDataTable({
     req(r$filteredData)
     datatable(r$filteredData ,
@@ -111,4 +111,8 @@ server <- function(input, output, session) {
     )
   })
 
+
+
+
+
 }