6 pièce(s) jointe(s)
Python - Win32com - créer un champ calculé dans un Tableau croisé dynamique Excel
Bonjour les amis,
J'ai un fichier excel qui contient les données ci-dessous :
Pièce jointe 301007
je récupère ces données à l'aide d'un
Citation:
import win32com.client
et les stocke respectivement dans deux listes : myTable et myRates. comme ceci :
Pièce jointe 301010
Je souhaite créer un tableau croisé dynamique (TCD) et d'ajouter un champ calculé directement dedans (sans le calculer à l'extérieur).
J'arrive à faire la partie création du TCD. Mais pas la partie création d'un champ calculé.
Alors j'ai bidouillé une solution, que voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| calField = [['CA Bonifié']]
#j'effectue mon calcul et le stocke dans la liste calField
for a, testMyTable in enumerate(myTable):
for b, testMyRates in enumerate(myRates):
if a >0 and b > 0: #pour exclure la ligne des titres
if testMyTable[0] == testMyRates[0]: #si même région
calField.append( [ testMyTable[ len(testMyTable)-1 ] * ( 1+testMyRates[1] ) ] ) #calcul
for i, testDataRow in enumerate(calField):
for j, testDataItem in enumerate(testDataRow): #extraction du contenu de la liste
Sheet1.Cells(i+1,len(testMyTable)+1).Value = testDataItem #écriture dans la première colonne libre du premier tableau Excel |
Une fois ce calcul effectué, je lance la création du TCD. Je trouve ce processus tiré par les cheveux car je suis obligé d'ajouter une colonne au tableau de base.
Mon BUT est d'écrire un script plus simple et plus optimal qu'un code VBA.
Des pistes pour m'orienter ?
Merci par avance pour votre aide :))
PS : ci-dessous, le code Python et le fichier Excel :
Pièce jointe 301017
Pièce jointe 301013