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))