Observatoire des Entreprises - DIREN

Données - BDF

🇬🇧 English version

Info

Last observation: M: 2026-06-30 (N = 497) · Q: 2026-06-30 (N = 282) · A: 2024-12-31 (N = 402) · W: 2023-12-30 (N = 1)

First observation: M: 1990-01-31 (N = 13) · Q: 1990-03-31 (N = 282) · A: 2007-12-31 (N = 45) · W: 2018-01-07 (N = 1)

Last data update: 16 aoû 2026, 21:29. Last compile: 17 aoû 2026, 23:16

Structure

source dataset Title Updated
bdf DIREN Observatoire des Entreprises 2026-08-10

Méthodologie

Code
ig_b("bdf", "methode_stat_info_defaillances_9-juin-2016", "taille")

Suivi mensuel des défaillances

décembre 2021

Code
ig_b("bdf", "def_ent_2244_fr_si_defaillances_202112_fr_vfinale", "defaillances-par-secteur")

Par mois (02)

PE, TP, GE

Code
DIREN |>
  filter(variable %in% c("DIREN.M.FR.DE.UL.DF.02.Y.ZZ.TP",
                         "DIREN.M.FR.DE.UL.DF.02.Y.ZZ.PM",
                         "DIREN.M.FR.DE.UL.DF.02.Y.ZZ.GE",
                         "DIREN.M.FR.DE.UL.DF.02.Y.ZZ.PE")) |>
  ggplot() + geom_line(aes(x = date, y = value, color = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.2),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 10000, 1000))

PE - Petites entreprises

Code
DIREN |>
  filter(variable %in% c("DIREN.M.FR.DE.UL.DF.02.Y.ZZ.PE")) |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 500, 20))

TP - Très petites entreprises

Code
DIREN |>
  filter(variable %in% c("DIREN.M.FR.DE.UL.DF.02.Y.ZZ.TP")) |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 500, 20))

PC - Poids économique des défaillances en termes de crédits mobilisés

Code
DIREN |>
  
  filter(DIREN_OBJET == "PC",
         !(DIREN_TAILLENT %in% c("NP", "PG", "PY", "GE"))) %>%
  select_if(~ n_distinct(.) > 1) |>
  arrange(desc(date)) |>
  mutate(Diren_taillent = str_wrap(Diren_taillent, width = 35)) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Diren_taillent)) +
  theme_minimal() + xlab("") + ylab("Poids économique des défaillances\nen termes de crédits mobilisés") +
  scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 2, 0.1)) +
  theme(legend.position = "bottom",
        legend.title = element_blank()) + guides(color = guide_legend(ncol = 2)) +
  geom_label_repel(data = . %>% group_by(Diren_taillent) %>% filter(date == max(date)),
                   aes(x = date, y = value, color = Diren_taillent, label = DIREN_TAILLENT))

Cumul sur 12 mois (03)

Tous

Hors toutes

Code
DIREN |>
  
  filter(REF_AREA == "FR",
         DIREN_THECO == "DE",
         DIREN_MESURE == "03",
         DIREN_SECTACT == "ZZ",
         DIREN_OBJET == "DF") %>%
  select_if(~ n_distinct(.) > 1) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Diren_taillent)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.3),
        legend.title = element_blank())

Hors microentreprises

Code
data_TTMI <- DIREN |>
  
  filter(REF_AREA == "FR",
         DIREN_THECO == "DE",
         DIREN_MESURE == "03",
         DIREN_SECTACT == "ZZ",
         DIREN_OBJET == "DF",
         DIREN_TAILLENT %in% c("TT", "MI")) %>%
  select_if(~ n_distinct(.) > 1) |>
  select(DIREN_TAILLENT, date, value) |>
  spread(DIREN_TAILLENT, value) |>
  na.omit() |>
  mutate(value = `TT` - `MI`) |>
  select(-`TT`, -`MI`) |>
  mutate(DIREN_TAILLENT = "TT-MI", Diren_taillent = "Ensemble (hors microentreprises)")

data_TTMI |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("Cumul sur 12 mois\nDéfaillances d'entreprises hors microentreprises") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 200)) +
  geom_label_repel(data = . %>% arrange(-value) %>% head(3), aes(x = date, y = value, label = value))

Nombre défaillances

Code
DIREN |>
  
  filter(REF_AREA == "FR",
         DIREN_THECO == "DE",
         DIREN_MESURE == "03",
         DIREN_SECTACT == "ZZ",
         DIREN_OBJET == "DF",
         !(DIREN_TAILLENT %in% c("TT", "MI", "PM"))) %>%
  select_if(~ n_distinct(.) > 1) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Diren_taillent)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.4),
        legend.title = element_blank())

Nombre défaillances

Pourquoi l’arrêt du calcul PME hors microentreprises ?

Code
DIREN |>
  
  filter(REF_AREA == "FR",
         DIREN_THECO == "DE",
         DIREN_MESURE == "03",
         DIREN_SECTACT == "ZZ",
         DIREN_OBJET == "DF",
         !(DIREN_TAILLENT %in% c("TT"))) %>%
  select_if(~ n_distinct(.) > 1) |>
  select(DIREN_TAILLENT, Diren_taillent, date, value) |>
  group_by(DIREN_TAILLENT) |>
  arrange(date) |>
  mutate(value = 100*value/value[date == as.Date("2009-10-31")]) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Diren_taillent)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.4),
        legend.title = element_blank())

PE

Code
DIREN |>
  filter(variable %in% c("DIREN.M.FR.DE.UL.DF.03.N.ZZ.PE")) |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 100))

ME

Code
DIREN |>
  filter(variable %in% c("DIREN.M.FR.DE.UL.DF.03.N.ZZ.ME")) |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 100))

IG - Entreprises de taille intermédiaire et grandes entreprises

Code
DIREN |>
  filter(variable %in% c("DIREN.M.FR.DE.UL.DF.03.N.ZZ.IG")) |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 5))

TP - TPE

Code
DIREN |>
  filter(variable %in% c("DIREN.M.FR.DE.UL.DF.03.N.ZZ.TP")) |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 10000, 200))

Facet wrap

Option 1

Code
DIREN |>
  
  filter(REF_AREA == "FR",
         DIREN_THECO == "DE",
         DIREN_MESURE == "03",
         DIREN_SECTACT == "ZZ",
         DIREN_OBJET == "DF",
         DIREN_TAILLENT %in% c("PE", "IG", "TP")) %>%
  select_if(~ n_distinct(.) > 1) |>
  select(DIREN_TAILLENT, Diren_taillent, date, value) |>
  bind_rows(data_TTMI) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Diren_taillent)) +
  theme_minimal() + xlab("") + ylab("Cumul sur 12 mois\nDéfaillances d'entreprises hors microentreprises") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank()) +
  geom_label_repel(data = . %>%
                     filter(date %in% c(as.Date("2024-03-01"),
                                        as.Date("2024-02-01"),
                                        as.Date("2009-09-01"))), aes(x = date, y = value, label = value, color = Diren_taillent))

Option 2

Code
DIREN |>
  
  filter(REF_AREA == "FR",
         DIREN_THECO == "DE",
         DIREN_MESURE == "03",
         DIREN_SECTACT == "ZZ",
         DIREN_OBJET == "DF",
         DIREN_TAILLENT %in% c("PE", "IG", "TP")) %>%
  select_if(~ n_distinct(.) > 1) |>
  select(DIREN_TAILLENT, Diren_taillent, date, value) |>
  bind_rows(data_TTMI) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Diren_taillent)) +
  theme_minimal() + xlab("") + ylab("Cumul sur 12 mois\nDéfaillances d'entreprises hors microentreprises") +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank()) +
  geom_label_repel(data = . %>%
                    group_by(DIREN_TAILLENT) %>%
                     arrange(-value) %>%
                     slice(1:3), aes(x = date, y = value, label = value, color = Diren_taillent))

Option 3

Code
DIREN |>
  
  filter(REF_AREA == "FR",
         DIREN_THECO == "DE",
         DIREN_MESURE == "03",
         DIREN_SECTACT == "ZZ",
         DIREN_OBJET == "DF",
         DIREN_TAILLENT %in% c("PE", "IG", "TP")) %>%
  select_if(~ n_distinct(.) > 1) |>
  select(DIREN_TAILLENT, Diren_taillent, date, value) |>
  bind_rows(data_TTMI) |>
  arrange(desc(date)) |>
  ggplot() + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("Cumul sur 12 mois\nDéfaillances d'entreprises hors microentreprises") +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank()) +
  geom_label_repel(data = . %>%
                     group_by(DIREN_TAILLENT) %>%
                     filter(date == max(date)), aes(x = date, y = value, label = value)) +
  facet_wrap(~ Diren_taillent, scales = "free")