Bureautique & Productivité

Python dans Excel : analyser ses données avec pandas et matplotlib

8 min de lecture

📍 Article principal : Excel pour PME : tableaux structurés, fonctions dynamiques, Copilot et Python
Ce tutoriel utilise Python in Excel pour analyser des données : import via tableau structuré, manipulation pandas, visualisations matplotlib, intégration des résultats dans le classeur.

Objectif

Exécuter du code Python directement dans Excel via la fonction =PY(), manipuler une table de ventes avec pandas, produire un graphique matplotlib, et intégrer les sorties dans des cellules Excel exploitables côté formules.

Disponibilité Python in Excel (référence officielle)

Source : support.microsoft.com — Python in Excel availability.

  • Windows : Current Channel v2408+, Monthly Enterprise Channel v2408+, Semi-Annual Enterprise Channel v2502+.
  • Mac : Current Channel v16.96+ (utilisateurs Enterprise/Business).
  • Web : utilisateurs Enterprise et Business.
  • Non supporté : iPad, iPhone, Android.

Plans éligibles : Office 365 E3/E5, Microsoft 365 Business Standard, Business Premium, Apps for Business. Extension à E1, Business Basic et F3 effectuée entre fin mai et fin juin 2025. Personal/Family : preview uniquement.

Le code Python s’exécute sur un sandbox Microsoft Cloud avec une distribution Anaconda. Bibliothèques disponibles par défaut : pandas, NumPy, Matplotlib, seaborn, scikit-learn, statsmodels.

Prérequis

  • Excel desktop (Windows ou Mac) ou Excel pour le web sous un plan éligible.
  • Connexion Internet (le calcul s’exécute dans le cloud).
  • Connaissances Python de base : pandas DataFrame, indexation, agrégations.
  • Niveau : intermédiaire.
  • Temps : 60 minutes.

Étape 1 — Préparer les données source

Sur une feuille Donnees, créer un tableau structuré Ventes avec les colonnes : Date, Region, Commercial, Produit, Quantite, PrixUnitaire, Montant. Sélectionner la plage, Ctrl+T, cocher en-têtes, valider. Renommer le tableau en Ventes via Création de tableau → Nom du tableau.

Saisir 50 à 100 lignes de données (réelles ou fictives). Vérifier que la colonne Date est bien typée (cellule en haut à droite alignée à droite après typage) et que Montant est une somme correcte de Quantite × PrixUnitaire.

Étape 2 — Premier appel Python in Excel

Sur une nouvelle feuille Analyse, en cellule A1, taper =PY( puis Tab. La cellule bascule en mode édition Python (curseur change, indicateur PY apparaît à gauche).

Saisir :

1 + 1

Confirmer avec Ctrl+Entrée (et non Entrée seul, qui crée un saut de ligne dans l’éditeur Python). Excel renvoie 2 dans la cellule. Sortie attendue : la valeur 2 affichée comme nombre Excel standard.

Si la cellule retourne une erreur #BLOQUÉ! : Python in Excel n’est pas encore activé pour le compte. Vérifier le plan Microsoft 365 et le canal de mise à jour.

Étape 3 — Charger le tableau structuré dans pandas

La fonction xl() est l’interface Excel ↔ Python. Elle accepte une référence de plage ou un nom de tableau structuré et renvoie un DataFrame pandas.

En cellule A2 :

df = xl("Ventes[#All]", headers=True)
df.head()

Sortie attendue : un objet DataFrame affiché en mode Image dans la cellule. Pour l’afficher en valeurs Excel (déversement), clic droit sur la cellule → Sortie Python → Valeurs Excel. Le DataFrame se déverse alors sur les cellules adjacentes.

L’argument [#All] inclut les en-têtes et les données. headers=True indique à pandas que la première ligne contient les noms de colonnes.

Étape 4 — Agrégation pandas

Calcul du chiffre d’affaires par région avec un groupby. En cellule A4 :

ca_region = df.groupby("Region")["Montant"].sum().sort_values(ascending=False)
ca_region

La cellule affiche une Series pandas. Basculer en Valeurs Excel pour la déverser sur la feuille — chaque région prend une ligne, son montant total se trouve en colonne adjacente.

Variations utiles :

df.groupby(["Region","Commercial"])["Montant"].sum().unstack(fill_value=0)
df.pivot_table(values="Montant", index="Region", columns="Produit", aggfunc="sum", fill_value=0)
df.assign(Mois=df["Date"].dt.to_period("M")).groupby("Mois")["Montant"].sum()

Chacune produit un tableau d’agrégation différent. La pivot_table est l’équivalent direct d’un TCD côté pandas.

Étape 5 — Visualisation matplotlib

Pour produire un graphique inséré dans la cellule :

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(8, 4))
ca_region.plot(kind="bar", ax=ax, color="steelblue")
ax.set_title("Chiffre d'affaires par région")
ax.set_ylabel("Montant (EUR)")
ax.tick_params(axis="x", rotation=0)
plt.tight_layout()
fig

La dernière ligne fig retourne l’objet figure ; Excel l’affiche en miniature dans la cellule. Clic droit sur la cellule → Image dans la cellule → Convertir en image flottante pour redimensionner librement.

Pour seaborn (style plus soigné) :

import seaborn as sns
sns.set_theme(style="whitegrid")
ax = sns.barplot(x=ca_region.index, y=ca_region.values, color="steelblue")
ax.set_title("CA par région")
plt.tight_layout()
ax.figure

Étape 6 — Régression linéaire avec scikit-learn

Pour analyser la relation entre quantité et montant :

from sklearn.linear_model import LinearRegression
import numpy as np

X = df[["Quantite"]].values
y = df["Montant"].values

model = LinearRegression().fit(X, y)
print(f"Coefficient : {model.coef_[0]:.2f}")
print(f"Ordonnée    : {model.intercept_:.2f}")
print(f"R²           : {model.score(X, y):.4f}")

La sortie de print() apparaît dans le panneau de diagnostic de Python in Excel (Affichage → Volet de diagnostic Python). Le résultat numérique exploitable côté Excel se renvoie via return ou en faisant simplement de l’objet la dernière expression de la cellule.

Étape 7 — Utiliser le résultat Python dans une formule Excel

Quand un calcul Python est déversé en valeurs Excel (étape 4), les cellules résultantes sont des cellules normales et peuvent être référencées par d’autres formules.

Exemple : la cellule A5 contient le résultat ca_region déversé. La cellule J1 calcule la part du leader :

=A5/SOMME(A5#)

Le # après A5 désigne la totalité de la plage déversée. Cette syntaxe (« plage spillée ») fonctionne aussi avec les fonctions FILTRE, UNIQUE, RECHERCHEX et tout résultat dynamique.

Étape 8 — Sécurité et confidentialité

Python in Excel exécute le code sur Microsoft Cloud, pas sur le poste local. Les données envoyées sont stockées de manière chiffrée pendant l’exécution (source : page Microsoft 365 Trust Center — Data security). Recommandations :

  • Ne pas charger de données soumises à RGPD ou CDP sans accord avec le DPO.
  • Pour les données financières sensibles, vérifier que la résidence des données du tenant Microsoft 365 est compatible (Data residency on commercial paid plans).
  • L’activation/désactivation se pilote au niveau tenant via Microsoft 365 admin center → Settings → Org settings → Python in Excel.

Vérification

  • Le DataFrame chargé via xl() contient bien le même nombre de lignes que le tableau structuré source.
  • Le groupby renvoie des montants cohérents avec ceux d’un TCD basé sur la même source (méthode de contrôle croisée).
  • Le graphique matplotlib s’affiche dans la cellule sans erreur.
  • Le résultat Python en valeurs Excel est utilisable dans des formules Excel via la syntaxe plage#.

Erreurs fréquentes

Erreur Cause Solution
#BLOQUÉ! sur =PY() Plan Microsoft 365 hors périmètre Vérifier l’éligibilité (Business Standard ou supérieur)
NameError: xl is not defined Première ligne ne contient pas xl() Recommencer la formule par xl(), pas par autre chose
Date stockée comme objet et non datetime Excel a typé la colonne en texte Convertir en Date dans Excel avant l’appel
Sortie en image au lieu de valeurs Mode Sortie Python sur Image Clic droit → Sortie Python → Valeurs Excel
Graphique non affiché Dernière expression n’est pas la figure Terminer la cellule par fig ou ax.figure
Calcul lent Standard compute saturé Acheter l’add-on Python in Excel pour le premium compute

Tutoriels associés

Références officielles

FAQ

Python in Excel fonctionne-t-il hors ligne ?
Non. Le calcul s’exécute sur Microsoft Cloud. Une connexion Internet est requise.

Quelles bibliothèques Python sont disponibles ?
La distribution Anaconda fournit pandas, NumPy, Matplotlib, seaborn, scikit-learn, statsmodels et plus de 400 autres. La liste exacte est exposée dans le panneau Python.

Peut-on installer une bibliothèque tierce non incluse ?
Non. Le sandbox Python in Excel est figé sur la distribution Anaconda. Pour des dépendances spécifiques, utiliser l’API Excel via Office Scripts ou Power Query avec un connecteur personnalisé.

Quelle différence entre standard compute et premium compute ?
Standard : inclus dans l’abonnement, mode automatique uniquement. Premium (add-on payant) : calcul plus rapide, modes manuel et partiel disponibles.

Le code Python est-il visible par mes collaborateurs ?
Oui. Le code est stocké dans le classeur et visible par toute personne ouvrant le fichier. Pour cacher la logique métier, déporter le code dans un module Office Scripts ou un service externe.

Comment partager un classeur Python in Excel ?
Stockage OneDrive ou SharePoint, partage standard. Les destinataires doivent eux aussi avoir un plan Microsoft 365 éligible pour exécuter le code.

Tutoriel Excel adapté aux PME et professionnels du Sénégal, Côte d’Ivoire, Mali, Burkina Faso, Niger, Togo, Bénin, Guinée et Mauritanie. Devise FCFA, plan comptable SYSCOHADA, contexte ouest-africain.

📊 Modèles Excel prêts à l’emploi pour PME

Tableau de bord commercial, suivi de trésorerie, gestion de stock, fichier de paie SYSCOHADA — des fichiers construits pour le contexte des PME d’Afrique de l’Ouest.

À partir de 30 000 FCFA · Livraison sous 48 à 72 h après brief

📧 E-mail💬 WhatsApp

Partager