Indice des prix d’entretien-amélioration des bâtiments - Base 2021

Données - INSEE

Info

Last observation: Trimestrielle: 2026-Q1 (N = 30)

First observation: Trimestrielle: 1999-Q1 (N = 10)

Number of observations: 1 990

Last data update: 14 aoû 2026, 23:01. Last compile: 15 aoû 2026, 04:20

Structure

LAST_COMPILE

LAST_COMPILE
2026-08-15

Last

Code
`IPEA-2021` |>
  group_by(TIME_PERIOD) |>
  summarise(Nobs = n()) |>
  arrange(desc(TIME_PERIOD)) |>
  head(1) |>
  print_table_conditional()
TIME_PERIOD Nobs
2026-Q1 30

43-IPEA

Base = 2015

Code
`IPEA-2021` |>
  filter(CONSTRUCTION_ACTIVITE %in% c("43-IPEA-C", "43-IPEA-H", "43-IPEA")) |>
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TYPE_BATIMENT)) + 
  theme_minimal() + xlab("") + ylab("") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(1997:2100, c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(10, 200, 5)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

1999-

Code
`IPEA-2021` |>
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(CONSTRUCTION_ACTIVITE %in% c("43-IPEA-C", "43-IPEA-H", "43-IPEA"),
         date >= zoo::as.yearqtr("1999 Q1")) |>
  group_by(TYPE_BATIMENT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TYPE_BATIMENT)) + 
  theme_minimal() + xlab("") + ylab("Indice de prix des travaux d’entretien-amélioration \ndes bâtiments (100 = 1999T1)") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(1999:2100, c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(10, 200, 5)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2008-

Code
`IPEA-2021` |>
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(CONSTRUCTION_ACTIVITE %in% c("43-IPEA-C", "43-IPEA-H", "43-IPEA"),
         date >= zoo::as.yearqtr("2008 Q1")) |>
  group_by(TYPE_BATIMENT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TYPE_BATIMENT)) + 
  theme_minimal() + xlab("") + ylab("Indice de prix des travaux d’entretien-amélioration \ndes bâtiments (100 = 2008T1)") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2008:2100, c(1, 3)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(10, 200, 5)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2015-

Code
`IPEA-2021` |>
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(CONSTRUCTION_ACTIVITE %in% c("43-IPEA-C", "43-IPEA-H", "43-IPEA"),
         date >= zoo::as.yearqtr("2015 Q1")) |>
  
  group_by(TYPE_BATIMENT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TYPE_BATIMENT)) + 
  theme_minimal() + xlab("") + ylab("Indice de prix des travaux d’entretien-amélioration \ndes bâtiments (100 = 2015T1)") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2015:2100, c(1, 3)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(10, 200, 5)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2017-

Code
`IPEA-2021` |>
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(CONSTRUCTION_ACTIVITE %in% c("43-IPEA-C", "43-IPEA-H", "43-IPEA"),
         date >= zoo::as.yearqtr("2017 Q1")) |>
  group_by(TYPE_BATIMENT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TYPE_BATIMENT)) + 
  theme_minimal() + xlab("") + ylab("Indice de prix des travaux d’entretien-amélioration \ndes bâtiments (100 = 2017T1)") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2017:2100, c(1, 3)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(10, 200, 5)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2020-

Code
`IPEA-2021` |>
  mutate(date = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(CONSTRUCTION_ACTIVITE %in% c("43-IPEA-C", "43-IPEA-H", "43-IPEA"),
         date >= zoo::as.yearqtr("2020 Q1")) |>
  
  group_by(TYPE_BATIMENT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = TYPE_BATIMENT)) + 
  theme_minimal() + xlab("") + ylab("Indice de prix des travaux d’entretien-amélioration \ndes bâtiments (100 = 2020T1)") +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"),
                       breaks = expand.grid(2020:2100, c(1, 2, 3, 4)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(10, 200, 2)) +
  theme(legend.position = c(0.3, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))