Bonjour bonjour,

Alors mon probleme est vraiment bizarre...
Voila, j'ai un logiciel qui me plotte des courbes enregistrées en .gif dans un répertoire et il m'exporte des statistiques dans un fichiers .csv.

J'ai developpé en python un petit programme qui lit le fichier .csv et récuppère chaque stat dans un dico en stockant le nom de la variable (1ere colonne du fichier excel) et les stats (Min Max et Mean) pour chaque variable.
Ensuite je vais lire un fichier .doc (word) modèle qui possède des chaines de caractere du type : $Nomdelavariable_Min (ou max ou mean)
Et puis je vais remplacer ces chaines par la valeur associée dans le dico a la ligne : Nomdelavariable et la colonne : Min.
Ca marche bien !

Maintenant, j'aimerais intégrer certaines images exportées par mon plotteur dans le fichier .doc.
Seulement, l'idée du remplacement de la chaine de caractere par la valeur de la variable (comme expliqué ci dessus) ne marche plus !
Est ce qu'il est possible, selon vous, de remplacer la chaine de caractere par un lancement de script VBA qui importe l'image (compliqué heiiiiiin)...

Ou alors, est il possible via python d'ouvrir un fichier word qui lance automatiquement toutes les macros contenant une ligne de commande qui importe la courbe.

Il faut savoir que les courbes a introduire dans le rapport sont, pour l'instant, toujours les memes donc un path en dur dans VBA pourrait convenir.
Mais l'idée du passage par python est qu'on pourrait choisir via IHM les courbes a importer.

Bref c'est clair dans ma tete mais surement pas clair sur le papier...
Si vous avez besoin de plus d'explications faites moi le savoir !

Merci pour vos futures réponses.

TequilaPAF

EDIT : Je vous met les codes pour le remplacement dans le fichier doc des statistiques ! Je ne sai spas si ça va servir mais au moins vous aurez peut etre une idée de ce que je prog....
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
52
53
54
55
56
57
58
59
60
61
62
63
 
    def lireCsv(self):#Lit le fichier CSV (nom_fichier_resultat.csv) contenant les _stat dans un dictionnaire
 
        #Liste des champs du fichier CSV !!!! listeDesChamps existe dans module Imporstat
        #listeDesChamps = ['Name','Min','Mean','Max']
 
        #Lire le fichier *_stat.txt, séparateur : separateur_export_csv (fichier .ini)
        #Remplacer le délimiteur par sa valeur dans le fichier .ini
        fichierOuvert = open(self.fichier_csv_resultat.name, "rb")
        lecteur = csv.DictReader(fichierOuvert, delimiter = ';')
 
        self.dictTemp = {}
        #Création du dictionnaire contenant tous les enregistrement du fichier .csv
        for row in lecteur:
            #Dans la clef de self.dictTemp[] on met le nom du paramètre lu dans le fichier .csv
            #et comme valeur on met le dictionnaire lu dans le fichier .csv
            #c'est à dire toute la ligne 'Name', 'Min','Mean','Max'...
            self.dictTemp[row['Name']] = row
            #A l'utilisation, pour obtenir la ligne correspondant à un paramètre :
            # try : toto = self.dictTemp[nom_du_paramétre]
            # except : print 'le paramétre n'existe pas'
        fichierOuvert.close
 
    def ouvrirFichierWord(self):#Ouvre Word
        # Start Word and open the .doc file:
        self.word = win32com.client.Dispatch('Word.Application')
        #Je ne sait pas siles time.sleep sont indispensable, ils viennent de l'exemple que 
        #j'ai utilisé.
        time.sleep(2)
        self.word.Visible = True
        time.sleep(2)
        self.workbook = self.word.Documents.Open(FileName=self.modele_rapport.name)
        time.sleep(2)
        #Réduire la fenêtre Word dans la barre des tâches, la vitesse de traitement
        #devient supersonique
        self.word.WindowState = self.wdWindowStateMinimize
 
    def remplacerDansRapport(self):#Remplace dans le document Word les mots clef par leur valeur
        #Parcourir tous les paramètres lus dans le fichier .csv et les remplacer par leur valeur
        for cle, ligne in self.dictTemp.iteritems():
            for cleLigne, valeur in ligne.iteritems():
                motCleAremplacer = '$'+cle+'_'+cleLigne
                #Formattage en flottant avec 4 chiffres significatifs
                    #remplacer ',' par "." pour  mettre la string au format numérique
                valeur = valeur.replace( ',', '.')
                    #Formattage pour les valeurs numériques les chaines ne sont pas formattées (champ 'name' par exemple)
                try : valeur = '%(nb)0.5g' %{"nb": float(valeur)}
                except : pass
                    #remplacer '.' par ","
                valeur = valeur.replace( '.', ',')
                #Remplacer le mot clé par sa valeur dans le doc Word
                self.remplacerDansWord(motCleAremplacer, valeur)
 
    def remplacerDansWord(self, oldchaine, newchaine):#Remplace oldchaine par newchaine dans le doc ouvert
        #Selection.Find.Replacement.ClearFormatting
        #print 'Rapport - Traitement de', oldchaine
        sel = self.word.Selection
        sel.Find.Replacement.ClearFormatting
        sel.Find.Text = oldchaine
        sel.Find.Forward = True
        newchaine=newchaine.replace('\n','\r')
        sel.Find.Execute( oldchaine,False,False,False,False,False,True,self.wdFindContinue,False,newchaine,self.wdReplaceAll)
        #time.sleep(2)