HDXconsulting, Digital Business Enabler

Bonjour, une fois n’est pas coutume, retrouvez ici un premier article technique sur Python dans Excel. L’inclusion de python dans Excel est maintenant bien connu cependant sa mise en œuvre m’a posé quelques problème de démarrage que je n’ai pas retrouvé complètement sur les tutos existants.

Voici donc la problématique: Je souhaite afficher un graphique via python dans Excel basé sur des données d’une feuille. Contrairement à ce que j’ai vu dans les tutos, notamment Microsoft, les données ne sont cette fois ci pas stockées dans une table au sens Excel mais dans des cellules et cela change la façon dont vous allez passer ces informations à python.

Prenons un exemple simple avec le tableau de données suivant représentant le chiffre d’affaire d’une entreprise par mois. On a donc:

On souhaite afficher le bargraph correspondant via python. Pour cela nous allons utiliser dans une cellule la commande python: « =py ». . Python est maintenant activé dans Excel comme dans la copie d’écran ci-dessous:

Tapez le code suivant qui permet de récupérer les valeurs non pas dans une table Excel mais dans des cellules d’un tableau déclaré en header de la fonction.

# Récupération des données dans le tableau / Indiquez l’ensemble du tableau avec les en-têtes.
data =xl(« Data!C3:N4 »,headers = True)
# Initialisation des mois et du CA / J’ai ici ajouté les mois directement dans le tableau python months au lieu de les reprendre du tableau Excel pour simplifier le formatage.
months = [« Jan », « Feb », « Mar », « Apr », « May », « Jun », « Jul », « Aug », « Sep », « Oct », « Nov », « Dec »]
valuesRea = data.loc[0] # Récupération de la première colonne de données, dans notre exemple la ligne 4 qui correspond à 0 en indice.
# Create DataFrame – Création du tableau de données dans python
df2 = pd.DataFrame({‘Month’: months, ‘Realise’: valuesRea})
Un fois la cellule validée, vous devriez voir apparaître la cellule avec le code python sous la forme « Dataframe ». Vous pouvez alors vérifier le tableau de données en laissant le curseur sur la cellule comme dans l’exemple ci-dessous:
Il reste maintenant à afficher le graph. Pour cela nous utilisons également une commande python dans Excel, pour rappel « =py ». Attention cette cellule doit apparaître après la cellule comprenant le dataframe sinon python ne reconnaîtra pas vos données. Tapez le code suivant:

import matplotlib.pyplot as plt #Ajout des bibliothèques pour les graphs.
import pandas as pd # Ajout de la bibliothèque pour Excel.
import numpy as np

# Plot – Création de la figure type bargraph
Fig, ax = plt.subplots(layout= »constrained »)
plt.bar(df2[‘Month’], df2[‘Realise’], label=’Realisé’, color=’skyblue’)

# Ajouter des étiquettes de valeur
Fig.legend()
x = np.arange(len(df2[‘Month’]))
ax.set_xlabel(‘X label’)
ax.set_ylabel(‘Y label’)

#Show graph
plt.xlabel(‘Month’)
plt.ylabel(‘Value’)
plt.title(‘CA Total by Month’)
plt.xticks(rotation=90)
plt.tight_layout()
plt.show()

Après validation, votre cellule doit afficher . Cilquez sur la cellule pour afficher le graph correspondant comme dans la copie d’écran ci-dessous:
Clique sur « Extract to grid ». Le graphique s’affiche dans la cellule adjacente en miniature. Pour récupérer celui-ci en format image, cliquez droit sur la cellule et choisissez « Pictures in cell -> Place over cells ». Et voilà.
Le graphique s’affiche maintenant en format image.
 
En espérant que cela vois soit utile.
Bonne utilisation.