---
title: "Consommation et besoins théoriques pour la chaleur des bâtiments"
subtitle: "Distinction entre sources d'énergies renouvelables et non renouvelables, Vaud"
lang: fr
author: "DGE-DIREN"
date: last-modified # Renvoie automatiquement la date de dernière modification du .qmd
params: # ! `open_params_metadata_help()` pour des instructions de remplissage détaillées
fonction: 2 # Valeur numérique : 0=Non-défini/1=Description/2=Orientation/3=Pilotage
nature: 2 # Valeur numérique : 0=Non-défini/1=Actions/2=Effets/3=Impacts
idThematique: 08.01.03.02 # Identifiant selon nomenclature obsind theme/sous-theme/objet/id (p.ex. 08.03.01)
niveauPublication: 2 # Valeur numérique : 0=Non-défini/1=Interne/2=Public. Tout autre choix génère un avertissement
niveauDetail: Canton # Texte libre qui indique le niveau minimal d'agrégation disponible pour l'indicateur (canton, commune, région, installation, véhicule, etc.)
frequenceMAJ: Annuel # Texte libre, idéalement à choisir parmi les codes suivants : mensuel/semestriel/annuel/biannuel/mensuel/tous les x ans/non-défini
moisMAJ: 8 # Valeur numérique : 0=Non-défini/1=Janvier/2=Février, etc.
disponibleDepuis: 2022 # Valeur numérique Année (aaaa) (p.ex. 2000)
personneReference: Steve Ducommun # Prénom+Nom de la personne référente de l'indicateur
mailReference: stat.energie@vd.ch # E-mail ACV (générique ou nominal, se terminant par @vd.ch)
uuid: 41e55fd4-168b-496a-91e0-7262394a57ad # !NE PAS MODIFIER! Identifiant unique généré automatiquement à la création de la fiche
uuidParent: null # Identifiant(s) unique(s) des indicateurs parents de l'indicateur actuel (format uuid avec séparateur '/' si plusieurs uuid)
uuidEnfant: null # Identifiant(s) unique(s) des indicateurs enfants de l'indicateur actuel (format uuid avec séparateur '/' si plusieurs uuid)
uuidConnexe: null # Identifiant(s) unique(s) des indicateurs connexes à l'indicateur actuel (format uuid avec séparateur '/' si plusieurs uuid)
majCatalogue: 1 # Valeur numérique : 0=Non/1=Oui pour mettre à jour les métadonnées dans le catalogue des indicateurs (connexion au disque partagé ObsInd requise)
format:
html:
other-links: # Copier la structure ci-dessous pour remplacer/ajouter d'autres liens sous la table des matières
- text: Infos statistiques énergie
href: 'https://www.vd.ch/environnement/energie/chiffres-cles-et-statistiques-energie-vaud/'
target: '_blank'
- text: Profil climatique communes
href: 'https://stat-climat-vd.ch/profil-climat/'
target: '_blank'
- text: Direction de l'énergie
href: 'https://www.vd.ch/djes/dge/dge-diren'
target: '_blank'
metadata-files: # Ne pas supprimer !
- assets/format-options.yml
editor_options:
chunk_output_type: console
---
<!-- Les métadonnées ci-dessus doivent être remplies pour chaque fiche. Lorsqu'un champ n'est disponible, il est possible d'écrire "" ou NULL -->
<!-- Aide au remplissage : `obsindVD::open_aide_remplissage_help()` (lancer la ligne de code dans la console) -->
```{r setup}
#| echo: false
#| warning: false
#| message: false
#| results: asis
# version: 1.2.2 (01.09.2026)
# -----------------------------------------------------------------------------
# Ne rien modifier dans ce bloc de code !
# Ce bloc doit être lancé pour charger les métadonnées dans l'environnement !
# -----------------------------------------------------------------------------
# update_model_setup_code() pour mettre à jour ce bloc avec la version du dernier modèle
# Chargement (ou installation) des librairies disponibles sur CRAN
if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, readxl, glue, gt, DT, ggiraph, scales, ggtext)
# Chargement de la librairie obsindVD privée
# Pour l'installation : suivre les instructions dans le BitBucket : https://dsigit.etat-de-vaud.ch/outils/git/projects/DGE/repos/obsind/
# Si l'accès n'est pas autorisé, faire une demande à l'Observatoire des indicateurs
library(obsindVD)
# Par défaut : ouvrir l'aide obsindVD (supprimer cette ligne si superflu)
open_fiche_quarto_help()
# Vérifie, ajoute et insère des valeurs par défaut pour les métadonnées manquantes (en-tête YAML)
complete_metadata_params()
# Extraction + validation des métadonnées (en-tête YAML)
selected_metadata <- return_selected_metadata()
# Ajout de l'identifiant dans les en-têtes du document html
display_identifiant(value = selected_metadata[['Identifiant thématique']])
```
::: {.callout-tip .narrow icon="false" collapse="true"}
# Métadonnées de l'indicateur
```{r}
# --------------------------------------
# Présentation des métadonnées ----
# --------------------------------------
tidyr::tibble(
`Attribut` = names(selected_metadata),
`Valeur` = selected_metadata
) |>
gt_table_ind()
```
:::
```{r}
# Préciser quelle est l'année maximale recherchée (permet d'automatiser la recherche du bon dossier et fichier pour les données PRONOVO)
an_max <- 2025
```
```{r}
# ---------------------------------------------------------
# Tableau de synthèse ----
# ---------------------------------------------------------
# Pour de l'aide sur comment remplir ce tableau de synthèse lancer la commande suivante dans la console :
# obsindVD::open_tableau_synthese_help()
# Pour afficher l'aide spécifique à une fonction, ajouter '?' avant l'appel de la fonction :
# ?icon_up()
tableau_synthese <- list(
# Premier indicateur... attention à la structure !
list(
titre_indicateur = "Part d'énergies renouvelables dans la consommation finale d'énergie pour la chaleur des bâtiments <b>[%]</b>",
valeur_2025 = 24.1,
obj_2030 = icon_up(type = "obj"),
obj_2040 = NA,
obj_2050 = icon_up(type = "obj"),
tendance_observée = icon_up(type = "trend", text = paste0("2022-", an_max)), # icon_up(), icon_flat(), icon_down()
tendance_évaluée = icon_happy() # icon_happy(), icon_meh(), icon_sad()
),
# Second indicateur... Répliquer la même structure autant de fois que d'indicateurs à afficher dans le tableau de synthèse
list(
titre_indicateur = "Besoins théoriques pour le chauffage des bâtiments <b>[GWh]</b>",
valeur_2025 = 6666,
obj_2030 = icon_down(type = "obj"),
obj_2040 = NA,
obj_2050 = icon_down(type = "obj"),
tendance_observée = icon_up(type = "trend", text = paste0("2022-", an_max)), # text obligatoire pour type = 'trend'
tendance_évaluée = icon_sad() # 'tooltip' modifie l'info-bulle par défaut
)
)
# Impression du tableau de synthèse
print_tableau_synthese(tableau_synthese) # Le résultat peut être customisé comme un objet {gt}
```
# Description {#sec-description}
Cet indicateur informe sur la part des énergies renouvelables dans la consommation d'énergie destinée au chauffage et à la production d’eau chaude sanitaire des bâtiments, ainsi que sur les besoins théoriques pour assurer leur chauffage. Il reflète à la fois l’évolution du recours aux énergies renouvelables et la diminution de la dépendance aux énergies fossiles pour les usages thermiques, mais aussi la baisse de la demande en chaleur liée à l’amélioration de la performance énergétique des enveloppes des bâtiments.
# Cadre de référence {#sec-cadre-reference}
Les objectifs de consommation finale sont définis dans la conception cantonale de l'énergie ([CoCEn 2019](https://www.vd.ch/fileadmin/user_upload/themes/environnement/energie/fichiers_pdf/CoCEn_Pub_complete_20190816.pdf)) et s’inscrivent dans les objectifs de réduction des émissions de CO2 du canton, dont l’objectif est d’atteindre une réduction des émissions de gaz à effet de serre (GES) de 50% à 60% d'ici à 2030 (par rapport à 1990) et la neutralité carbone territoriale d'ici à 2050.
# Graphique {#sec-graphique}
```{r}
# Lecture des données
# Les données du document data_brut.xlsx doit avoir été préparé
# setwd("P:/DIREN/11 POLITIQUE ENERG/11.08 Indicateurs et stat/1 Indicateurs DIREN/3-Fiches IND MET OBJ/INDicateur/Documents de travail - Quarto/Premières versions test/IND_08.01.03.02_Consommation_Batiments_Renouvelables")
data_brut_read <- readxl::read_excel(("./data/data_brut.xlsx"),
sheet = "data_final")
data_long <- data_brut_read |>
pivot_longer(
cols = -1, # toutes les colonnes sauf la 1ère
names_to = "ANNEE",
values_to = "VALEUR"
)
```
```{r }
#| label: fig-G1
##| fig-cap: Répartition de la consommation théorique pour la chaleur des bâtiments selon la source d'énergie, Vaud
#| fig.width: 8
#| fig.asp: 0.6
conso <- data_long |>
filter(VARIABLES %in% c("CONSO_TOT_RENOUVELABLE_GWH", "CONSO_TOT_NON-REN_GWH"))
conso_pct <- conso |>
group_by(ANNEE) |>
mutate(
CONSO_TOT_GWH = sum(VALEUR),
CONSO_PCT = VALEUR / CONSO_TOT_GWH * 100
) |>
ungroup() |>
mutate(VARIABLES = recode(VARIABLES,
"CONSO_TOT_RENOUVELABLE_GWH" = "Energies renouvelables",
"CONSO_TOT_NON-REN_GWH" = "Energies non-renouvelables"
))
g1_plot <- ggplot() +
# Bars (objectives and consumption)
geom_col_interactive(
data = conso_pct,
aes(x = ANNEE, y = CONSO_PCT, fill = VARIABLES,
tooltip = paste("Consommation théorique de ", VARIABLES |> str_remove("\\[.*\\]"), " en ", as.character(ANNEE), " : ", label_number(accuracy = 1, big.mark = "'")(VALEUR), "GWh"),
data_id = paste(ANNEE, VARIABLES)),
width = 0.7
) +
# Colors
scale_fill_manual(
values = c(
"Energies renouvelables" = "#c7e392",
"Energies non-renouvelables" = "grey80"
),
name = NULL
) +
# Titles and caption
labs(
title = str_wrap("**Répartition de la consommation théorique pour la chaleur des bâtiments selon la source d'énergie**", width = 73) |>
stringr::str_replace_all("\n", "<br>") ,
subtitle = str_wrap("Sources d'énergie renouvelables et non renouvelables, Vaud", width = 80) |>
stringr::str_replace_all("\n", "<br>") ,
x = NULL,
y = "Part sur la consommation (%)",
caption = "Source: DGE-DIREN, RegEner / CAD-Prod<br>Etat au 31.12.2025"
) +
geom_text(
data = conso_pct,
aes(
x = ANNEE,
y = CONSO_PCT,
label = paste0(round(CONSO_PCT, 1), "%")
),
position = position_stack(vjust = 0.5),
size = 3
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_markdown(face = "bold", size = 12),
plot.subtitle = element_markdown(size = 10),
plot.caption = element_markdown(hjust = 0, size = 9, margin = margin(t = 5), face = "italic"), # !! MWR: rajout italic
plot.caption.position = "plot",
plot.margin = margin(10, 10, 30, 10),
legend.position = "bottom",
legend.box = "horizontal",
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
axis.text = element_text(size = 8),
axis.title = element_text(size = 10)
)
obsindVD::girafe_light(g1_plot,
# modification du comportement de surlignage : on ajoute de la transparence aux éléments non-survolés !
options = list(
opts_hover_inv(css = "opacity:0.5;"),
opts_hover(css = "opacity:1;"),
# Ajout du nom du PNG téléchargé + remplacement de 'download' par 'télécharger' (survol icône)
opts_toolbar(
position = "topright",
hidden = c("zoom", "selection"),
pngname = paste0(selected_metadata[['Identifiant thématique']], "_G1"),
tooltips = list(
saveaspng = "Télécharger"
)
)
)
)
ggsave(glue("./images/g1_Consommation_thermique_batiments_par_sources_2015-{an_max}.png"), width = 8, height = 6, dpi = 300)
```
```{r}
#| label: fig-G2
##| fig-cap: Besoins thermiques théoriques pour la chaleur des bâtiments, Vaud
#| fig.width: 8
#| fig.asp: 0.6
besoins <- data_long |>
filter(VARIABLES %in% c("BESOINS_CHAUF_GWH", "BESOINS_ECS_GWH"))
besoins_pct <- besoins |>
group_by(ANNEE) |>
mutate(VARIABLES = recode(VARIABLES,
"BESOINS_CHAUF_GWH" = "Chauffage",
"BESOINS_ECS_GWH" = "Eau chaude (ECS)"),
BESOINS_TOT_GWH = sum(VALEUR),
BESOINS_PCT = VALEUR / BESOINS_TOT_GWH *100) |>
ungroup() |>
mutate(VARIABLES = factor(VARIABLES,
levels = c("Eau chaude (ECS)", "Chauffage" )))
g2_plot <- ggplot() +
# Bars
geom_col_interactive(
data = besoins_pct,
aes(x = ANNEE, y = VALEUR, fill = VARIABLES,
tooltip = paste("Besoins théoriques pour ", VARIABLES |> str_remove("\\[.*\\]"), " en ", as.character(ANNEE), " : ", label_number(accuracy = 1, big.mark = "'")(VALEUR), "GWh"),
data_id = paste(ANNEE, VARIABLES)),
width = 0.7
) +
# Colors
scale_fill_manual(
values = c(
"Chauffage" = "#FFC400",
"Eau chaude (ECS)" = "#87CEEB"
),
name = NULL
) +
# Titles and caption
labs(
title = str_wrap("**Besoins thermiques théoriques pour la chaleur des bâtiments**", width = 73) |>
stringr::str_replace_all("\n", "<br>") ,
subtitle = str_wrap("Sources d'énergie renouvelables et non renouvelables, Vaud", width = 80) |>
stringr::str_replace_all("\n", "<br>") ,
x = NULL,
y = "Besoins thermiques théoriques (GWH)",
caption = "Source: DGE-DIREN, RegEner<br>Etat au 31.12.2025"
) +
geom_text(
data = besoins,
aes(
x = ANNEE,
y = VALEUR,
label = label_number(accuracy = 1, big.mark = "'")(VALEUR)
),
position = position_stack(vjust = 0.5),
size = 3
) +
scale_y_continuous(
labels = label_number(big.mark = "'"))+
theme_minimal(base_size = 13) +
theme(
plot.title = element_markdown(face = "bold", size = 12),
plot.subtitle = element_markdown(size = 10),
plot.caption = element_markdown(hjust = 0, size = 9, margin = margin(t = 5), face = "italic"), # !! MWR: rajout italic
plot.caption.position = "plot",
plot.margin = margin(10, 10, 30, 10),
legend.position = "bottom",
legend.box = "horizontal",
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
axis.text = element_text(size = 8),
axis.title = element_text(size = 10)
)
obsindVD::girafe_light(g2_plot,
# modification du comportement de surlignage : on ajoute de la transparence aux éléments non-survolés !
options = list(
opts_hover_inv(css = "opacity:0.5;"),
opts_hover(css = "opacity:1;"),
# Ajout du nom du PNG téléchargé + remplacement de 'download' par 'télécharger' (survol icône)
opts_toolbar(
position = "topright",
hidden = c("zoom", "selection"),
pngname = paste0(selected_metadata[['Identifiant thématique']], "_G2"),
tooltips = list(
saveaspng = "Télécharger"
)
)
)
)
ggsave(glue("./images/g2_Besoins_thermiques_batiments_chauffage-ECS_2015-{an_max}.png"), width = 8, height = 6, dpi = 300)
```
# Analyse {#sec-analyse}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->
## Description statistique {#sec-analyse-description}
En 2025, les énergies renouvelables — à savoir le bois, le solaire thermique, la chaleur ambiante ou l’électricité d’origine renouvelable — ont couvert 24 % de la consommation d'énergie destinée au chauffage et à la production d'eau chaude sanitaire des bâtiments, contre 18 % en 2022 (voir @fig-G1). Dans le même temps, les besoins théoriques pour chauffer les bâtiments vaudois sont restés stables autour de 6'600 GWh par an (voir @tbl-T1).
## Interprétation {#sec-analyse-interpretation}
Ces tendances témoignent d’une part d’un recours accru aux énergies renouvelables, en remplacement des énergies fossiles, et d’autre part d’une amélioration de l’efficacité énergétique du parc immobilier vaudois, qui résulte des rénovations effectuées sur les bâtiments existants ainsi que de la performance accrue de l’enveloppe des nouvelles constructions.
## Périmètre et limites {#sec-analyse-perimetre}
La qualité des données inscrites dans le RCB est fort variable, principalement pour les agents énergétiques. L’OFS a mené en 2017 une enquête par échantillonnage portant sur les caractéristiques énergétiques des bâtiments d’habitation, pour le chauffage et l’eau chaude sanitaire. L’enquête sur les agents énergétiques des bâtiments d'habitation ([SETW, 2017](https://www.bfs.admin.ch/bfs/fr/home/statistiques/construction-logement/enquetes/saeb.html)) présente des différences importantes avec les données du Registre des bâtiments et des logements (RegBL). Une surévaluation de la part des combustibles fossiles a par exemple été observée. La proportion du mazout comme agent énergétique principal pour le chauffage est de 47% au niveau national en se basant sur la statistique du RegBL alors qu’elle est de 39% dans la SETW. On peut par conséquent émettre l’hypothèse que la proportion de chauffages au mazout est également surévaluée pour le canton de Vaud.
L’indicateur de la part d’énergie renouvelable pour la chaleur des bâtiments renseigne uniquement sur l’origine renouvelable de l’énergie et non sur l’efficacité de son utilisation. À titre d’exemple, un chauffage électrique est souvent considéré comme renouvelable si l’électricité utilisée est d’origine renouvelable. Néanmoins, ce mode de chauffage présente un faible rendement exergétique : l’exergie correspond à la “qualité” de l’énergie et à sa capacité à produire un travail utile. Or, convertir de l’électricité (énergie de haute qualité) en chaleur pour les bâtiments (énergie de basse qualité) revient à dégrader cette qualité énergétique. En d’autres termes, une part importante d’énergie renouvelable ne signifie pas forcément que cette énergie est utilisée de manière rationnelle.
Dans les exigences légales et programmes de subvention relatifs à l’énergie, la chaleur de récupération (rejets de chaleur) est généralement traitée au même titre que l’énergie d’origine renouvelable. Pour l’indicateur de cette fiche, il a toutefois été choisi de rester concentré sur l’origine renouvelable de l’énergie, indépendamment des aspects politiques d’encouragement ou d’obligation de certaines formes d’énergies.
# Tableaux {#sec-tableaux}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->
```{r}
#| label: tbl-T1
##| tbl-cap: Consommation théorique pour la chaleur des bâtiments, Vaud
df <- conso_pct |>
rename(
CONSO_GWH = VALEUR) |>
mutate(
CONSO_TOT_PCT = 100 ) |>
# Pivot pour avoir les colonnes Renouvelable / Non renouvelable
pivot_wider(
names_from = VARIABLES,
values_from = c(CONSO_GWH, CONSO_PCT),
names_glue = "{.value}_{VARIABLES}"
) |>
rename(
CONSO_RENOUVELABLE_GWH = 'CONSO_GWH_Energies renouvelables',
CONSO_RENOUVELABLE_PCT = 'CONSO_PCT_Energies renouvelables',
CONSO_NONRENOUV_GWH = 'CONSO_GWH_Energies non-renouvelables',
CONSO_NONRENOUV_PCT = 'CONSO_PCT_Energies non-renouvelables'
) |>
# Sélection + ordre final
select(ANNEE, CONSO_TOT_GWH, CONSO_TOT_PCT, CONSO_RENOUVELABLE_GWH, CONSO_RENOUVELABLE_PCT, CONSO_NONRENOUV_GWH, CONSO_NONRENOUV_PCT)
t1 <- df |>
gt() |>
tab_header(title = md("**Consommation théorique pour la chaleur des bâtiments**"),
subtitle = "Distinction entre sources d'énergies renouvelables et non renouvelables, Vaud") |>
fmt_number(columns = c("CONSO_TOT_GWH", "CONSO_RENOUVELABLE_GWH", "CONSO_NONRENOUV_GWH", "CONSO_TOT_PCT"),sep_mark = "'", decimals = 0) |>
fmt_number(columns = c("CONSO_RENOUVELABLE_PCT", "CONSO_NONRENOUV_PCT"), decimals = 1) |>
cols_label(
ANNEE = "Année",
CONSO_TOT_GWH = "[GWh]",
CONSO_TOT_PCT = "[%]",
CONSO_RENOUVELABLE_GWH = "[GWh]",
CONSO_RENOUVELABLE_PCT = "[%]",
CONSO_NONRENOUV_GWH = "[GWh]",
CONSO_NONRENOUV_PCT = "[%]"
) |>
cols_width(everything() ~ pct(100 / ncol(df))) |>
tab_style(style = cell_text(weight = "bold"),
locations = list(cells_body(columns = c("ANNEE", "CONSO_TOT_GWH", "CONSO_RENOUVELABLE_GWH", "CONSO_NONRENOUV_GWH")),
cells_column_labels(columns = c("ANNEE", "CONSO_TOT_GWH", "CONSO_TOT_PCT", "CONSO_RENOUVELABLE_GWH", "CONSO_RENOUVELABLE_PCT", "CONSO_NONRENOUV_GWH", "CONSO_NONRENOUV_PCT")))) |>
tab_style(
style = cell_text(align = "center"),
locations = cells_column_labels()
) |>
cols_align(align = "center", columns = ANNEE) |>
# spanners
tab_spanner(label = "Total", columns = c(CONSO_TOT_GWH, CONSO_TOT_PCT), level = 1) |>
tab_spanner(label = "Energies renouvelables", columns = c(CONSO_RENOUVELABLE_GWH, CONSO_RENOUVELABLE_PCT), level = 1) |>
tab_spanner(label = "Energies non-renouvelables", columns = c(CONSO_NONRENOUV_GWH, CONSO_NONRENOUV_PCT), level = 1) |>
# tab_spanner(
# label = md("**Nouveau système de chauffage subventionné**"),
# columns = -TYPE,
# level = 2) |>
tab_style(style = cell_borders(sides = "all"),
locations = list(cells_column_labels(), cells_column_spanners())) |>
tab_style(style = cell_borders(sides = c("left", "right")),
locations = list(cells_body())) |>
tab_style(style = cell_text(weight = "bold"),
locations = list(cells_column_spanners(),cells_column_labels())) |>
tab_style(
style = cell_text(align = "left"),
locations = list(cells_footnotes(),cells_source_notes())
) |>
tab_options(column_labels.border.bottom.color = "black") |>
fmt_missing(columns = everything(), missing_text = "") |>
tab_footnote(footnote = "Chauffage et eau chaude sanitaire (ECS)",
locations = cells_title(groups = "title"),
placement = "right") |>
tab_footnote(footnote = "Sont considérés comme des énergies renouvelables : bois, solaire thermique, chaleur ambiante, électricité d'origine renouvelable pour les pompes à chaleur (PAC) et les équipements électriques directs, énergies renouvelables pour les chauffages à distance (CAD).",
locations = cells_title(groups = "subtitle"),
placement = "right") |>
opt_table_outline(style = "solid", width = px(2), color = "lightgrey") |>
tab_source_note(
source_note = md("*Sources : DGE-DIREN, RegEner / CAD-Prod<br>Etat au 31.12.2025*")
)
t1
gtsave(t1, glue("./images/t1_Consommation_thermique_batiments_par_source_2015-{an_max}.html"))
```
```{r}
#| label: tbl-T2
##| tbl-cap: Besoins théoriques pour la chaleur des bâtiments, Vaud
df <- besoins_pct |>
rename(
BESOINS_GWH = VALEUR) |>
mutate(
BESOINS_TOT_PCT = 100 ) |>
# Pivot pour avoir les colonnes Renouvelable / Non renouvelable
pivot_wider(
# id_cols = c(ANNEE, BESOINS_TOT_GWH, BESOINS_TOT_PCT),
names_from = VARIABLES,
values_from = c(BESOINS_GWH, BESOINS_PCT),
names_glue = "{.value}_{VARIABLES}"
) |>
rename(
BESOINS_CHAUFFAGE_GWH = BESOINS_GWH_Chauffage,
BESOINS_CHAUFFAGE_PCT = BESOINS_PCT_Chauffage,
BESOINS_ECS_GWH = `BESOINS_GWH_Eau chaude (ECS)`,
BESOINS_ECS_PCT = `BESOINS_PCT_Eau chaude (ECS)`
) |>
# Sélection + ordre final
select(ANNEE, BESOINS_TOT_GWH, BESOINS_TOT_PCT, BESOINS_CHAUFFAGE_GWH, BESOINS_CHAUFFAGE_PCT, BESOINS_ECS_GWH, BESOINS_ECS_PCT)
t2 <- df |>
gt(rowname_col = NULL) |>
tab_header(title = md("**Besoins théoriques pour la chaleur des bâtiments**"),
subtitle = "Distinction entre besoins pour le chauffage et l'eau chaude sanitaire (ECS), Vaud") |>
fmt_number(columns = c("BESOINS_TOT_GWH", "BESOINS_CHAUFFAGE_GWH", "BESOINS_ECS_GWH", "BESOINS_TOT_PCT"),sep_mark = "'", decimals = 0) |>
fmt_number(columns = c("BESOINS_CHAUFFAGE_PCT", "BESOINS_ECS_PCT"), decimals = 1) |>
cols_label(
ANNEE = "Année",
BESOINS_TOT_GWH = "[GWh]",
BESOINS_TOT_PCT = "[%]",
BESOINS_CHAUFFAGE_GWH = "[GWh]",
BESOINS_CHAUFFAGE_PCT = "[%]",
BESOINS_ECS_GWH = "[GWh]",
BESOINS_ECS_PCT = "[%]"
) |>
# Regrouper les colonnes avec u seul titre
tab_spanner(label = "Total",
columns = c(BESOINS_TOT_GWH, BESOINS_TOT_PCT), level = 1) |>
tab_spanner(label = "Chauffage",
columns = c(BESOINS_CHAUFFAGE_GWH, BESOINS_CHAUFFAGE_PCT), level = 1) |>
tab_spanner(label = "Eau chaude (ECS)",
columns = c(BESOINS_ECS_GWH, BESOINS_ECS_PCT), level = 1) |>
cols_width(everything() ~ pct(100 / ncol(df))) |>
tab_style(style = cell_text(weight = "bold"),
locations = list(cells_body(columns = c("ANNEE", "BESOINS_TOT_GWH", "BESOINS_CHAUFFAGE_GWH", "BESOINS_ECS_GWH")),
cells_column_labels(columns = c("ANNEE", "BESOINS_TOT_GWH", "BESOINS_TOT_PCT", "BESOINS_CHAUFFAGE_GWH", "BESOINS_CHAUFFAGE_PCT", "BESOINS_ECS_GWH", "BESOINS_ECS_PCT")))) |>
tab_style(
style = cell_text(align = "center"),
locations = cells_column_labels()
) |>
tab_style(
style = cell_text(align = "left"),
locations = list(cells_footnotes(),cells_source_notes())
) |>
tab_style(
style = cell_text(weight = "bold"),
locations = list(cells_column_spanners(), cells_column_labels())) |>
cols_align(align = "center", columns = ANNEE) |>
# cols_label_with(
# columns = c("BESOINS_TOT_GWH", "BESOINS_CHAUFFAGE_GWH", "BESOINS_ECS_GWH"),
# fn = \(col) md(paste0(col, "\n\n[GWh]"))
# ) |>
# cols_label_with(
# columns = c("BESOINS_TOT_PCT", "BESOINS_CHAUFFAGE_PCT", "BESOINS_ECS_PCT"),
# fn = \(col) md(paste0(col, "\n\n[%]"))
# ) |>
tab_style(style = cell_borders(sides = "all"),
locations = list(cells_column_labels(), cells_column_spanners())) |>
tab_style(style = cell_borders(sides = c("left", "right")),
locations = list(cells_body())) |>
tab_options(column_labels.border.bottom.color = "black") |>
fmt_missing(columns = everything(), missing_text = "") |>
tab_footnote(footnote = "Chauffage et eau chaude sanitaire (ECS)",
locations = cells_title(groups = "title"),
placement = "right") |>
opt_table_outline(style = "solid", width = px(2), color = "lightgrey") |>
tab_source_note(
source_note = md("*Sources : DGE-DIREN, RegEner / CAD-Prod<br>Etat au 31.12.2025*")
)
t2
gtsave(t2, glue("./images/t2_Besoins_thermiques_batiments_chauffage-ECS_2015-{an_max}.html"))
```
# Méthode {#sec-methode}
Le registre énergétique (RegEner) est alimenté principalement par le registre cantonal des bâtiments (RCB) et complété par les informations provenant du registre des bâtiments et des logements (RegBL) de l’OFS, du programme de subventions pour les bâtiments, ainsi que des certificats énergétiques cantonaux des bâtiments (CECB) effectués. Le RegEner contient des informations concernant tous les bâtiments vaudois au sujet de l’affectation principale du bâtiment, de leur surface de référence énergétique et des agents énergétiques (principal et secondaire) utilisés pour le chauffage, ainsi que pour l’eau chaude sanitaire (ECS). Le RegEner contient également une estimation des consommations et besoins théoriques (pour le chauffage et l’ECS) obtenues à partir des affectations principales des bâtiments, de la SRE, de l’agent énergétique principal et d’indices de besoins de chaleur (IBC) par affectation et période de construction.
La distinction entre énergies renouvelables et non renouvelables repose sur le type d’énergie que le bâtiment utilise directement, appelé “vecteur énergétique” (par exemple l’électricité, le gaz ou le bois). Elle est relativement simple dans certains cas : le gaz et le mazout sont classés comme non renouvelables, tandis que le bois-énergie et le solaire thermique sont considérés comme renouvelables.
Pour l’électricité, la situation est plus nuancée : selon l’Office fédéral de l’énergie ([OFEN - Garanties d'origine et marquage de l'électricité](https://www.bfe.admin.ch/bfe/fr/home/approvisionnement/approvisionnement-en-electricite/garanties-origine-et-marquage-de-electricite.html)), 71% de l’électricité consommée en Suisse en 2024 peut être qualifiée de renouvelable.
Pour la chaleur obtenue par l’incinération des déchets, une analyse des déchets incinérés [OFEN - Schweizerische Statistik der erneuerbaren Energien](https://www.bfe.admin.ch/bfe/de/home/versorgung/statistik-und-geodaten/energiestatistiken/teilstatistiken.exturl.html/aHR0cHM6Ly9wdWJkYi5iZmUuYWRtaW4uY2gvZGUvcHVibGljYX/Rpb24vZG93bmxvYWQvMTE1MDk=.html) montre que près de 50% des déchets sont constitués de mtières renouvelables (bois, papier, carton, déchets végétaux,
Enfin, pour les réseaux de chauffage à distance, cette part est évaluée sur la base des informations disponibles relatives aux ressources utilisées et s’élève à 49,1 % en 2024. Des informations détaillées sont présentées dans une fiche méthodologique dédiée (voir @sec-ref-fiches).
# Comparaison {#sec-comparaison}
L’indicateur choisi par l’OFEN sur leur plateforme [ReporterEnergie](https://energiereporter.energyapps.ch/) est le pourcentage de bâtiments équipés d'un système de chauffage renouvelable. D’après cette plateforme, en Suisse 40% des bâtiments disposent d’énergies renouvelables pour la production de chaleur. Pour le canton de Vaud, cette proportion est de 28% Il est à noter que, contrairement à la méthode de la DGE-DIREN, ReporterEnerige considère les pompes à chaleur comme des systèmes de chauffage utilisant des sources d’énergie entièrement renouvelable et les chauffages électriques comme entièrement non-renouvelable. Pour ce qui est des bâtiments raccordés à un chauffage à distance, les sources d’énergie sont déclarées renouvelables ou non renouvelables en fonction de la source d'énergie primaire de la centrale de chaleur, vraisemblablement la source d’énergie principale de la centrale de chaleur la plus proche (non spécifié dans la feuille méthodologique).
# Références {#sec-ref}
## Fiches associées {#sec-ref-fiches}
**Fiches Méthode** :
* MET_08.01.03.02 : Méthode pour le calcul de la part d’énergies renouvelables pour la chaleur des bâtiments (*disponible sur demande*)
**Fiches Indicateur** :
* [IND_08.01.01.01 : Consommation finale d’énergie, Vaud](https://stat-climat-vd.ch/fiches-indicateurs/themes/energie/IND_08.01.01.01_Consommation_finale.html)
* [IND_08.01.02.01 : Consommation finale d'électricité, Vaud](https://stat-climat-vd.ch/fiches-indicateurs/themes/energie/IND_08.01.02.01_Consommation_Elec.html)
## Autres références {#sec-ref-autres}
- [DGE-DIREN - Conception cantonale de l’énergie (CoCEn 2019)](https://www.vd.ch/fileadmin/user_upload/themes/environnement/energie/fichiers_pdf/CoCEn_Pub_complete_20190816.pdf)
- [OCDC – Durabilité et climat](https://www.vd.ch/themes/environnement/climat/plans-climat-vaudois)
- [OFEN - Reporter Energie : chiffres-clés par commune](https://www.suisseenergie.ch/tools/reporterenergie/)
- [OFEN - Garanties d'origine et marquage de l'électricité](https://www.bfe.admin.ch/bfe/fr/home/approvisionnement/approvisionnement-en-electricite/garanties-origine-et-marquage-de-electricite.html)
- [OFEN - Schweizerische Statistik der erneuerbaren Energien. Ausgabe 2022](https://www.bfe.admin.ch/bfe/de/home/versorgung/statistik-und-geodaten/energiestatistiken/teilstatistiken.exturl.html/aHR0cHM6Ly9wdWJkYi5iZmUuYWRtaW4uY2gvZGUvcHVibGljYX/Rpb24vZG93bmxvYWQvMTE1MDk=.html)
- [OFS - Comptes de l’énergie des ménages et de l’économie, par branches et par agents énergétiques (OFS, 2023)](https://www.bfs.admin.ch/bfs/fr/home/statistiques/energie/consommation.assetdetail.23464623.html)
- [OFS - Enquête sur les agents énergétiques des bâtiments d'habitation (SETW, 2017)](https://www.bfs.admin.ch/bfs/fr/home/statistiques/construction-logement/enquetes/saeb.html)
# Glossaire {#sec-glossaire}
```{r}
# ---------------------------------------------------------
# Bloc pour lecture du file BRUT où se trouvent toutes les définition pour le glossaire et création du data.frame "definition" ----
# ---------------------------------------------------------
tryCatch(
expr = {readxl::read_excel("P:/DIREN/11 POLITIQUE ENERG/11.08 Indicateurs et stat/1 Indicateurs DIREN/3-Fiches IND MET OBJ/Liste Definitions.xlsx",
skip = 2) |>
janitor::clean_names(case="screaming_snake") |>
select(TERME, DEFINITION) |>
readr::write_csv2("./data/definitions.csv")
},
error = function(e) message("Attention: la table définition n'a pas pu être réactualisée avec les données brutes du P:/ ", e$message),
warning = function(w) message("Attention: la table définition n'a pas pu être réactualisée avec les données brutes du P:/ ", w$message)
)
```
```{r}
# ---------------------------------------------------------
# Bloc pour sélectionner les définitions à apparaître dans le glossaire ----
# ---------------------------------------------------------
# Lecture du file
def_tot <- readr::read_delim(file = "./data/definitions.csv",
delim = ";",
show_col_types = FALSE) |>
# Mettre les premières lettres de chaque définition en majuscule
dplyr::mutate(DEFINITION = stringr::str_replace(DEFINITION,"^\\p{L}",stringr::str_to_upper))
# Sélection des définitions
definitions <- def_tot |>
filter(TERME %in% c(
"Gigawattheure (GWh)",
"Energie finale",
"Consommation finale",
"ECS",
"Surface de référence énergétique (SRE)",
"Besoins théoriques",
"Energies renouvelables"
))
# Print de la table avec modification des columns
definitions |>
gt_table_ind() |>
gt::cols_label(TERME = "", DEFINITION ="Définition") |>
gt::tab_options(table.align = "left")
```
# Annexes {#sec-annexes .unnumbered}
## Consommation d'énergie pour la chaleur des bâtiments, selon la source d'énergie {.unnumbered .unlisted}
```{r}
# Préparation des données
conso_ae <- data_long |>
filter(VARIABLES %in% c("CONSO_BOIS_CHAUF_GWH", "CONSO_BOIS_ECS_GWH", "CONSO_CAD_CHAUF_GWH", "CONSO_CAD_ECS_GWH", "CONSO_PAC-ENV_CHAUF_GWH", "CONSO_PAC-ENV_ECS_GWH", "CONSO_PAC-ELEC_CHAUF_GWH", "CONSO_PAC-ELEC_ECS_GWH", "CONSO_ELEC_CHAUF_GWH", "CONSO_ELEC_ECS_GWH", "CONSO_GAZ_CHAUF_GWH", "CONSO_GAZ_ECS_GWH", "CONSO_MAZOUT_CHAUF_GWH", "CONSO_MAZOUT_ECS_GWH", "CONSO_SOLAIRE_CHAUF_GWH", "CONSO_SOLAIRE_ECS_GWH"
)) |>
rename(GWH = VALEUR)
# Consommation finale par agent énergétique
datatable(
conso_ae,
extensions = 'Buttons',
rownames = FALSE,
options = list(
autoWidth = TRUE,
dom = '<"top"fB>rt<"bottom"ip>',
buttons = c('csv'),
filename = paste0(selected_metadata['Identifiant'], "_conso_ae_année_", Sys.Date()),
searching = FALSE,
pageLength = 5,
language = list(url = "https://cdn.datatables.net/plug-ins/1.13.6/i18n/fr-FR.json")
)
) |>
formatRound(
columns = 'GWH',
digits = 0,
mark = "'",
dec.mark = ","
) |>
htmltools::div(style = "width: 70%; margin-left: 0;")
```