---
title: "Production électrique de source éolienne"
subtitle: "Quantité d'électricité produite annuellement par des éoliennes, Vaud"
lang: fr
#subtitle: "Sous-titre de l'indicateur à insérer ici"
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: 3 # 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.02.05.21 # 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: Site # 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: 7 # Valeur numérique : 0=Non-défini/1=Janvier/2=Février, etc.
disponibleDepuis: 2024 # 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: 97763cc7-fe93-4a24-a9be-f92a5126ce83 # !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:
link-external-newwindow: true
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 = "Production électrique de source éolienne, Vaud <b>[GWh]</b>",
valeur_2025 = "20.0",
obj_2030 = 600, # valeur numérique OU icônes de flèches
obj_2040 = NA,
obj_2050 = 750,
tendance_observée = icon_flat(type = "trend", text = paste0("2024-", an_max)), # icon_up(), icon_flat(), icon_down()
tendance_évaluée = icon_meh() # icon_meh() # 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 = "Production électrique de source éolienne par habitant, Vaud <b>[kWh/hab]</b>",
valeur_2025 = "23.0",
obj_2030 = icon_up(type = "obj"), # valeur numérique OU icônes de flèches
obj_2040 = NA, # icon_up(type = "obj"), # On peut modifier 'Cible non chiffrée' en modifiant l'argument text = "" par exemple pour ne rien afficher
obj_2050 = icon_up(type = "obj"),
tendance_observée = icon_flat(type = "trend", text = paste0("2024-", an_max)), #icon_up(type = "trend", text = paste0("2019-", an_max)), # text obligatoire pour type = 'trend'
tendance_évaluée = icon_meh() #icon_happy(tooltip = "Exemple d'info-bulle personnalisé") # '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 quantité totale d'électricité produite annuellement à partir d’éoliennes installées sur le territoire vaudois. Il traduit l’évolution de la production électrique locale de source éolienne.
# Cadre de référence {#sec-cadre-reference}
Les objectifs de la production d'électricité de source éolienne 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)). L’objectif est d’atteindre une production de 600 GWh<sub>él</sub> par an à l’horizon de 2030. Pour 2050, l’objectif est de produire chaque année 750 GWh<sub>él</sub> à partir d'éoliennes.
# Graphique {#sec-graphique}
```{r}
# ---------------------------------------------------------
# Préparation des données à partir des données brutes
# ---------------------------------------------------------
# 1 - Données de production électrique (lecture des données traitées (en kWh) sous meta_pronovo_résumé_2015-2022_2023-05-17.xlsx onglet qui se trouve sous: P:\DIREN\02 PILOTAGE DIREN\02.11 Bases de donnees\PRONOVO\04_extractions_traitees))
tryCatch(
expr = {
# Chemin du dossier
dossier <- glue("P:/DIREN/02 PILOTAGE DIREN/02.11 Bases de donnees/PRONOVO/04_extractions_traitees/Resultats_{an_max}")
# Lister tous les fichiers qui commencent par "meta_pronovo_résumé_2015-" et contiennent an_max (défini plus tôt)
fichiers <- list.files(
path = dossier,
pattern = glue("^meta_pronovo_résumé_2015-{an_max}.*\\.xlsx$"),
full.names = TRUE
)
# Extraire la date finale du nom de fichier et garder le plus récent
fichier_sel <- fichiers |>
tibble::enframe(name = NULL, value = "fichier") |>
mutate(
# extraire la date sous forme YYYY-MM-DD
date_fin = str_extract(fichier, "\\d{4}-\\d{2}-\\d{2}"),
date_fin = as.Date(date_fin)
) |>
arrange(desc(date_fin)) |> # trier par date décroissante
slice(1) |> # garder le premier (plus récent)
pull(fichier) # extraire le chemin complet
pronovo_detaille <- read_xlsx(fichier_sel,
sheet = "Détaillé")|>
janitor::clean_names(case="screaming_snake")
production_temp <- pronovo_detaille |>
# rename_with(~ stringr::str_extract(.x, "\\d{4}"), tidyselect::starts_with("X")) |>
# Sélectionner uniquement la ressource
filter(CATEGORIE_DIREN == "Eolien") |>
# Convertir ANNEE en numérique pour pouvoir trier ou filtrer
mutate(ANNEE = as.integer(ANNEE),
PRODUCTION_GWH = PRODUCTION/1e6) |>
select(ANNEE,PRODUCTION_GWH)
# en faire un pivot long
production_eolien <- production_temp |>
rename(VALEUR = PRODUCTION_GWH)
# pivot_longer(
# cols = -c(ANNEE, CATEGORIE_DIREN),
# names_to = "VARIABLE",
# values_to = "VALEUR" ) |>
# select(-CATEGORIE_DIREN)
# Export du file dans dossier data
write_delim(production_eolien,"./data/production_eolien.csv", delim = ";")
},
error = function(e) stop(paste("Download failed: Il faut vérifier que le doc soit toujours ok", e$message)),
warning = function(w) stop(paste("Download failed: Il faut vérifier que le doc soit toujours ok", w$message))
)
production_eolien <- read_delim("./data/production_eolien.csv", delim = ";")
# ---------------------------------------------------------
# 2 - Population
# Variables sont : ANNEE et HABITANTS
tryCatch(
expr = {
read_delim("P:/DIREN/02 PILOTAGE DIREN/02.11 Bases de donnees/POPULATION/04_extractions_traitees/population.csv", delim=";") |>
write_delim("./data/population.csv", delim = ";")
},
error = function(e) message("Attention: la table population n'a pas pu être réactualisée avec les données brutes du P:/ ", e$message)
)
population <- read_delim("./data/population.csv", delim = ";") |>
filter(ANNEE >= 2024 & ANNEE <= an_max)
# ---------------------------------------------------------
# 3 - Objectifs CoCEn
# A créer une fois
# objectifs <- tibble(
# ANNEE = c(2030, 2050),
# VALEUR = c(600, 750)
# )
# write_delim(objectifs,"./data/objectifs.csv", delim = ";")
objectifs <- read_delim("./data/objectifs.csv", delim = ";")
```
```{r }
#| label: fig-G1
##| fig-cap: "Production électrique de source éolienne, Vaud"
#| fig.width: 8
#| fig.asp: 0.6
#_______________________________________________________
# G1 - Production électrique de source éolienne, Vaud
#_______________________________________________________
# Prod_hab (obtenir la production par habitant)
production_eolien <- production_eolien |>
mutate(ANNEE = as.integer(as.character(ANNEE)))
# |>
# mutate(VARIABLE = factor(VARIABLE, levels = c("Total")))
prod_hab <- production_eolien |>
left_join(population, by = "ANNEE") |>
mutate(KWH_HAB = (VALEUR*1e6) / HABITANTS) |>
select(ANNEE, KWH_HAB) |>
rename(VALEUR = KWH_HAB) |>
mutate(VARIABLE = "Production par habitant [kWh / hab]")
# Ajouter un trou pour séparer les consommations des objectifs
last_year <- max(production_eolien$ANNEE, na.rm = TRUE)
gap1 <- last_year + 1 # entre dernière année et 2030
gap2 <- 2030 + 1 # entre 2030 et 2050
annees_hist <- sort(unique(production_eolien$ANNEE))
annees_levels <- c(
annees_hist,
gap1,
2030,
gap2,
2050
)
# Ajout les trous à chaque dataset
add_missing_years <- function(df) {
tibble(ANNEE = annees_levels) |>
left_join(df, by = "ANNEE")
}
production_eolien <- add_missing_years(production_eolien)
# production_eolien <- production_eolien |>
# filter(!is.na(VALEUR))
prod_hab <- add_missing_years(prod_hab)
obj_graf <- add_missing_years(objectifs) |>
filter(!is.na(VALEUR))
# Transformer ANNEE en facteur avec ordre
production_eolien <- production_eolien |>
mutate(ANNEE = factor(ANNEE, levels = annees_levels))
# |>
# mutate(VARIABLE = factor(VARIABLE, levels = c("INJECTION_GWH", "AUTOCONSOMMATION_GWH")))
prod_hab <- prod_hab |>
mutate(ANNEE = factor(ANNEE, levels = annees_levels))
obj_graf <- obj_graf |>
mutate(ANNEE = factor(ANNEE, levels = annees_levels)) |>
mutate(VARIABLE = "Objectifs CoCEn 2019") |>
mutate(VARIABLE = factor(VARIABLE, levels = c("Objectifs CoCEn 2019")))
# Coefficient
coef <- max(objectifs$VALEUR, na.rm = TRUE) /
max(prod_hab$VALEUR, na.rm = TRUE)
production_eolien <- production_eolien |>
tidyr::complete(
ANNEE,
# VARIABLE = c("INJECTION_GWH", "AUTOCONSOMMATION_GWH"),
fill = list(VALEUR = 0)
)
production_eolien <- production_eolien |>
mutate(VARIABLE = "Total")
g1_plot <- ggplot() +
# Bars (objectives )
geom_col_interactive(
data = obj_graf,
aes(x = ANNEE, y = VALEUR, fill = VARIABLE,
tooltip = paste(VARIABLE |> str_remove("\\[.*\\]"), " ", ANNEE, " : ", label_number(accuracy = 1, big.mark = "'")(VALEUR), "GWh"),
data_id = ANNEE),
width = 0.7,
position = position_nudge(x = -0.05),
color = NA
) +
# Barres empilées (autoconsommation et réseau)
geom_col_interactive(
data = production_eolien,
aes(x = ANNEE, y = VALEUR, fill = VARIABLE, #était Serie
color = VARIABLE,
tooltip = paste(VARIABLE |> str_remove("\\[.*\\]"), " ", ANNEE, " : ", label_number(accuracy = 0.1, big.mark = "'")(VALEUR), "GWh"),
data_id = ANNEE),
width = 0.7,
position = "stack",
color = NA
) +
# Line (per capita) – use factor + group = 1
geom_line(
data = prod_hab,
aes(x = ANNEE, y = VALEUR * coef, color = VARIABLE, group = 1),
linewidth = 1.2,
) +
geom_point_interactive(
data = prod_hab,
aes(
x = ANNEE,
y = VALEUR * coef,
color = VARIABLE,
tooltip = paste(VARIABLE |> str_remove("\\[.*\\]"), " ", ANNEE, " : ", label_number(accuracy = 0.1, big.mark = "'")(VALEUR), "kWh/hab"),
data_id = ANNEE
),
size = 1.5
)+
scale_fill_manual(
values = c(
"Total" = "#f0d47a",
"Objectifs CoCEn 2019" = "grey80"
),
breaks = c("Total", "Objectifs CoCEn 2019"),
labels = c(
"Total" = "Production totale [GWh]",
"Objectifs CoCEn 2019" = "Objectifs CoCEn 2019"
),
name = NULL,
na.translate = FALSE # afin d'éviter que NA apparaisse dans la légende
) +
# guides(
# fill = guide_legend(nrow = 2, byrow = TRUE),
# color = guide_legend(nrow = 2, byrow = TRUE)
# )+
guides(
color = guide_legend(order = 1, nrow = 1), # légendes sur 1 lignes d'un graphique en ligne
fill = guide_legend(order = 2, nrow = 1, byrow = TRUE) # légendes sur 3 lignes d'un histogramme
)+
scale_color_manual(
values = c(
"Total" = "#f0d47a",
"Objectifs CoCEn 2019" = "grey80",
"Production par habitant [kWh / hab]" = "#E6550D"
),
breaks = c("Production par habitant [kWh / hab]"),
name = NULL,
na.translate = FALSE # afin d'éviter les NA dans la légende
)+
# Y axis with secondary axis
scale_y_continuous(
name = "Production d'électricité [GWh]",
labels = scales::label_number(big.mark = "'", decimal.mark = "."),
sec.axis = sec_axis(~ . / coef,
name = "Production par habitant [kWh / hab]",
labels = scales::label_number(big.mark = "'", decimal.mark = "."))
) +
scale_x_discrete(
drop = FALSE,
labels = function(x) {
ifelse(
x %in% c(as.character(gap1), as.character(gap2)),
"", # cacher uniquement les gaps
x # afficher toutes les autres années
)
}
)+
# Titles and caption
labs(
title = "Production électrique de source éolienne : total et par habitant, Vaud",
x = NULL,
caption = "Source: Pronovo / DGE-DIREN \nEtat au 27.05.2025"
) +
labs(
title = str_wrap("**Production électrique de source éolienne : total et par habitant, Vaud**", width = 73) |>
stringr::str_replace_all("\n", "<br>") ,
x = NULL,
caption = "Source: Pronovo / DGE-DIREN<br>Etat au 27.05.2025" # <br> pour
) +
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", # "top" "left" "right" "none"
legend.box = "vertical", #"horizontal"
legend.box.just = "left", # aligne les blocs à gauche
legend.justification = "left",
legend.text = element_text(size = 10),
legend.title = element_text(size = 12),
legend.spacing.y = unit(0.1, "cm"), # espace entre blocs
legend.margin = margin(t = 0, b = 0), # supprime marge globale
legend.box.spacing = unit(0.1, "cm"), # espace bloc-légende vs reste du plot
axis.text = element_text(size = 8),
axis.title = element_text(size = 10)
)
obsindVD::girafe_light(g1_plot,
# !!MWR : 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_Production_electricite_eolien_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}
2024 est la première année avec une production d’électricité de source éolienne sur le territoire vaudois. Les six éoliennes de Sainte-Croix ont produit un total de 20 GWh<sub>él</sub> d’électricité en 2024, comme d'ailleurs en 2025 (voir @fig-G1).
## Interprétation {#sec-analyse-interpretation}
La situation actuelle est qualifiée de mauvaise : l’électricité produite en 2025 de source éolienne est nettement inférieure aux objectifs à moyen terme (2030).
L’évolution de la production entre 2024 et 2025 est considérée comme insuffisante: il n'y a pas de progression qui permette de penser que les les valeurs cibles puissent être atteintes à moyen terme.
## Périmètre et limites {#sec-analyse-perimetre}
Le parc éolien de Sainte-Croix est le seul projet qui a été réalisé à l’heure actuelle dans le canton de Vaud.
Le parc éolien Sur Grati est actuellement en cours de travaux et devrait entrer en service courant 2027-2028. Ce parc devrait produire environ 45 GWh<sub>él</sub>/an.
Les projets les plus avancés se trouvent au stade du permis de construire (Mollendruz, Eoljorat Sud et Grandsonnaz) et pourraient produire d’ici 2030 environ 250 GWh<sub>él</sub>/an.
Quatre autres projets (Provence, Bel Coster, Bavois, Essertines-sur-Rolle) sont actuellement en cours de développement.
Les autres projets de la planification cantonale sont à l’étude.
# Tableaux {#sec-tableaux}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->
```{r}
#| label: tbl-tableau1
##| tbl-cap: Intitulé du tableau 1
# Changer nom de variable chez prod_hab
prod_hab_wide <- prod_hab |>
filter(!is.na(VALEUR)) |>
rename(KWH_HAB = VALEUR) |>
mutate(ANNEE = as.integer(as.character(ANNEE)))
prod_tot_wide <- production_eolien |>
rename(TOT_GWH = VALEUR) |>
mutate(ANNEE = as.integer(as.character(ANNEE))) |>
filter(ANNEE <= an_max) |>
select(ANNEE, TOT_GWH)
obj_wide <- objectifs |>
rename(TOT_GWH = VALEUR)
df <- prod_tot_wide |>
bind_rows(obj_wide |> mutate(ANNEE = as.integer(ANNEE))) |>
filter(!is.na(TOT_GWH)) |>
# left_join(prod_solaire_wide, by = "ANNEE") |>
left_join(prod_hab_wide, by = "ANNEE") |>
select(ANNEE, TOT_GWH, KWH_HAB)
t1 <- df |>
mutate(across(everything(), \(col) na_if(col, y = 0))) |> # !! MWR: on change les 0 en NA comme ça sub_missing() ci-après transforme les 0 et les NA en "-" (par exemple)
gt() |>
tab_header(title = md("**Production électrique de source éolienne: total et par habitant, Vaud**")) |>
# fmt(columns = -ANNEE, fns = function(x, row) {
# ifelse(
# df$ANNEE[row] < an_max,
# scales::number(x, big.mark = "'", accuracy = 0.1),
# scales::number(x, big.mark = "'", accuracy = 1)
# )
# }
# ) |>
# 1. Formatage pour les années inférieures à an_max (AVEC une décimale forcée)
fmt_number(
columns = -ANNEE,
rows = ANNEE <= an_max,
decimals = 1,
sep_mark = "'"
) |>
# 2. Formatage pour les autres années (SANS décimale)
fmt_number(
columns = -ANNEE,
rows = ANNEE > an_max,
decimals = 0,
sep_mark = "'"
) |>
cols_label(
ANNEE = "Année",
TOT_GWH = "Total",
KWH_HAB = "Par habitant"
) |>
cols_width(everything() ~ pct(100 / ncol(df))) |>
tab_style(style = cell_text(weight = "bold"),
locations = list(cells_body(columns = c("ANNEE", "TOT_GWH", "KWH_HAB")),
cells_column_labels(columns = c("ANNEE", "TOT_GWH", "KWH_HAB")))) |>
tab_style(
style = cell_text(align = "center"),
locations = cells_column_labels()
) |>
tab_style(
style = cell_text(align = "left"),
locations = cells_column_labels(columns = ANNEE)
) |>
tab_style(
style = cell_text(align = "left"),
locations = list(cells_footnotes(), cells_source_notes())
) |>
tab_style(
style = cell_borders(sides = "top", style = "dashed", color = "lightgrey", weight = px(1)),
locations = cells_body(rows = ANNEE == min(objectifs$ANNEE)) # applies to first row
) |>
cols_align(align = "center", columns = -ANNEE) |>
cols_align(align = "left", columns = ANNEE) |>
cols_label_with(
columns = -c(ANNEE, KWH_HAB),
fn = \(col) md(paste0(col, "\n\n[GWh]"))
) |>
cols_label_with(
columns = KWH_HAB,
fn = \(col) md(paste0(col, "\n\n[kWh / hab]"))
) |>
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 = "Objectifs de la Conception cantonale de l'énergie (CoCEn 2019).",
locations = cells_body(columns = ANNEE, rows = ANNEE > year(Sys.Date())),
placement = "right") |>
tab_footnote(footnote = "Electricité injectée dans le réseau et autoconsommée.",
locations = cells_title(groups = "title"),
placement = "right") |>
opt_table_outline(style = "solid", width = px(2), color = "lightgrey") |>
tab_source_note(
source_note = md("*Sources : Pronovo / DGE-DIREN<br>Etat au 11.06.2025*")
)
t1
gtsave(t1, glue("./images/t1_Production_electricite_eolien_2015-{an_max}.html"))
```
# Méthode {#sec-methode}
Les quantités d’électricité d’origine éolienne injectées dans le réseau sont fournies par Pronovo. Des informations plus détaillées se trouvent dans la fiche méthode (voir @sec-ref-fiches).
# Comparaison {#sec-comparaison}
Une étude de la [Fondation suisse de l’énergie (SES, 2025)](https://energiestiftung.ch/files/energiestiftung/Studien/2025_Laendervergleich_Solar-Wind-Stromproduktion/20250611_SES-Studie_L%C3%A4ndervergleich_2024.pdf) présente les productions d’électricité de source solaire et éolienne en Suisse et dans les 27 Etats membres de l’Union européenne en 2024. Avec une production de 19 kWh<sub>él</sub> par habitant d’électricité éolienne, la Suisse se trouve au 25e rang sur 28. Les pays avec la plus forte production par habitant sont la Suède (3’930 kWh<sub>él</sub>/hab) et la Finlande (3’685 kWh<sub>él</sub>/hab). Rappelons que celle observée pour le canton de Vaud est de 24 kWh<sub>él</sub> par habitant.
# Références {#sec-ref}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->
## Fiches associées {#sec-ref-fiches}
**Fiches Méthode** :
* MET_08.02.02.02 : Méthode pour le calcul de la production d’électricité (*disponible sur demande*)
**Fiches Indicateur** :
* [IND_08.02.02.01 : Production électrique de sources renouvelables et non renouvelables, Vaud](https://stat-climat-vd.ch/fiches-indicateurs/themes/energie/IND_08.02.02.01_Production_Electrique_Total.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)
* [Reporter Energie - Chiffres-clés par commune/canton](https://www.suisseenergie.ch/tools/reporterenergie/)
* [Fondation suisse de l’énergie - Produktion von Solar- und Windenergie der Schweiz im europäischen Vergleich (SES, 2025)](https://energiestiftung.ch/files/energiestiftung/Studien/2025_Laendervergleich_Solar-Wind-Stromproduktion/20250611_SES-Studie_L%C3%A4ndervergleich_2024.pdf)
# 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)"
))
# Ajouter Agents énergétiques
# 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}
<!-- Aide au remplissage : consulter la section correspondante avec `obsindVD::open_aide_remplissage_help()` -->