Bonjour,
J'ai un script qui toutes les semaines se connecte à serveur pour récupérer et archiver des fichiers en erreur et les notifier dans un fichier Excel. Cela me permet ensuite de réaliser quelques retraitements statistiques basiques (erreur par mois, par équipement...).
Afin d'automatiser le retraitement des données, je souhaiterais simuler un tableau croisé dynamique à partir des données lues dans le fichier Excel pour ensuite l'inscrire dans un nouveau fichier Excel.
Dans un premier temps(après de très très très nombreuses tentatives), j'ai réussi à remonter et à mettre à 0 les équipements pour les années et les mois qui ne sont pas en erreur. cela me permet d'avoir des données harmonisées et d'éviter des creux entre les mois et les équipements.
Mon problème se situe dans l'affichage des données. Lors des tests, j'obtiens ceci (résultats partiels) :
---> 2012 10 : EMBARQUE 15
---> 2012 10 : PDC 0
---> 2012 10 : TPV 0
---> 2012 10 : TPVS 12
---> 2012 11 : EMBARQUE 3
---> 2012 11 : PDC 0
---> 2012 11 : TPV 0
---> 2012 11 : TPVS 12
alors que j'essaye d'avoir :
--> 2012 10 : 15 0 0 12
--> 2012 11 : 3 0 0 12
Je pense que le problème vient de la création de la clé. N'étant pas programmeur je manque de recul et d'expérience pour saisir le point bloquant. Si une âme charitable pouvez m'aider car je commence à désespérer...
Je laisse en pièce jointe le code et le fichier Excel me servant de tests.
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 import os import xlrd3 as xlrd chemin = "C:\\Users\\LoicFamilly\\Desktop\\Berty\\P.Y.M\\Tableau Croise Dynamique" os.chdir(chemin) mois = ["01","02","03","04","05","06","07","08","09","10","11","12"] machine = ["EMBARQUE", "TPVS", "TPV", "PDC"] dico = {} ouverture = xlrd.open_workbook("suivi_erreur.xls") feuille1 = ouverture.sheet_by_index(0) for an in range (2012,2013): for m in mois: for eq in machine: cle = str(an) + "_" + str(m) + "_" + str(eq) dico[cle] = 0 listecle = [] for element in dico: listecle.append(element) for lignes in range(1,feuille1.nrows): colonne = feuille1.row_values(lignes) vannee = colonne[1] vmois = colonne[2] vmachine = colonne[5] cle = str(vannee) + "_" + mois[int(vmois)-1] +"_" + str(vmachine) valeur = dico.get(cle, 0) valeur = valeur + 1 dico[cle] = valeur listecle.sort() for i in range(0, len(listecle)): key = listecle[i] kannee = int(key[0:4]) kmois = key[5:7] ktype = key[8:] print(" ---> ", kannee, " ", kmois, " : ",ktype, dico.get(key)) os.system("pause")
Partager