Bonjour les amis,
J'ai un fichier excel qui contient les données ci-dessous :
je récupère ces données à l'aide d'unet les stocke respectivement dans deux listes : myTable et myRates. comme ceci :import win32com.client
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
classeur.xlsx
TCD3.py
Partager