diff --git a/R/cogifier_it.R b/R/cogifier_it.R
index 039df16eb72ef73edaf9362347e81201f35a8007..c9f73b8687039bff0ddfc4ae066f1fd297fe86e2 100644
--- a/R/cogifier_it.R
+++ b/R/cogifier_it.R
@@ -2,7 +2,7 @@ library(dplyr)
 library(COGiter)
 library(datalibaba)
 
-cogifier_it <- function(nom_source = "besoins_chaleur_cerema", ...){
+cogifier_it <- function(nom_source = "besoins_chaleur_cerema", user = "does", serveur = NULL, secret = FALSE, ...){
   
   df_source <- importer_data(db = "datamart", schema = "portrait_territoires",
                                   table = paste0("source_", nom_source)) %>% 
@@ -18,8 +18,8 @@ cogifier_it <- function(nom_source = "besoins_chaleur_cerema", ...){
               pk = c("TypeZone", "Zone", "CodeZone", "date"),
               post_row_name = FALSE, 
               overwrite = TRUE,
-              droits_schema = TRUE,
-              user = "does") 
+              droits_schema = !secret,
+              user = user) 
   
   return(df_cogifie)
 }
diff --git a/R/poster_doc_post_cogifier.R b/R/poster_doc_post_cogifier.R
index 8913a8ed26299c3f4f95232cb531be1775859923..5d026d67d306f677b2792d08dc488cbb51269a92 100644
--- a/R/poster_doc_post_cogifier.R
+++ b/R/poster_doc_post_cogifier.R
@@ -4,17 +4,18 @@ library(dplyr)
 
 # une fonction pour propager les commentaires de tables et de champs à la table cogifiée
 
-poster_documenter_post_cogifier <- function(source = "combustible_principal_rp") {
+poster_documenter_post_cogifier <- function(source = "combustible_principal_rp", user = "does", serveur = NULL) {
   # creation du nom des tables
   tbl_source <- paste0("source_", source)
   tbl_cogifiee <- paste0("cogifiee_", source)
   
   # récupération des commentaires de la table source
   dico_var <- get_table_comments(
+    server = serveur,
     db = "datamart",
     schema = "portrait_territoires",
     table = tbl_source,
-    user = "does")
+    user = user)
   
   # commentaire de la table
   comm_table <- filter(dico_var, is.na(nom_col)) %>% 
@@ -22,11 +23,12 @@ poster_documenter_post_cogifier <- function(source = "combustible_principal_rp")
     gsub("\nCommentaire.*$", "", .)
   
   commenter_table(
+    server = serveur,
     comment = comm_table,
     db = "datamart",
     schema = "portrait_territoires",
     table = tbl_cogifiee,
-    user = "does"
+    user = user
   )
   
   # commentaire des variables
@@ -43,10 +45,11 @@ poster_documenter_post_cogifier <- function(source = "combustible_principal_rp")
   
   post_dico_attr(
     dico = comm_champ,
+    server = serveur,
     db = "datamart",
     schema = "portrait_territoires",
     table = tbl_cogifiee,
-    user = "does"
+    user = user
   )
   
 }
diff --git a/R/poster_documenter_data.R b/R/poster_documenter_data.R
index c719eca2296afa7067853b76b761d592326ab628..924d10d823fee213373f8d5b112ae4b71d83949d 100644
--- a/R/poster_documenter_data.R
+++ b/R/poster_documenter_data.R
@@ -1,7 +1,7 @@
 library(datalibaba)
 library(googlesheets4)
 
-poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_insee", 
+poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_insee", user = "does", serveur = NULL, secret = FALSE,
                                  comm_source_en_plus = "T\u00e9l\u00e9chargement depuis...") {
   
   # Vérif clé primaire : une ligne par commune et par date
@@ -13,15 +13,15 @@ poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_in
   
   
   # CHARGEMENT de la table dans le SGBD
-  datalibaba::poster_data(data = df,
-              db = "datamart",
-              schema = "portrait_territoires", 
-              table = nom_table_sgbd,
-              post_row_name = FALSE, 
-              overwrite = TRUE,
-              droits_schema = TRUE,
-              pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
-              user = "does") 
+  datalibaba::poster_data(data = df, server = serveur,
+                          db = "datamart",
+                          schema = "portrait_territoires", 
+                          table = nom_table_sgbd,
+                          post_row_name = FALSE, 
+                          overwrite = TRUE,
+                          droits_schema = !secret,
+                          pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
+                          user = user) 
   
   
   # RECUPERATION DES METADONNEES
@@ -65,9 +65,9 @@ poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_in
                                         "V\u00e9rifier si df contient bien toutes les variables attendues et adpatez le r\u00e9f\u00e9rentiel des indicateurs au besoin."))
   
   
-  ## Envoi des libellés de variable dans le SGBD
+  ## Envoi des libellés de variable en commentaire de champ dans le SGBD
   datalibaba::post_dico_attr(dico = metadata_indicateur, table = nom_table_sgbd, schema = "portrait_territoires",
-                 db = "datamart", user = "does")
+                             db = "datamart", user = user, server = serveur)
   
   ## Récupération des métadonnées de la source
   nom_sce <- stringr::str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
@@ -84,12 +84,12 @@ poster_documenter_it <- function(df = pop10, nom_table_sgbd = "source_pop_rgp_in
   
   
   ## commentaires de la table
-  
   datalibaba::commenter_table(comment = metadata_source,
-                  db = "datamart",
-                  schema = "portrait_territoires",
-                  table = nom_table_sgbd, 
-                  user = "does")
+                              db = "datamart",
+                              server = serveur,
+                              schema = "portrait_territoires",
+                              table = nom_table_sgbd, 
+                              user = user)
   
 }
 
diff --git a/R/poster_documenter_ind.R b/R/poster_documenter_ind.R
index cacdb64d6e8c838ec24ae47c24f60f8ee2f7c74b..25d80b0cd9b37b77d69b2fb0ddfee687112a4a2a 100644
--- a/R/poster_documenter_ind.R
+++ b/R/poster_documenter_ind.R
@@ -2,7 +2,7 @@ library(datalibaba)
 library(googlesheets4)
 
 poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgbd = "indicateur_bimotor_menages", 
-                                  comm_source_en_plus = "", nom_script_sce = NULL) {
+                                  comm_source_en_plus = "", nom_script_sce = NULL, user = "does", serveur = NULL, secret = FALSE) {
   
   # Vérif clé primaire : une ligne par commune et par date
   doublons <- df %>% 
@@ -14,14 +14,15 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb
   
   # CHARGEMENT de la table dans le SGBD
   datalibaba::poster_data(data = df,
-              db = "datamart",
-              schema = "portrait_territoires", 
-              table = nom_table_sgbd,
-              post_row_name = FALSE, 
-              overwrite = TRUE,
-              droits_schema = TRUE,
-              pk = c("TypeZone", "CodeZone", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois la même zone et la meme date
-              user = "does") 
+                          server = serveur,
+                          db = "datamart",
+                          schema = "portrait_territoires", 
+                          table = nom_table_sgbd,
+                          post_row_name = FALSE, 
+                          overwrite = TRUE,
+                          droits_schema = !secret,
+                          pk = c("TypeZone", "CodeZone", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois la même zone et la meme date
+                          user = user) 
   
   
   # RECUPERATION DES METADONNEES
@@ -76,7 +77,7 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb
   
   ## Envoi des libellés de variable dans le SGBD
   datalibaba::post_dico_attr(dico = metadata_indicateur, table = nom_table_sgbd, schema = "portrait_territoires",
-                 db = "datamart", user = "does")
+                             db = "datamart", server = serveur, user = user)
   
   ## Récupération des métadonnées de la source
   nom_sce <- stringr::str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
@@ -96,10 +97,10 @@ poster_documenter_ind <- function(df = indicateur_bimotor_menages, nom_table_sgb
   ## commentaires de la table
   
   datalibaba::commenter_table(comment = metadata_source,
-                  db = "datamart",
-                  schema = "portrait_territoires",
-                  table = nom_table_sgbd, 
-                  user = "does")
+                              db = "datamart",
+                              schema = "portrait_territoires",
+                              table = nom_table_sgbd, 
+                              user = user, server = serveur)
   
 }
 
diff --git a/data-raw/chargement_eco_ptz.R b/data-raw/chargement_eco_ptz.R
index a2c01e74e8e93517a77b12f21be5c81dd03a500f..33a006651e03bb7a64b0fe337d8d3614bb075ef3 100644
--- a/data-raw/chargement_eco_ptz.R
+++ b/data-raw/chargement_eco_ptz.R
@@ -1,109 +1,325 @@
+# chargement_eco_ptz (a exécuter sur le serveur rstudio du SDES)
 
-# chargement_eco_ptz
-
-
-# librairies ---------
-library(readxl)
+# librairies --------------
 library(tidyverse)
-library(tricky)
 library(lubridate)
+library(COGiter)
+library(sf)
 library(DBI)
 library(RPostgreSQL)
 library(datalibaba)
 library(googlesheets4)
+library(stringr)
+library(stringdist)
 
 rm(list = ls())
 
-# chargement et calcul -----------
-# chargement des données Eco-PTZ (Eco Prêts à Taux Zéro) --------
-# fichier cree a partir d une requete geokit 3 :
-# "Dossiers publics/geokit3/Regions Pays de la Loire/DREAL/INDICATEURS TER DATA LAB/gk3_ECO_PTZ_france"
-eco_ptz <- read_excel("extdata/gk3_eco_ptz.xlsx",sheet=1) %>% 
-  set_standard_names()%>%
-  rename(date = date_d_emission_de_l_offre,
-         depcom = code_de_la_commune,
-         variable=eptz_libelle_nature_du_logement,
-         valeur=eptz_nombre_de_prets) %>% 
-  select(depcom,date,variable,valeur)%>% 
-  # filter(date>=2008) %>% 
-  mutate(date=make_date(date,12,31))%>%
-  mutate(variable=str_replace(variable,'Maison individuelle', "nb_eptz.maison_individuelle") %>% 
-           str_replace('Appartement',"nb_eptz.appartement"))%>%
-  mutate_if(is.character,as.factor) %>% 
-  complete(depcom,date,variable,fill = list(valeur =0)) %>% 
+# a calculer
+# Nombre d'eco-PTZ
+# Nombre d'eco-PTZ par type de construction ( maison / appartement )
+# Nombre d'eco-PTZ par type de rénovation ( combles, murs, ...)
+
+# indicateurs utilisés
+# DATP : Date d’émission de l’offre de prêt
+# CINS : Code INSEE de la commune du logement
+# CSEN :
+# CPLA : Code postal du logement
+# VILL : Ville du logement
+# NALO : Nature du logement: 1 = maison individuelle 2 = appartement
+# TTRV : type de travaux
+
+# ANAC : Année d’achèvement du logement
+# MTTR : Montant total TTC des travaux
+# DREZ : Durée de l’éco-prêt
+# MTPR : Montant de l’éco-prêt (dernier déclaré)
+
+# Actions
+# avant 2019
+# CTA1: isolation thermique des toitures
+# CTA2: isolation thermique des murs
+# CTA3: isolation thermique des parois vitrées et portes donnant sur l'extérieur
+# CTA4: syst. chauf./PEC sanitaire
+# CTA5: Equipts. chauf./énergie ren.
+# CTA6: Equipts. PEC/énergi ren.
+# à compter du 1/7/2019
+# CTTA1: isolation toiture
+# CTTA2: isolation mur
+# CTTA3: planchers bas
+# CTTA4: isolation parois vitrées
+# CTTA5: syst. chauf/PEC sanitaire
+# CTTA6: équipts chauf/énergie renouvelable
+# CTTA7: équipts PEC/énergie renouvelable
+
+
+# paramêtres
+millesime = 2023 #millesime du fichier
+annee_conservee = 2013 # on supprime les années antérieures
+
+BASE_ECO_PTZ_DHUP<- read_delim(paste0("/nfs/data/partage-PTZ-EPTZ/PTZ-EPTZ/BASE_EPZ_DHUP_",millesime,"_DREAL.csv"),
+                          delim = ";", escape_double = FALSE, locale = locale(decimal_mark = ","), trim_ws = TRUE)
+
+
+
+base_intermediaire <- BASE_ECO_PTZ_DHUP %>%
+  mutate(DATP = str_sub(DATP,1,4)) %>% 
+  filter (DATP >= annee_conservee) %>%  # suppression des années anciennes
+  select(DATP,CINS,CPLA,VILL,NALO,TTRV,CSEN,CTA1,CTA2,CTA3,CTA4,CTA5,CTA6,CTTA1,CTTA2,CTTA3,CTTA4,CTTA5,CTTA6,CTTA7) %>%  
+# application des filtres
+  filter(CSEN == "V") %>%  # CSEN est"V" (valide)
+  mutate(NALO = case_when(  
+    TTRV == "4" ~ 1,   # si type de travaux (TTRV) = 4 (réhabilitation de système d’assainissement non collectif)
+    TRUE~ NALO)) %>%   # la nature du logement (NALO) doit être égale à 1 (maison individuelle)
+  select(-CSEN,-TTRV) %>%
+# mise au format des noms de communes  
+  mutate(VILL = iconv(VILL, from = "UTF-8", to = "ASCII//TRANSLIT"),
+         VILL = toupper(VILL),  #met tout en majuscules
+         VILL = str_replace (VILL,"SAINTES","STES"),
+         VILL = str_replace (VILL,"SAINTE","STE"),
+         VILL = str_replace (VILL,"SAINTS","STS"),
+         VILL = str_replace (VILL,"SAINT","ST"),
+         VILL = str_replace_all (VILL,"[-']"," ") #remplace les tirets et apostrophes par des espaces
+         )  
+  # mutate(lien = paste(ifelse(str_detect(CPLA,"^97"),str_sub(CPLA,1,3),str_sub(CPLA,1,2)),VILL)) # SI DOM TOM (97) , prend les 3 premiers chiffres
+
+#---------------------------------------------------------------------------------------------  
+# Fonction qui à partir du code postal et du nom de commune, même approximatif, renvoie le code Insee de la commune
+retrouve_cinsee <- function(codepostal, ville){
+  library(dplyr)
+  library(httr)
+  library(jsonlite)
+  #récupère la table des communes avec ce code postal
+  url <- "https://geo.api.gouv.fr/communes"
+  response <- GET(url, query = list(codePostal = codepostal))
+  # response <- GET(url, query = list(codePostal = "35800"))
+  c_insee <- fromJSON(content(response, "text"))
+
+  if (length(c_insee) == 0) {  # si pas de code insee ou code inexistant
+    return(NA)
+    # return(data[[1]]$code)
+  } else {
+    c_insee2 <- c_insee %>%
+      as.data.frame() %>%
+      select(nom, code) %>%  #ne garde que les colonnes nécessaires
+      mutate(nom = toupper(nom), #met tout en majuscules
+             nom = str_replace (nom,"SAINTES","STES"),
+             nom = str_replace (nom,"SAINTE","STE"),
+             nom = str_replace (nom,"SAINTS","STS"),
+             nom = str_replace (nom,"SAINT","ST"),
+             nom = str_replace_all (nom,"[-']"," "))#remplace les tirets et apostrophes par des espaces
+    
+    list_com <- c_insee2 %>% pull(nom) # liste des communes avec ce code postal
+    list_code <- c_insee2 %>% pull(code) # liste des codes insee
+    
+    # recherche commune avec texte le plus proche 
+    library(stringdist) 
+    distances <- stringdist(ville,list_com,method ="jw")
+    indice_min <- which.min(distances)
+    texte_proche <- list_com[indice_min]
+    
+    numero_dans_liste <- which(list_com == texte_proche)
+    code_insee_proche <- list_code[numero_dans_liste]
+    
+    # return(texte_proche)
+    return(code_insee_proche)
+  }
+}
+#-Remplissage de la colonne CINS (code insee)-------------------------------------------------------------------------------------------  
+
+#  séparation table remplie et table sans les codes insee
+base_inter_manquantes <- base_intermediaire %>% filter(is.na(CINS)) %>% 
+  select(-CINS)
+base_inter_complete <- base_intermediaire %>% filter(!is.na(CINS))
+
+# recherche des codes insee (on applique la fonction)
+base_inter_manquantes$CINS <- mapply(retrouve_cinsee, 
+                                           base_inter_manquantes$CPLA, 
+                                           base_inter_manquantes$VILL)
+# ATTENTION: OPERATION TRES LONGUE (30 minutes)
+
+# transformation de la colonne du format list en format texte
+base_inter_manquantes2 <- base_inter_manquantes
+base_inter_manquantes2$CINS <- lapply(base_inter_manquantes2$CINS, function(x) if (is.null(x)|| length(x) == 0) NA else x) # remplace les NULL ou character(0) par NA
+base_inter_manquantes2$CINS <- unlist(base_inter_manquantes2$CINS, use.names = FALSE)
+
+# regroupement des tables
+base_intermediaire2 <- bind_rows(base_inter_complete,base_inter_manquantes2)
+
+# nombre de lignes avec CINS = NA
+nb_na <- base_intermediaire2 %>% filter(is.na(CINS)) %>% nrow() %>% as.numeric()
+print(paste("il reste",nb_na,"lignes avec code insee non rempli"))
+
+#-----------remplir les lignes manquantes quand on n'a que le code postal (on met la commune principale)-------------
+#  ne s'effectue que s'il reste des lignes à NA
+if(nb_na == 0){
+}else{
+  base_intermediaire2a <- base_intermediaire2 %>% filter(is.na(CINS))
+  base_intermediaire2b <- base_intermediaire2 %>% filter(!is.na(CINS))
+  
+  retrouve_cinsee_pop_max <- function(codepostal){
+    library(dplyr)
+    library(httr)
+    library(jsonlite)
+    #récupère la table des communes avec ce code postal
+    url <- "https://geo.api.gouv.fr/communes"
+    response <- GET(url, query = list(codePostal = codepostal))
+    c_insee <- fromJSON(content(response, "text"))
+    
+    if (length(c_insee) == 0) {  # si pas de code insee ou code inexistant
+      return(NA)
+      # return(data[[1]]$code)
+    } else {
+      c_insee2 <- c_insee %>%
+        as.data.frame() %>%
+        filter(population == max(population)) %>%  # filtre sur la commune à la population la plus élevée
+        pull(code)  
+      
+      return(c_insee2) #renvoie le code insee de la commune la plus peuplée
+    }
+  }
+  
+  # recherche des codes insee (on applique la fonction)
+  base_intermediaire2a$CINS <- mapply(retrouve_cinsee_pop_max,base_intermediaire2a$CPLA)
+  
+  # transformation de la colonne du format list en format texte
+  base_intermediaire2a$CINS <- lapply(base_intermediaire2a$CINS, function(x) if (is.null(x)|| length(x) == 0) NA else x) # remplace les NULL ou character(0) par NA
+  base_intermediaire2a$CINS <- unlist(base_intermediaire2a$CINS, use.names = FALSE)
+  
+  # regroupement des tables
+  base_intermediaire2 <- bind_rows(base_intermediaire2a,base_intermediaire2b)  
+}
+
+# Vérification des lignes restantes sans code insee
+nb_na <- base_intermediaire2 %>% filter(is.na(CINS)) %>% nrow() %>% as.numeric() # nombre de lignes avec CINS = NA
+print(paste("il reste",nb_na,"lignes avec code insee non rempli")) 
+if(nb_na != 0){
+  stop("il reste des codes insee non remplis, si vous continuez, les lignes correspondantes seront supprimées")
+}
+base_intermediaire2 <- base_intermediaire2 %>% filter(!is.na(CINS)) # suppression des lignes avec CINS= NA
+
+
+#---------------------------------------------------------------------------------------------  
+ 
+base_intermediaire3 <- base_intermediaire2 %>% 
+  filter(!is.na(CINS)) %>%  # filtre pour ne garder que les lignes avec code commune
+  select(-CPLA,-VILL) %>% 
+  rename(date = "DATP",DEPCOM = "CINS", type_logt = "NALO") %>%
+  mutate(type_logt = case_when(
+    type_logt == 1 ~ "nb_eptz.maison_individuelle",
+    type_logt == 2 ~ "nb_eptz.appartement",
+    TRUE ~ NA))%>%
+  arrange(DEPCOM)
+
+# calculs nombre de prets individuels et collectifs--------------------------------------------------
+#  dénombrement croisements type et état
+eco_ptz1a <- base_intermediaire3 %>%
+  group_by(date,DEPCOM,type_logt) %>%
+  summarise(valeur = length(DEPCOM)) %>%
+  ungroup() %>% 
+  rename(variable = type_logt)
+eco_ptz1b <- base_intermediaire3 %>%
+  group_by(date,DEPCOM) %>%
+  summarise(valeur = length(DEPCOM)) %>%
+  ungroup() %>% 
+  mutate(type_logt = "nb_eptz.total") %>% 
+  select(date,DEPCOM,type_logt,valeur) %>% 
+  rename(variable = type_logt)
+
+# calculs montants par type--------------------------------------------------
+
+eco_ptz2a <- base_intermediaire3 %>%
+  select(-type_logt) %>% 
+  group_by(date,DEPCOM) %>% 
+  summarise(eptz.ctta1=sum(CTTA1,na.rm=TRUE)+sum(CTA1,na.rm=TRUE),
+            eptz.ctta2=sum(CTTA2,na.rm=TRUE)+sum(CTA2,na.rm=TRUE),
+            eptz.ctta3=sum(CTTA3,na.rm=TRUE),
+            eptz.ctta4=sum(CTTA4,na.rm=TRUE)+sum(CTA3,na.rm=TRUE),
+            eptz.ctta5=sum(CTTA5,na.rm=TRUE)+sum(CTA4,na.rm=TRUE),
+            eptz.ctta6=sum(CTTA6,na.rm=TRUE)+sum(CTA5,na.rm=TRUE),
+            eptz.ctta7=sum(CTTA7,na.rm=TRUE)+sum(CTA6,na.rm=TRUE))%>% 
+  pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
+  ungroup() 
+
+
+# calculs nombres par type--------------------------------------------------
+eco_ptz2b <- base_intermediaire3 %>%
+  mutate(eptz.ctta1= CTTA1 + CTA1,
+         eptz.ctta2= CTTA2 + CTA2,
+         eptz.ctta3= CTTA3,
+         eptz.ctta4= CTTA4 + CTA3,
+         eptz.ctta5= CTTA5 + CTA4,
+         eptz.ctta6= CTTA6 + CTA5,
+         eptz.ctta7= CTTA7 + CTA6)%>%
+  select(date, DEPCOM,eptz.ctta1,eptz.ctta2,eptz.ctta3,eptz.ctta4,
+         eptz.ctta5,eptz.ctta6,eptz.ctta7)
+eco_ptz2b[eco_ptz2b == 0] <- NA 
+eco_ptz2b <- eco_ptz2b %>% 
+  group_by(date,DEPCOM) %>% 
+  summarise(across(everything(), ~ sum(!is.na(.)))) %>% 
+  pivot_longer(-c(date, DEPCOM), names_to = "variable", values_to = "valeur") %>% 
+  ungroup() %>% 
+  mutate(variable = paste0("nb_",variable))
+
+# regroupements------------------------------------------------------------------
+eco_ptz <- bind_rows( eco_ptz1a,eco_ptz1b, eco_ptz2a,eco_ptz2b) %>%
+  mutate(date=make_date(date,12,31)) %>%
+  filter(!str_starts(DEPCOM,"97"),!str_starts(DEPCOM,"98"))
+
+# liste des communes de France
+liste_communes_france <- communes %>% select(DEPCOM) %>%    pull() %>% as.character()
+
+#cogifier, ajouter zonages supra et complete
+eco_ptz <- cogifier(eco_ptz, epci = F, departements = F,regions = F, metro = F) %>%
+  select (depcom = CodeZone, date, variable, valeur) %>%
+  mutate(depcom = forcats::fct_drop(.data$depcom)) %>% #enlève les facteurs inutiles
+  mutate(depcom = fct_expand(depcom, liste_communes_france)) %>%
+  complete(depcom, date, variable, fill = list(valeur = 0)) %>%
+  filter(!str_starts(depcom,"97"),!str_starts(depcom,"98")) %>%
+  mutate(depcom = forcats::fct_drop(.data$depcom)) %>%   #enlève les facteurs inutiles
   pivot_wider(names_from = variable,values_from = valeur)
 
+# save(eco_ptz,file="eco_ptz_chargement.RData")
 
-# versement dans le sgbd/datamart.portrait_territoires -------------
-poster_data(data = eco_ptz,
-            db = "datamart",
-            schema = "portrait_territoires", 
-            table = "source_eco_ptz",
-            post_row_name = FALSE, 
-            overwrite = TRUE,
-            droits_schema = TRUE,
-            pk = c("depcom", "date"), # déclaration d'une clé primaire sur la table postée : on ne doit pas avoir deux lignes avec à la fois le même code commune et la meme date
-            user = "does")
-
-# METADONNEES------------------------------------
-
-## On récupère la liste des variables qui sont à documenter dans le tableur google sheet à partir du jeu de données posté
-var <- setdiff(names(eco_ptz), c("depcom", "date"))
-
-## récupération du nom du présent script source pour filtrer ensuite le référentiel des indicateurs
-nom_script_sce <- rstudioapi::getActiveDocumentContext()$path %>% # utilisation de rstudioapi pour récupérer le nom du présent script 
-  basename() %>% # on enlève le chemin d'accès pour ne garder que le nom du fichier
-  gsub(pattern = ".R$", "", .) # on enlève l'extension '.R'
-
-## authentification google sheet grâce au .Renviron
-gs4_auth_configure(api_key = Sys.getenv("google_api_key"))
-gs4_deauth()
-
-
-
-## chargement du référentiel indicateurs google sheet
-metadata_indicateur <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-                                  sheet = "indicateurs") %>%
-  # on ne garde que les variables concernées par le présent script de chargement
-  filter(source == nom_script_sce) %>% 
-  # on ajoute l'unité dans le libellé de la variable
-  mutate(libelle_variable = paste0(libelle_variable, " (unit\u00e9 : ", unite, ")")) %>% 
-  select(variable, libelle_variable) %>% 
-  # ajout des libellés pour depcom et date
-  bind_rows(
-    tribble(
-      ~variable, ~libelle_variable,
-      "depcom", "Code INSEE de la commune",
-      "date", "Millesime"
-    )
-  )
-
-## Vérification que la documentation des indicateurs est complète
-all(var %in% metadata_indicateur$variable) # doit renvoyer TRUE
-
-## Envoi des libellés de variable dans le SGBD
-post_dico_attr(dico = metadata_indicateur, table = "source_eco_ptz", schema = "portrait_territoires",
-               db = "datamart", user = "does")
-
-## Récupération des métadonnées de la source
-nom_sce <- str_replace(nom_script_sce, "chargement_|ref_|specifique_", "") %>%
-  str_replace("indicateur_", "") %>%
-  str_replace("_cogiter|_cog$", "")
-
-metadata_source <- read_sheet("https://docs.google.com/spreadsheets/d/1n-dhtrJM3JwFVz5WSEGOQzQ8A0G7VT_VcxDe5gh6zSo/edit#gid=60292277",
-                              sheet = "sources") %>%
-  filter(source == nom_sce) %>% 
-  mutate(com_table = paste0(source_lib, " - ", producteur, ".\n", descriptif_sources)) %>% 
-  pull(com_table) %>%
-  # ajout de complement sur la généalogie
-  paste0(".\n", "Chargement des donn\u00e9es sur Geokit3")
-
-## commentaires de la table
-
-commenter_table(comment = metadata_source,
-                db = "datamart",
-                schema = "portrait_territoires",
-                table = "source_eco_ptz", 
-                user = "does")
+# versement dans le sgbd EcoSQL/datamart.portrait_territoires -------------
+
+source("R/poster_documenter_data.R", encoding = "UTF-8")
+poster_documenter_it(
+  df = eco_ptz,
+  nom_table_sgbd = "source_eco_ptz", 
+  comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
+  secret = TRUE,
+  user = "ecosql_stat",
+  serveur = Sys.getenv("server_ecosql")
+)
+
+
+#------------------------------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------------------------------
+# 2e partie, à éxécuter sur le PC de bureau (hors serveur SDES)
+#------------------------------------------------------------------------------------------------------------------
+#------------------------------------------------------------------------------------------------------------------
+
+# librairies ------
+library(DBI)
+library(RPostgreSQL)
+library(dplyr)
+library(COGiter)
+library(datalibaba)
+library(googlesheets4)
+
+rm(list = ls())
+source("R/poster_documenter_data.R", encoding = "UTF-8")
 
+# récupération des données sur EcoSQL
+eco_ptz <- importer_data(db = "datamart",
+                         schema = "portrait_territoires",
+                         table = "source_eco_ptz",
+                         user = "ecosql_stat",
+                         server = Sys.getenv("server_ecosql"))
 
+# versement des données sur SGBD DREAL
+poster_documenter_it(
+  df = eco_ptz,
+  nom_table_sgbd = "source_eco_ptz", 
+  comm_source_en_plus = "Données chargées depuis le serveur RStudio du SDES pour les DREALs",
+  secret = TRUE
+)
diff --git a/data-raw/cogification_eco_ptz.R b/data-raw/cogification_eco_ptz.R
index 724368c98e63b27d94cc2cd9deb345ba0d0a1439..08b48d2cad43e464b480e8e3686fdd5bdcf35cc3 100644
--- a/data-raw/cogification_eco_ptz.R
+++ b/data-raw/cogification_eco_ptz.R
@@ -1,71 +1,19 @@
-
 # cogification_eco_ptz
 
-
 # librairies ------
 library(DBI)
 library(RPostgreSQL)
 library(dplyr)
 library(COGiter)
 library(datalibaba)
+library(googlesheets4)
 
 rm(list = ls())
+source("R/cogifier_it.R")
+source("R/poster_doc_post_cogifier.R")
 
-source_eco_ptz <- importer_data(db = "datamart",
-                             schema = "portrait_territoires",
-                             table = "source_eco_ptz")
-
-cogifiee_eco_ptz<-cogifier(source_eco_ptz %>% rename(DEPCOM=depcom))%>% 
-  mutate_if(is.factor,as.character)
-
-poster_data(data = cogifiee_eco_ptz,
-            db = "datamart",
-            schema = "portrait_territoires", 
-            table = "cogifiee_eco_ptz",
-            pk = c("TypeZone", "Zone", "CodeZone", "date"),
-            post_row_name = FALSE, 
-            overwrite = TRUE,
-            droits_schema = TRUE,
-            user = "does")
-
-# commentaires de la table et des variables -------------
-
-# récupération des commentaires de la table source
-dico_var <- get_table_comments(
-  db = "datamart",
-  schema = "portrait_territoires",
-  table = "source_eco_ptz",
-  user = "does")
-
-# commentaire de la table
-comm_table <- filter(dico_var, is.na(nom_col)) %>% 
-  pull(commentaire) %>% 
-  gsub("\nCommentaire.*$", "", .)
-
-commenter_table(
-  comment = comm_table,
-  db = "datamart",
-  schema = "portrait_territoires",
-  table = "cogifiee_eco_ptz",
-  user = "does"
-)
-
-# commentaire des variables
-comm_champ <- select(dico_var, nom_col, commentaire) %>% 
-  filter(!is.na(nom_col), nom_col != "depcom") %>% 
-  bind_rows(
-    tribble(
-      ~nom_col, ~commentaire,
-      "TypeZone", "Type de territoire",
-      "Zone", " Nom du territoire",
-      "CodeZone", "Code INSEE du territoire"
-    )
-  )
+# cogification et versement des données cogifiées dans le SGBD
+cogifier_it(nom_source = "eco_ptz", secret = TRUE)
 
-post_dico_attr(
-  dico = comm_champ,
-  db = "datamart",
-  schema = "portrait_territoires",
-  table = "cogifiee_eco_ptz",
-  user = "does"
-)
+# versement dans le sgbd/datamart.portrait_territoires et metadonnee -------------
+poster_documenter_post_cogifier(source = "eco_ptz")
diff --git a/data-raw/indicateur_eco_ptz.R b/data-raw/indicateur_eco_ptz.R
new file mode 100644
index 0000000000000000000000000000000000000000..63cd2a8d8c2dc0f5edfee6edf87fc5589f49f0b1
--- /dev/null
+++ b/data-raw/indicateur_eco_ptz.R
@@ -0,0 +1,60 @@
+
+# indicateur_eco_ptz
+
+# librairies -------------
+library(dplyr)
+library(tidyr)
+library(lubridate)
+library(COGiter)
+library(DBI)
+library(RPostgreSQL)
+library(datalibaba)
+library(googlesheets4)
+library(purrr)
+library(stringr)
+
+rm(list=ls())
+
+# chargement data -------------
+cogifiee_eco_ptz <- importer_data(db = "datamart",
+                               schema = "portrait_territoires",
+                               table = "cogifiee_eco_ptz")
+
+# load("eco_ptz_cogifiee.RData")
+
+data_cogifiee<-pivot_longer(cogifiee_eco_ptz,
+                            cols = eptz.ctta1 : nb_eptz.total,
+                            names_to = "variable",
+                            values_to = "valeur") %>%
+  mutate_if(is.character,as.factor)
+
+#table des montants
+data_montants <- data_cogifiee %>% 
+  filter( grepl("^eptz.ct", variable)) %>% 
+  group_by(TypeZone,Zone,CodeZone,date) %>% 
+  mutate(valeur = round(valeur/sum(valeur)*100,2),
+         variable = paste0("part_montant_",variable)) %>% 
+  ungroup()
+
+# table des nombres
+data_nombre <- data_cogifiee %>% 
+  filter( grepl("^nb_eptz.ct", variable)) %>% 
+  group_by(TypeZone,Zone,CodeZone,date) %>% 
+  mutate(valeur = round(valeur/sum(valeur)*100,2),
+         variable = paste0("part_",variable)) %>%
+  ungroup()
+
+# regroupement des tables
+indicateur_eco_ptz <- bind_rows(data_montants,data_nombre)
+indicateur_eco_ptz$valeur<-na_if(indicateur_eco_ptz$valeur,NaN)
+indicateur_eco_ptz <- indicateur_eco_ptz %>% 
+  pivot_wider(names_from = variable,values_from = valeur)
+
+# versement dans le sgbd/datamart.portrait_territoires et metadonnées ---------
+source("R/poster_documenter_ind.R", encoding = "UTF-8")
+poster_documenter_ind(
+  df = indicateur_eco_ptz,
+  nom_table_sgbd = "indicateur_eco_ptz",
+  comm_source_en_plus = "Chargement des donn\u00e9es sur serveur rstudio CGDD"
+)
+