Estimations d’emploi salarié par secteur d’activité

Données - INSEE

Info

Last observation: Trimestrielle: 2026-Q2 (N = 7)

First observation: Trimestrielle: 1970-Q4 (N = 28)

Number of observations: 12 723

Last data update: 14 aoû 2026, 01:01. Last compile: 14 aoû 2026, 05:43

Structure

Données sur l’emploi

source dataset Title .html .rData
insee TAUX-CHOMAGE Taux de chômage localisé 2026-08-13 2026-08-13
insee CHOMAGE-TRIM-NATIONAL Chômage, taux de chômage par sexe et âge (sens BIT) (1975-) 2026-08-13 2026-08-12
insee CNA-2014-EMPLOI Emploi intérieur, durée effective travaillée et productivité horaire 2026-08-13 2026-08-12
insee DEMANDES-EMPLOIS-NATIONALES Demandeurs d'emploi inscrits à Pôle Emploi 2026-08-13 2026-08-13
insee EMPLOI-BIT-TRIM Emploi, activité, sous-emploi par secteur d’activité (sens BIT) 2026-08-13 2026-08-12
insee EMPLOI-SALARIE-TRIM-NATIONAL Estimations d'emploi salarié par secteur d'activité 2026-08-13 2026-08-12
insee TCRED-EMPLOI-SALARIE-TRIM Estimations d'emploi salarié par secteur d'activité et par département 2026-08-13 2026-08-13

Exemples

  • Au quatrième trimestre 2022, l’emploi salarié augmente de 0,2 %. html / pdf

  • Au troisième trimestre 2022, l’emploi salarié augmente de 0,4 %. html / pdf

  • Au deuxième trimestre 2022, l’emploi salarié augmente de 0,4 %. html / pdf

  • Au premier trimestre 2022, l’emploi salarié augmente de 0,3 %. html / pdf

LAST_COMPILE

LAST_COMPILE
2026-08-14

Last

TIME_PERIOD Nobs
2026-Q2 77

Champ

  • 1970-

  • A5

  • National

NAF2

First, 2000, 2010, Last

NAF2_RGP

First, 2000, 2010, Last

NAF2_RGP 1970-10-01 2000-01-01 2010-01-01 2026-04-01
AZ_PRIV NA NA NA 320.2
BE 5440.3 4034.1 3365.7 NaN
BN_RU 12409.6 15160.6 15932.5 NA
FZ 1807.9 1269.6 1524.0 NaN
FZ_PRIV NA NA NA 1518.1
GU 5320.7 10079.7 11339.4 NaN
GU_HI NA 9453.7 10783.5 NaN
GU_PRIV NA NA NA 13158.2
IND_MANUF NA 3678.3 2992.5 NaN
IND_PRIV NA NA NA 3180.5
OQ_PRIV NA NA NA 2773.7
OQ_RGP NA NA NA NaN
TOT_ENS NA NA NA NaN
TOT_PRIV NA NA NA 20950.8
TOT_PUB NA NA NA NaN

TIME_PERIOD / date

Minimum - 1970-Q4

NAF2 NAF2_RGP OBS_VALUE
SO BN_RU 12409.6
A17-RU SO 478.1
SO BE 5440.3
SO FZ 1807.9
SO GU 5320.7
A17-DE SO 294.7
A17-C1 SO 514.1
A17-C2 SO 36.3
A17-C3 SO 758.3
A17-C4 SO 599.7
A17-C5 SO 3237.3
A17-FZ SO 1807.9
A17-GZ SO 1807.6
A17-HZ SO 983.8
A17-IZ SO 462.8
A17-JZ SO 303.6
A17-KZ SO 372.2
A17-LZ SO 111.0
A17-MN SO 801.6
A38-CA SO 514.1
A38-CD SO 36.3
A38-CL SO 599.7
A38-FZ SO 1807.9
A38-GZ SO 1807.6
A38-HZ SO 983.8
A38-IZ SO 462.8
A38-KZ SO 372.2
A38-LZ SO 111.0

Last

Industrie

Nombre

Tous

Code
plot_tous <- `EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP == "BE") |>
  quarter_to_date() |>
  select(date, OBS_VALUE) |>
  ggplot(aes(x = date, y = OBS_VALUE * 1000)) +
  geom_line(size = 1) +
  xlab("") +
  ylab("") +
  scale_x_date(
    breaks = seq(as.Date("1960-01-01"), as.Date("2100-01-01"), by = "10 years"),
    labels = date_format("%Y")
  ) +
  scale_y_continuous(
    breaks = 1000 * seq(0, 6000, 200),
    labels = label_comma()
  ) +
  theme_minimal(base_size = 13) +
  theme(
    legend.position = "none",
    plot.title = element_text(face = "bold"),
    axis.title.y = element_text(margin = margin(r = 10))
  )

plot_tous

2017

Code
plot_2017 <- `EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP == "BE") |>
  quarter_to_date() |>
  select(date, OBS_VALUE) |>
  filter(date >= as.Date("2017-01-01")) |>
  ggplot(aes(x = date, y = OBS_VALUE * 1000)) +
  geom_line(size = 1) +
  xlab("") +
  ylab("Emploi salarié trimestriel dans l'industrie") +
  scale_x_date(
    breaks = seq(as.Date("2017-01-01"), as.Date("2100-01-01"), by = "2 years"),
    labels = date_format("%Y")
  ) +
  scale_y_continuous(
    breaks = 1000 * seq(0, 6000, 20),
    labels = label_comma()
  ) +
  theme_minimal(base_size = 13) +
  theme(
    legend.position = "none",
    plot.title = element_text(face = "bold"),
    axis.title.y = element_text(margin = margin(r = 10))
  )

plot_2017

Les 2

Code
ggarrange(plot_2017, plot_tous, legend = T)

Salarié, Public, Privé

Part dans l’emploi

Tous

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("TOT_ENS", "TOT_PUB")) |>
  quarter_to_date() |>
  select(date, NAF2_RGP, OBS_VALUE) |>
  spread(NAF2_RGP, OBS_VALUE) |>
  ggplot() + geom_line(aes(x = date, y = TOT_PUB/TOT_ENS)) +
  xlab("") + ylab("Part de l'emploi public") +  theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(),
                     breaks = 0.01*seq(0, 40, 0.2)) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank())

Evolution

Tous

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("TOT_ENS", "TOT_PRIV", "TOT_PUB")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[date == as.Date("2010-10-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2010-Q4)") +  theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 400, 1)) +
  
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank())

2017-Q2

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("TOT_ENS", "TOT_PRIV", "TOT_PUB")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr("2017 Q2")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr("2017 Q2")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2017-T2)") +  theme_minimal() +
  zoo::scale_x_yearqtr(format = '%Y T%q', n = 40) +
  scale_y_log10(breaks = seq(0, 400, 1)) +
  
  theme(legend.position = c(0.45, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2018-Q1

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("TOT_ENS", "TOT_PRIV", "TOT_PUB")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr("2018 Q1")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr("2018 Q1")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2018-T1)") +  theme_minimal() +
  zoo::scale_x_yearqtr(format = '%Y T%q', n = 30) +
  scale_y_log10(breaks = seq(0, 400, 1)) +
  
  theme(legend.position = c(0.45, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

BE-FZ-TOT Privé seulement

Tous

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("GU_PRIV", "FZ_PRIV", "TOT_PRIV", "IND_PRIV")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  arrange(desc(date)) |>
  group_by(NAF2_RGP) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel") +  theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 400, 2)) +
  
  theme(legend.position = c(0.5, 0.8),
        legend.title = element_blank())

2016-T4 -

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("GU_PRIV", "FZ_PRIV", "TOT_PRIV", "IND_PRIV")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr("2016 Q4")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr("2016 Q4")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2016-T4)") +  theme_minimal() +
  zoo::scale_x_yearqtr(format = '%Y T%q', n = 40) +
  scale_y_log10(breaks = seq(0, 120, 1)) +
  theme(legend.position = c(0.5, 0.85),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

2017-Q2 -

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("GU_PRIV", "FZ_PRIV", "TOT_PRIV", "IND_PRIV")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr("2017 Q2")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr("2017 Q2")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2017-Q2)") +  theme_minimal() +
  zoo::scale_x_yearqtr(format = '%Y T%q', n = 40) +
  scale_y_log10(breaks = seq(0, 120, 1)) +
  theme(legend.position = c(0.5, 0.85),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

BE-FZ-GU

Tous

Log

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[date == as.Date("1970-10-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 1970-Q4)") +  theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 400, 10)) +
  
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

Lineaire

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[date == as.Date("1970-10-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 1970-Q4)") +  theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 400, 10)) +
  
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

1990-Q1 -

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  filter(date >= as.Date("1990-01-01")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[date == as.Date("1990-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 1990-Q1)") +  theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 3) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 200, 10)) +
  
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank())

2000-Q1 -

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  filter(date >= as.Date("2000-01-01")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[date == as.Date("2000-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2000-Q1)") +  theme_minimal() +
  scale_x_date(breaks = seq(2000, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(10, 200, 10)) +
  
  theme(legend.position = c(0.15, 0.85),
        legend.title = element_blank())

2010-Q1 -

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  filter(date >= as.Date("2010-01-01")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[date == as.Date("2010-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2010-Q1)") +  theme_minimal() +
  scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 120, 1)) +
  
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank())

2017-Q2 -

Graph

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr("2017 Q2")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr("2017 Q2")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2017-Q2)") +  theme_minimal() +
  zoo::scale_x_yearqtr(format = '%Y T%q', n = 20) +
  scale_y_log10(breaks = seq(0, 120, 1)) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Last 2 years

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr(Sys.Date() - years(2), format="%Y-%m-%d")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr(Sys.Date() - years(2), format="%Y-%m-%d")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2017-Q2)") +  theme_minimal() +
  zoo::scale_x_yearqtr(labels = date_format("%YT%q"), n = 12) +
  scale_y_log10(breaks = seq(0, 120, 1)) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Last 3 years

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr(Sys.Date() - years(3), format="%Y-%m-%d")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr(Sys.Date() - years(3), format="%Y-%m-%d")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP)) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2017-Q2)") +  theme_minimal() +
  zoo::scale_x_yearqtr(format = '%Y T%q', n = 20) +
  scale_y_log10(breaks = seq(0, 120, 1)) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Table

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  quarter_to_date() |>
  
  select(date, NAF2_RGP, OBS_VALUE) |>
  filter(date >= as.Date("2017-04-01")) |>
  spread(NAF2_RGP, OBS_VALUE) |>
  print_table_conditional()

2018-Q1

Code
`EMPLOI-SALARIE-TRIM-NATIONAL` |>
  filter(NAF2_RGP %in% c("BE", "FZ", "GU")) |>
  mutate(TIME_PERIOD = zoo::as.yearqtr(TIME_PERIOD, format = "%Y-Q%q")) |>
  
  select(TIME_PERIOD, NAF2_RGP, OBS_VALUE) |>
  filter(TIME_PERIOD >= zoo::as.yearqtr("2018 Q1")) |>
  group_by(NAF2_RGP) |>
  mutate(OBS_VALUE = 100*OBS_VALUE / OBS_VALUE[TIME_PERIOD == zoo::as.yearqtr("2018 Q1")]) |>
  ggplot() + geom_line(aes(x = TIME_PERIOD, y = OBS_VALUE, color = NAF2_RGP), size = 1) +
  xlab("") + ylab("Emploi Salarié Trimestriel (100 = 2018-Q1)") +  theme_minimal() +
  zoo::scale_x_yearqtr(format = '%Y T%q', n = 30) +
  scale_y_log10(breaks = seq(0, 120, 1)) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))