diff --git a/R/add_code_prelevement_analyse.R b/R/add_code_prelevement_analyse.R
new file mode 100644
index 0000000000000000000000000000000000000000..60b3353b154ac8893522ffe5cdd7bbf3eb001698
--- /dev/null
+++ b/R/add_code_prelevement_analyse.R
@@ -0,0 +1,69 @@
+# WARNING - Generated by {fusen} from dev/flat_create_table_sequence.Rmd: do not edit by hand # nolint: line_length_linter.
+
+#' Ajouter une variable code_prelevement_analyse au dataframe
+#'
+#' @description Cette fonction ajoute une nouvelle variable 
+#' `code_prelevement_analyse` au dataframe en utilisant une séquence 
+#' PostgreSQL dynamique. La séquence est construite en fonction du 
+#' paramètre `version` fourni.
+#'
+#' @param dataframe Un dataframe contenant les données sur lesquelles ajouter 
+#' la variable `code_prelevement_analyse`.
+#' @param version Une chaîne de caractères représentant la version de la 
+#' séquence à utiliser.
+#'
+#' @return Un dataframe avec une nouvelle colonne `code_prelevement_analyse` 
+#' contenant les valeurs de la séquence PostgreSQL.
+#' 
+#' @importFrom DBI dbGetQuery dbDisconnect
+#' @importFrom dplyr mutate
+#' @importFrom glue glue
+#' @importFrom datalibaba connect_to_db
+#' @export
+#' @examples
+#' # Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
+#' dataframe <- data.frame(
+#'   id_prelevement = 1:5,
+#'   autre_colonne = sample(letters, 5)
+#' )
+#' # Définir une version pour l'exemple
+#' version <- "v1"
+#'
+#' # Utiliser la fonction add_code_prelevement() avec la version souhaitée
+#' dataframe <- add_code_prelevement_analyse(
+#'   dataframe, version)
+#'
+add_code_prelevement_analyse <- function(dataframe, version) {
+  # Établir une connexion à la base de données PostgreSQL
+  connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
+  
+  # Créer la séquence correspondant à la table
+  create_sequence <- glue::glue("CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq
+      INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;")
+  
+  # Exécuter le script dans la base de données
+  DBI::dbExecute(connexion, create_sequence)
+  
+  # Construire le nom de la séquence
+  sequence_name <- glue::glue("nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq")
+  
+  # Initialiser une liste pour stocker les valeurs de la séquence
+  code_prelevements_analyses <- c()
+  
+  # Pour chaque ligne du dataframe, obtenir une valeur de la séquence
+  for (i in 1:nrow(dataframe)) {
+    query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement_analyse")
+    result <- DBI::dbGetQuery(connexion, query)
+    code_prelevements_analyses <- c(code_prelevements_analyses, result$code_prelevement_analyse)
+  }
+  
+  # Ajouter la nouvelle variable au dataframe
+  dataframe <- dataframe |>
+    dplyr::mutate(code_prelevement_analyse = code_prelevements_analyses)
+  
+  # Fermer la connexion à la base de données
+  DBI::dbDisconnect(connexion)
+  
+  return(dataframe)
+}
+
diff --git a/R/create_table_nitrate_prelevement_analyse.R b/R/create_table_nitrate_prelevement_analyse.R
new file mode 100644
index 0000000000000000000000000000000000000000..c0a1e3a04b7758477bab75838445eec790f6b659
--- /dev/null
+++ b/R/create_table_nitrate_prelevement_analyse.R
@@ -0,0 +1,108 @@
+# WARNING - Generated by {fusen} from dev/flat_create_table_sequence.Rmd: do not edit by hand # nolint: line_length_linter.
+
+#' Créer une table de prélèvements et analyses de nitrates
+#'
+#' @description Cette fonction crée une table dans une base de données PostgreSQL 
+#' pour stocker les informations relatives aux prélèvements et analyses de 
+#' nitrates, incluant les contraintes et les séquences nécessaires.
+#'
+#' @param version String. Version de la table (par exemple, 'v1').
+#' @param last_year Integer. L'année la plus récente incluse dans les données de la table.
+#'
+#' @return String. Le script SQL utilisé pour créer la table.
+#' @export
+#' @importFrom datalibaba connect_to_db
+create_table_nitrate_prelevement_analyse <- function(version, last_year) {
+  # Établir une connexion à la base de données PostgreSQL
+  connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
+  
+  # Génération de la date du jour
+  date_now <- format(Sys.Date(), "%d/%m/%Y")
+  
+  # Liste des requêtes SQL
+  sql_commands <- c(
+    glue::glue("CREATE TABLE IF NOT EXISTS nitrates.nitrate_prelevement_analyse_{version} (
+      code_prelevement_analyse serial NOT NULL,
+      code_intervenant character varying(20),
+      source character varying(10),
+      code_reseau character varying(254),
+      code_station character varying(10),
+      date_prelevement date,
+      heure_prelevement character varying(8),
+      code_support integer,
+      nature_eau character varying(3),
+      id_usage character varying(3),
+      id_prelevement_motif character varying(2),
+      commentaire character varying(254),
+      code_parametre bigint,
+      code_fraction_analysee integer,
+      date_analyse date,
+      resultat_analyse double precision,
+      code_remarque integer,
+      limite_detection double precision,
+      limite_quantification double precision,
+      CONSTRAINT pk_nitrate_prelevement_analyse_{version} PRIMARY KEY (code_prelevement_analyse),
+      CONSTRAINT fk_n_support FOREIGN KEY (code_support)
+          REFERENCES sandre.n_support (code_support) MATCH SIMPLE
+          ON UPDATE CASCADE ON DELETE SET DEFAULT,
+      CONSTRAINT fk_parametre FOREIGN KEY (code_parametre)
+          REFERENCES qualite_cours_d_eau.parametre (code_parametre) MATCH SIMPLE
+          ON UPDATE CASCADE ON DELETE SET DEFAULT,
+      CONSTRAINT fk_n_fraction_analysee FOREIGN KEY (code_fraction_analysee)
+          REFERENCES sandre.n_fraction_analysee (code_fraction_analysee) MATCH SIMPLE
+          ON UPDATE CASCADE ON DELETE SET DEFAULT,
+      CONSTRAINT fk_n_remarque FOREIGN KEY (code_remarque)
+          REFERENCES sandre.n_remarque (code_remarque) MATCH SIMPLE
+          ON UPDATE NO ACTION ON DELETE NO ACTION
+    ) WITH (OIDS=FALSE);"),
+    
+    glue::glue("ALTER TABLE nitrates.nitrate_prelevement_analyse_{version} OWNER TO adminpsql;"),
+    
+    glue::glue("GRANT ALL ON TABLE nitrates.nitrate_prelevement_analyse_{version} TO adminpsql;"),
+    glue::glue("GRANT ALL ON TABLE nitrates.nitrate_prelevement_analyse_{version} TO writer_production;"),
+    glue::glue("GRANT SELECT ON TABLE nitrates.nitrate_prelevement_analyse_{version} TO reader_production;"),
+    
+    glue::glue("COMMENT ON TABLE nitrates.nitrate_prelevement_analyse_{version} IS 
+      'Table des prélèvements et analyses 2007-{last_year} (version {version} du {date_now})';"),
+    
+    glue::glue("CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq
+      INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;"),
+    
+    glue::glue("ALTER SEQUENCE nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq
+      OWNER TO adminpsql;")
+  )
+  
+  # Ajout des commentaires sur chaque champ
+  comments_sql <- c(
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_prelevement_analyse IS 'Identifiant du prélèvement';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_intervenant IS 'Identifiant de l''intervenant';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.source IS 'Source de la donnée';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_reseau IS 'Identifiant du réseau';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_station IS 'Identifiant de la station';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_prelevement IS 'Date du prélèvement';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.heure_prelevement IS 'Heure du prélèvement';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_support IS 'Code du support de prélèvement';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.nature_eau IS 'Nature de l''eau du prélèvement (ESO/ESU)';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_usage IS 'Code de l''usage du prélèvement';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.id_prelevement_motif IS 'Code du motif du prélèvement';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.commentaire IS 'Commentaire';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_parametre IS 'Identifiant du paramètre analysé';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_fraction_analysee IS 'Identifiant de la fraction analysée';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.date_analyse IS 'Date de l''analyse';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.resultat_analyse IS 'Résultat de l''analyse';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.code_remarque IS 'Code validant la donnée';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_detection IS 'Limite de détection';"),
+    glue::glue("COMMENT ON COLUMN nitrates.nitrate_prelevement_analyse_{version}.limite_quantification IS 'Limite de quantification';")
+  )
+  
+ # Exécuter chaque commande SQL
+  for (sql in c(sql_commands, comments_sql)) {
+    DBI::dbExecute(connexion, sql)
+  }
+
+  # Fermeture de la connexion à la base de données
+  DBI::dbDisconnect(connexion)
+  
+  # Retourne toutes les commandes exécutées
+  return(c(sql_commands, comments_sql))
+}
diff --git a/dev/config_fusen.yaml b/dev/config_fusen.yaml
index e1b062b14634d3420866813f821add87f1ea0ed3..e69b44b403d1790ab4571f7f6bd70bcf4dfe7fae 100644
--- a/dev/config_fusen.yaml
+++ b/dev/config_fusen.yaml
@@ -1,3 +1,20 @@
+flat_create_table_sequence.Rmd:
+  path: dev/flat_create_table_sequence.Rmd
+  state: active
+  R:
+  - R/add_code_prelevement_analyse.R
+  - R/create_table_nitrate_prelevement_analyse.R
+  tests: []
+  vignettes: vignettes/creation-de-la-table-et-de-la-sequence.Rmd
+  inflate:
+    flat_file: dev/flat_create_table_sequence.Rmd
+    vignette_name: creation-de-la-table-et-de-la-sequence
+    open_vignette: true
+    check: true
+    document: true
+    overwrite: ask
+    clean: ask
+    codecov: false
 flat_create_tables_sequences.Rmd:
   path: dev/flat_create_tables_sequences.Rmd
   state: active
@@ -15,6 +32,8 @@ flat_create_tables_sequences.Rmd:
     check: true
     document: true
     overwrite: ask
+    clean: ask
+    codecov: false
 flat_import_ars_data.Rmd:
   path: dev/flat_import_ars_data.Rmd
   state: active
diff --git a/dev/flat_create_table_sequence.Rmd b/dev/flat_create_table_sequence.Rmd
index d6532f11a1b2dcd1eaaf0bc2c209bf131b08b431..4515c0159e2195926274001754494c026a4ee90b 100644
--- a/dev/flat_create_table_sequence.Rmd
+++ b/dev/flat_create_table_sequence.Rmd
@@ -103,10 +103,10 @@ create_table_nitrate_prelevement_analyse <- function(version, last_year) {
     glue::glue("COMMENT ON TABLE nitrates.nitrate_prelevement_analyse_{version} IS 
       'Table des prélèvements et analyses 2007-{last_year} (version {version} du {date_now})';"),
     
-    glue::glue("CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_seq
+    glue::glue("CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq
       INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;"),
     
-    glue::glue("ALTER SEQUENCE nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_seq
+    glue::glue("ALTER SEQUENCE nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq
       OWNER TO adminpsql;")
   )
   
@@ -181,22 +181,29 @@ add_code_prelevement_analyse <- function(dataframe, version) {
   # Établir une connexion à la base de données PostgreSQL
   connexion <- datalibaba::connect_to_db(db = "si_eau", user = "admin")
   
+  # Créer la séquence correspondant à la table
+  create_sequence <- glue::glue("CREATE SEQUENCE IF NOT EXISTS nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq
+      INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1;")
+  
+  # Exécuter le script dans la base de données
+  DBI::dbExecute(connexion, create_sequence)
+  
   # Construire le nom de la séquence
-  sequence_name <- glue::glue("nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_seq")
+  sequence_name <- glue::glue("nitrates.nitrate_prelevement_analyse_{version}_code_prelevement_analyse_seq")
   
   # Initialiser une liste pour stocker les valeurs de la séquence
-  code_prelevements <- c()
+  code_prelevements_analyses <- c()
   
   # Pour chaque ligne du dataframe, obtenir une valeur de la séquence
   for (i in 1:nrow(dataframe)) {
-    query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement")
+    query <- glue::glue("SELECT nextval(\'{sequence_name}\') AS code_prelevement_analyse")
     result <- DBI::dbGetQuery(connexion, query)
-    code_prelevements <- c(code_prelevements, result$code_prelevement)
+    code_prelevements_analyses <- c(code_prelevements_analyses, result$code_prelevement_analyse)
   }
   
   # Ajouter la nouvelle variable au dataframe
   dataframe <- dataframe |>
-    dplyr::mutate(code_prelevement = code_prelevements)
+    dplyr::mutate(code_prelevement_analyse = code_prelevements_analyses)
   
   # Fermer la connexion à la base de données
   DBI::dbDisconnect(connexion)
@@ -218,7 +225,7 @@ dataframe <- data.frame(
 version <- "v1"
 
 # Utiliser la fonction add_code_prelevement() avec la version souhaitée
-dataframe <- code_prelevement_analyse(
+dataframe <- add_code_prelevement_analyse(
   dataframe, version)
 
 ```
diff --git a/man/add_code_prelevement_analyse.Rd b/man/add_code_prelevement_analyse.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..02b01b8ac34197e46c56ab094403b82de96aa4f0
--- /dev/null
+++ b/man/add_code_prelevement_analyse.Rd
@@ -0,0 +1,39 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/add_code_prelevement_analyse.R
+\name{add_code_prelevement_analyse}
+\alias{add_code_prelevement_analyse}
+\title{Ajouter une variable code_prelevement_analyse au dataframe}
+\usage{
+add_code_prelevement_analyse(dataframe, version)
+}
+\arguments{
+\item{dataframe}{Un dataframe contenant les données sur lesquelles ajouter
+la variable \code{code_prelevement_analyse}.}
+
+\item{version}{Une chaîne de caractères représentant la version de la
+séquence à utiliser.}
+}
+\value{
+Un dataframe avec une nouvelle colonne \code{code_prelevement_analyse}
+contenant les valeurs de la séquence PostgreSQL.
+}
+\description{
+Cette fonction ajoute une nouvelle variable
+\code{code_prelevement_analyse} au dataframe en utilisant une séquence
+PostgreSQL dynamique. La séquence est construite en fonction du
+paramètre \code{version} fourni.
+}
+\examples{
+# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
+dataframe <- data.frame(
+  id_prelevement = 1:5,
+  autre_colonne = sample(letters, 5)
+)
+# Définir une version pour l'exemple
+version <- "v1"
+
+# Utiliser la fonction add_code_prelevement() avec la version souhaitée
+dataframe <- add_code_prelevement_analyse(
+  dataframe, version)
+
+}
diff --git a/man/create_table_nitrate_prelevement_analyse.Rd b/man/create_table_nitrate_prelevement_analyse.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..26cc5e7bf5a563f3d5feb53673097f2b5d0a0269
--- /dev/null
+++ b/man/create_table_nitrate_prelevement_analyse.Rd
@@ -0,0 +1,21 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/create_table_nitrate_prelevement_analyse.R
+\name{create_table_nitrate_prelevement_analyse}
+\alias{create_table_nitrate_prelevement_analyse}
+\title{Créer une table de prélèvements et analyses de nitrates}
+\usage{
+create_table_nitrate_prelevement_analyse(version, last_year)
+}
+\arguments{
+\item{version}{String. Version de la table (par exemple, 'v1').}
+
+\item{last_year}{Integer. L'année la plus récente incluse dans les données de la table.}
+}
+\value{
+String. Le script SQL utilisé pour créer la table.
+}
+\description{
+Cette fonction crée une table dans une base de données PostgreSQL
+pour stocker les informations relatives aux prélèvements et analyses de
+nitrates, incluant les contraintes et les séquences nécessaires.
+}
diff --git a/vignettes/creation-de-la-table-et-de-la-sequence.Rmd b/vignettes/creation-de-la-table-et-de-la-sequence.Rmd
new file mode 100644
index 0000000000000000000000000000000000000000..46b7413bfc81d478a908e4aa07dd6b7cda629657
--- /dev/null
+++ b/vignettes/creation-de-la-table-et-de-la-sequence.Rmd
@@ -0,0 +1,82 @@
+---
+title: "creation-de-la-table-et-de-la-sequence"
+output: rmarkdown::html_vignette
+vignette: >
+  %\VignetteIndexEntry{creation-de-la-table-et-de-la-sequence}
+  %\VignetteEngine{knitr::rmarkdown}
+  %\VignetteEncoding{UTF-8}
+---
+
+```{r, include = FALSE}
+knitr::opts_chunk$set(
+  collapse = TRUE,
+  comment = "#>"
+)
+```
+
+```{r}
+library(data.nitrates)
+```
+
+<!-- WARNING - This vignette is generated by {fusen} from dev/flat_create_table_sequence.Rmd: do not edit by hand -->
+
+
+
+
+```{r config}
+#| eval: no
+
+# Lire le fichier de configuration
+config <- yaml::read_yaml("config.yml")
+
+# Accéder aux valeurs pour version et last_year
+version <- config$version
+last_year <- config$last_year
+```
+
+
+# Présentation
+
+Cette page contient les fonctions permettant :
+- de créer en base la table `nitrates.nitrate_prelevement_analyse_version`,
+- d'incrémenter la séquence correspondante au moment de l'import des données.
+
+# Création de la table en base
+
+## Création de la table des prélèvements et analyses et ajout des commentaires
+
+Création de la table `nitrates.nitrate_prelevement_version` :
+```{r create_create_table_nitrate_prelevement_analyse}
+#| eval: no
+
+# Création du script SQL avec la version choisie
+sql <- create_table_nitrate_prelevement_analyse(version, last_year)
+```
+
+
+# Incrémentation de la séquence
+
+## Incrémentation de la table des prélèvements et des analyses
+
+La fonction est utilisée au moment d'importer les données des différentes 
+sources dans la table `nitrates.nitrate_prelevement_analyse_version` :
+```{r example_add_code_prelevement_analyse}
+#| eval: no
+
+# Crée un dataframe fictif avec les colonnes nécessaires pour l'exemple
+dataframe <- data.frame(
+  id_prelevement = 1:5,
+  autre_colonne = sample(letters, 5)
+)
+# Définir une version pour l'exemple
+version <- "v1"
+
+# Utiliser la fonction add_code_prelevement() avec la version souhaitée
+dataframe <- add_code_prelevement_analyse(
+  dataframe, version)
+
+```
+
+
+
+