Décomposition du taux de marge des sociétés non financières - t_txmargesnf_val

Données - INSEE

Last observation: Q2 2026 (N = 7)

First observation: Q1 1949 (N = 1)

Last data update: 03 sept. 2026, 05:31

Last compile: 04 sept. 2026, 02:31

Info

Définition

Le taux de marge rapporte l’excédent brut d’exploitation (EBE, B2) à la valeur ajoutée brute en valeur (B1).
\[TM = EBE/VA = B2/B1\]

Partant de l’égalité comptable :

$$B2 = B1-D1-D29+D39$$

On peut donc décomposer le taux de marge comme :
\[TM = 1 - D1/B1 -(D29-D39)/B1\]

Le terme D1/B1 peut se récrire de la façon suivante :
\[D1/B1 = D1/D11 * D11/(Emploi salarié) * Emploi salarié/B1 \]

On a :
\[ D1/D11 = (1+D12/D11) = (1+ \text{taux de cotisation employeur apparent}) \]

\[D11/(Emploi salarié) = Salaire moyen par tête nominal = Salaire par tête réel * Prix de la consommation finale \] \[ Emploi salarié/B1 = Emploi salarié / (valeur ajoutée brute en volume * prix de la valeur ajoutée brute) = 1 / (productivité apparente du travail * prix de la valeur ajoutée brute) \]

Donc on peut réécrire le terme D1/B1 :

\[ D1/B1 = (1+ taux de cotisation apparent) * Salaire par tête réel * (1/ Productivité du travail) * Prix de la consommation finale/Prix de la valeur ajoutée brute \]

Ce qui permet au total de décomposer les variations du taux de marge qui dépendent :
- positivement des gains de productivité apparente du travail
- négativement des hausses de salaires par tête réels
- négativement des hausses de cotisations sociales
- positivement des hausses du ratio rapportant le prix de la valeur ajoutée brute à celui de la consommation finale - d’autres éléments de moindre importance (comprenant les impôts nets des subventions et le taux de cotisations sociales apparent)

variable

Code
t_txmargesnf_val |>
  group_by(variable) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
variable Nobs
taux_marge 310
variation_taux_marge 309
Cotisations sociales 193
Salaires réels 193
Autres éléments 105
Productivité 105
Ratio du prix de la VA et du prix de la conso 105

date

Code
t_txmargesnf_val |>
  group_by(date) |>
  summarise(Nobs = n()) |>
  arrange(desc(date)) |>
  print_table_conditional()

2021

Trimestre 1

Code
t_txmargesnf_val |>
  filter(date == as.Date("2021-01-01")) |>
  select(-date) |>
  print_table_conditional()
variable value
taux_marge 35.9690464
variation_taux_marge 2.1705780
Productivité 0.0522159
Salaires réels 0.4909076
Cotisations sociales 0.1180365
Ratio du prix de la VA et du prix de la conso -0.4365573
Autres éléments 1.9466972

Trimestre 2

Code
t_txmargesnf_val |>
  filter(date == as.Date("2021-04-01")) |>
  select(-date) |>
  print_table_conditional()
variable value
taux_marge 34.9114977
variation_taux_marge -1.0575487
Productivité 0.3903450
Salaires réels -0.7561689
Cotisations sociales 0.0836314
Ratio du prix de la VA et du prix de la conso 0.4080674
Autres éléments -1.1831503

Trimestre 3

Code
t_txmargesnf_val |>
  filter(date == as.Date("2022-04-01")) |>
  select(-date) |>
  print_table_conditional()
variable value
taux_marge 30.6319396
variation_taux_marge -0.3107310
Productivité 0.0062127
Salaires réels 0.1402600
Cotisations sociales 0.0037563
Ratio du prix de la VA et du prix de la conso 0.1193586
Autres éléments -0.5802662

Décomposition

2020-

Code
t_txmargesnf_val |>
  filter(variable %in% c("variation_taux_marge",
                         "Ratio du prix de la VA et du prix de la conso",
                         "Salaires réels", "Productivité")) |>
  filter(date >=as.Date("2021-01-01")) |>
  ggplot() + geom_line(aes(x = date, y = value / 100, color = variable)) +
  xlab("") + ylab("Evolution (%)") +
  theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.92)) +
  scale_x_date(breaks = "3 months",
               labels = date_format("%Y %b")) +
  scale_y_continuous(breaks = 0.01*seq(-40, 40, 1),
                     labels = scales::percent_format(accuracy = 1))

Taux de marge des sociétés non financières

Tous

Code
t_txmargesnf_val |>
  filter(variable == "taux_marge") |>
  ggplot() + geom_line(aes(x = date, y = value / 100)) +
  xlab("") + ylab("Taux de marge des sociétés non financières (%)") +
  theme_minimal() +
  scale_x_date(breaks = seq(1945, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-2, 40, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0.349, color = "red", linetype = "dashed")

1990-

Code
t_txmargesnf_val |>
  filter(variable == "taux_marge",
         date >= as.Date("1990-01-01")) |>
  ggplot() + geom_line(aes(x = date, y = value / 100)) +
  xlab("") + ylab("Taux de marge des sociétés non financières (%)") +
  theme_minimal() +
  scale_x_date(breaks = seq(1870, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-2, 40, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0.349, color = "red", linetype = "dashed")

2006-

Code
t_txmargesnf_val |>
  filter(variable == "taux_marge",
         date >= as.Date("2006-01-01")) |>
  ggplot() + geom_line(aes(x = date, y = value / 100)) +
  xlab("") + ylab("Taux de marge des sociétés non financières (%)") +
  theme_minimal() +
  scale_x_date(breaks = seq(1870, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-2, 40, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0.349, color = "red", linetype = "dashed")

Décomposition du taux de marge des sociétés non financières

Code
t_txmargesnf_val |>
  filter(variable == "taux_marge") |>
  mutate(version = "Estimation INSEE, 28 Juillet 2021") |>
  bind_rows(t_txmargesnf_val_May28 |>
              filter(variable == "taux_marge") |>
              mutate(version = "Estimation INSEE, 28 Mai 2021")) |>
  ggplot() + geom_line(aes(x = date, y = value / 100, color = version)) +
  xlab("") + ylab("Taux de marge des sociétés non financières (%)") +
  theme_minimal() +
  
  scale_x_date(breaks = seq(1870, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_y_continuous(breaks = 0.01*seq(-2, 40, 1),
                     labels = scales::percent_format(accuracy = 1))

Quelques taux de marge

Par secteur

Code
ig_b("insee", "ENTFRA23", "F9", "table1")

Distribution

Code
ig_b("insee", "ENTFRA23", "F9", "figure3")

Théorème de Schmidt ?

All

Code
ig_d("insee", "t_pib_val", "investissement-taux-marge")
Source Dataset Updated PNG PDF
insee t_pib_val 03 sept. 2026 png pdf

1980-

Code
ig_d("insee", "t_pib_val", "investissement-taux-marge-1980")
Source Dataset Updated PNG PDF
insee t_pib_val 03 sept. 2026 png pdf