Power
Query
Importer, nettoyer, transformer et fusionner des données depuis n'importe quelle source — sans VBA, de façon reproductible et actualisable en un clic.
C'est quoi Power Query ?
Power Query est l'outil de transformation de données intégré à Excel (depuis 2016, onglet Données → Obtenir et transformer). Il permet d'importer des données de n'importe quelle source, de les nettoyer et de les remodeler — sans écrire de macros. Chaque transformation est enregistrée sous forme d'étapes rejouables en langage M.
Le grand avantage : une fois la requête construite, un simple clic sur Actualiser retraite toutes les données. Parfait pour les rapports récurrents alimentés par des exports CSV, bases de données ou APIs.
| Avant Power Query | Avec Power Query |
|---|---|
| Nettoyage manuel chaque mois | Actualisation en 1 clic |
| Macros VBA fragiles | Interface visuelle + M auditable |
| Copier/coller entre fichiers | Connexion directe aux sources |
| Formules RECHERCHEV imbriquées | Fusion de tables propre |
| CSV mal formatés = travail manuel | Nettoyage automatisé & répété |
Dans Excel : Données → Obtenir des données pour démarrer une nouvelle requête. Données → Requêtes et connexions pour voir et gérer les requêtes existantes.
Connecter des sources
// Nommer les requêtes clairement
// ✓ Ventes_2025_Brut, Clients_Ref
// ✗ Requête1, Table2
// Toujours utiliser un Tableau structuré (Ctrl+T)
// comme source interne — la plage s'ajuste automatiquement
// Pour les CSV : spécifier le délimiteur et l'encodage
// Données → Obtenir des données → Fichier → CSV
Pour les connexions SQL ou SharePoint, les informations d'identification sont mémorisées dans Excel. Menu Données → Requêtes et connexions → Paramètres de la source de données pour les gérer.
L'éditeur de requêtes
L'éditeur Power Query s'ouvre dans une fenêtre séparée. Il comporte 4 zones clés : le volet de requêtes (liste à gauche), l'aperçu des données (centre), les étapes appliquées (droite) et la barre de formule M (en haut).
| Action | Où |
|---|---|
| Renommer une requête | Clic droit → Renommer |
| Voir le code M complet | Accueil → Éditeur avancé |
| Modifier une étape | Clic sur l'étape → modifier la barre M |
| Supprimer une étape | Clic droit → Supprimer |
| Réorganiser les étapes | Glisser-déposer dans le volet étapes |
| Charger dans Excel | Accueil → Fermer et charger |
Fermer et charger dans… (pas juste "Fermer et charger") permet de choisir : charger dans une feuille, comme connexion seule (pour les requêtes intermédiaires), ou dans le modèle de données PowerPivot.
Les requêtes intermédiaires (nettoyage, jointures) doivent être chargées en connexion seulement — elles ne créent pas de feuille, mais restent disponibles pour d'autres requêtes.
Étapes appliquées
Chaque transformation crée une étape dans le volet droite. Chaque étape est une ligne de code M. L'ensemble forme un pipeline reproductible.
Nettoyage des données
| Problème | Solution Power Query |
|---|---|
| Espaces en trop | Transformer → Découper (Trim) |
| Casse incohérente | Transformer → Mettre en majuscules/minuscules |
| Lignes vides | Accueil → Supprimer les lignes → Supprimer les lignes vides |
| Doublons | Accueil → Supprimer les lignes → Supprimer les doublons |
| Type incorrect | Clic sur l'icône de type dans l'en-tête → choisir le bon type |
| Valeurs nulles | Filtre sur la colonne → décocher "null" |
| Erreurs dans une colonne | Clic droit sur l'en-tête → Supprimer les erreurs |
| Colonne Date mal formatée | Clic droit → Modifier le type → Utiliser les paramètres régionaux |
Colonnes calculées
// Onglet "Ajouter une colonne" dans l'éditeur
// → Colonne personnalisée → saisir une formule M
// → Colonne à partir d'exemples → taper un exemple, PQ devine
// Exemples de formules dans l'interface
[Prix] * [Quantité] // multiplication
[Prénom] & " " & [Nom] // concaténation
Date.Year([Date]) // extraire l'année
if [CA] > 10000 then "A" else "B" // condition
Grouper & agréger
Grouper par est l'équivalent Power Query d'un tableau croisé dynamique ou d'un GROUP BY SQL. Il regroupe les lignes selon une ou plusieurs colonnes et calcule des agrégats.
// Grouper les ventes par Région et calculer le total
// Grouper par : Région
// Nouvelle colonne : Total CA → Opération : Somme → Colonne : CA
// Résultat :
// Région | Total CA
// Paris | 125 000
// Lyon | 78 500
Pivoter / Dépivoter
Dépivoter transforme des colonnes en lignes (format large → long). C'est l'opération la plus fréquente pour normaliser des données Excel mal structurées avant analyse.
// Avant (format large) :
// Produit | Jan | Fév | Mar
// A | 100 | 120 | 90
// B | 200 | 180 | 220
// Après dépivoter les colonnes Jan/Fév/Mar :
// Produit | Mois | Valeur
// A | Jan | 100
// A | Fév | 120
// A | Mar | 90
// B | Jan | 200
// ...
// Interface : sélectionner Jan/Fév/Mar → clic droit
// → Dépivoter les colonnes
Fusionner des requêtes (JOIN)
La fusion est l'équivalent d'un JOIN SQL — elle combine deux tables sur une colonne commune.
Accueil → Fusionner des requêtes. Sélectionner la colonne clé dans chaque table (Ctrl+clic pour plusieurs colonnes). Choisir le type de jointure. Une colonne imbriquée apparaît — cliquer sur l'icône ⇢ pour développer les colonnes souhaitées.
Ajouter des requêtes (UNION)
Ajouter des requêtes empile des tables ayant la même structure — l'équivalent d'un UNION ALL SQL. Parfait pour combiner des exports mensuels ou des fichiers d'agences différentes.
// Accueil → Ajouter des requêtes
// → Deux tables (simple) ou Trois tables et plus
// Les colonnes sont alignées par nom — pas par position
// Si une colonne manque dans une table → valeurs null
Combiner tous les fichiers d'un dossier
La source Dossier est l'une des plus puissantes : elle importe automatiquement tous les fichiers d'un dossier (même structure), les combine, et se met à jour quand on ajoute un nouveau fichier.
// 1. Données → Obtenir → Fichier → Dossier
// → sélectionner le dossier contenant les fichiers
// 2. Cliquer sur "Combiner" → "Combiner et transformer"
// → Excel crée automatiquement une requête de combinaison
// 3. Power Query crée 3 requêtes en coulisses :
// - Paramètre de chemin source
// - Exemple de fichier (à modifier pour définir le traitement)
// - Requête finale (applique le traitement à tous les fichiers)
// 4. Modifier la requête "Exemple de fichier" pour définir
// les transformations → elles s'appliquent à TOUS les fichiers
Introduction au langage M
Le langage M (Power Query Formula Language) est fonctionnel et immuable : chaque expression produit une nouvelle valeur. Une requête est une suite d'expressions nommées (les étapes) se référençant les unes les autres dans un bloc let ... in.
| Type M | Exemple |
|---|---|
number | 42, 3.14 |
text | "Paris" |
logical | true, false |
date | #date(2025, 1, 15) |
list | {1, 2, 3} |
record | [Nom="Alice", Age=30] |
table | Résultat d'une transformation |
null | Valeur manquante |
Dans les formules M, each _ est un raccourci pour each (x) => x — c'est une fonction anonyme qui reçoit la ligne courante.
Fonctions M essentielles
| Catégorie | Fonction | Rôle |
|---|---|---|
| Table | Table.SelectRows | Filtrer des lignes |
Table.SelectColumns | Garder des colonnes | |
Table.AddColumn | Ajouter une colonne | |
Table.RenameColumns | Renommer des colonnes | |
| Texte | Text.Trim | Supprimer espaces |
Text.Upper / Lower | Casse | |
Text.Contains | Contient une sous-chaîne | |
| Date | Date.Year | Extraire l'année |
Date.Month | Extraire le mois | |
Date.From | Convertir en date | |
| Liste | List.Sum / Average | Agréger |
List.Distinct | Valeurs uniques |
Fonctions personnalisées
On peut créer ses propres fonctions M réutilisables — utile pour appliquer le même traitement à plusieurs requêtes (normalisation, calculs métier, formatage).
Préfixer les fonctions personnalisées avec fx_ pour les distinguer des requêtes de données dans le volet de navigation.
Actualisation & bonnes pratiques
| Actualisation | Comment |
|---|---|
| Une requête | Clic droit → Actualiser |
| Tout le classeur | Données → Actualiser tout |
| Au démarrage | Propriétés de la requête → Actualiser à l'ouverture |
| Toutes les N minutes | Propriétés → Actualiser toutes les X minutes |
| Via VBA | ThisWorkbook.RefreshAll |
Si les fichiers source changent d'emplacement, les requêtes cassent. Utiliser des paramètres de chemin (Gérer les paramètres) pour centraliser le chemin et faciliter le déplacement.
Bonnes pratiques
// Structure recommandée :
// 📁 Paramètres
// └─ Chemin_Source ← chemin du dossier/fichier
// └─ Année_Actuelle ← année pour les filtres
// 📁 Sources brutes
// └─ Ventes_Brut ← données brutes, connexion seulement
// └─ Clients_Brut ← idem
// 📁 Transformations
// └─ Ventes_Propre ← nettoyées, connexion seulement
// └─ Fusion_VentesClient ← jointure, connexion seulement
// 📁 Résultats
// └─ Rapport_Final ← chargé dans Excel (feuille visible)
Cheat Sheet Power Query
📋 Table — Lignes
Table.SelectRows | Filtrer des lignes |
Table.Skip | Sauter N premières lignes |
Table.FirstN | Garder N premières lignes |
Table.Distinct | Supprimer les doublons |
Table.Sort | Trier |
Table.RowCount | Compter les lignes |
📋 Table — Colonnes
Table.SelectColumns | Garder des colonnes |
Table.RemoveColumns | Supprimer des colonnes |
Table.AddColumn | Ajouter une colonne |
Table.RenameColumns | Renommer |
Table.TransformColumns | Transformer les valeurs |
Table.TransformColumnTypes | Changer les types |
🔤 Texte
Text.Trim | Supprimer les espaces |
Text.Clean | Supprimer caract. invisibles |
Text.Upper/Lower | Casse |
Text.Contains | Contient une sous-chaîne |
Text.StartsWith | Commence par |
Text.Split | Fractionner en liste |
📅 Date & Combiner
Date.Year/Month/Day | Extraire composants |
Date.From | Convertir en date |
Date.AddDays | Ajouter des jours |
Table.NestedJoin | Fusionner (JOIN) |
Table.Combine | Empiler (UNION) |
Table.Group | Grouper & agréger |