Bonjour,
Mon problème est lié à l'utilisation de VBA par l'intermédiaire de python. J'ai déjà posé la question sur le forum python, mais il n'y a pas eu grand succès (ce que je comprends vu que mon problème est directement lié à VBA).
J'ai plusieurs excels dans un répertoire qui pour des raisons pratiques ont été formatées en HTML (ruse pour la rapidité d'écriture).
J'aimerai maintenant pouvoir ouvrir ces fichiers dans un même classeur.
Le problème c'est que j'ai mis en forme mes HTML et que j'ai l'impression que tout ça se perd quand on fait la manipulation courante du Sheets(i).Copy-etc. En fait j'en suis pas certain, mais en tout cas mes HTML enlèvent d'entrée le 'grillage' des cellules et formatent les cellules par rapport au texte, ce que ne fait pas le Copy().
Vous allez me dire d'aller chercher les fonctions VBA qui feraient ça 'dans un second temps', mais honnêtement je suis pas loin de mon but et galère déjà suffisamment pour m'infiltrer dans des problèmes récursifs (problèmes impliquant d'autres problèmes). Peut-être existe-il donc un truc simple qui 'ouvre' les fichiers dans des sheets au lieu de devoir les 'copier' (équivalent du wbExcel.Worksheets(1) = fichier... ?)
Pour information, mon code actuel est le suivant. La synthaxe VBA est adaptée au python mais les fonctions sont les mêmes, je pense que c'est compréhensible pour quelqu'un qui ne connait pas python. Faut savoir qu'il ne marche même pas pour une copie simple des fichiers, je sollicite donc votre aide aussi pour simplement ça, ce serait déjà un premier pas !
Merci par avance.
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 xlApp = win32com.client.Dispatch("Excel.Application") excelSheet = ['(differents noms des fichiers excel)'] # manoeuvre pour récupérer le chemin de mon classeur final projet = open('Audit.xls', 'w') projetFile = os.path.abspath(projet.name) projet.close() for sheet in excelSheet : sheetFile = sheet + '.xls' #vérification que le fichier existe dans le répertoire if os.path.isfile(sheetFile) : #recherche encore du path du fichier à copier temp = open(sheetFile, 'r') sheetFile = os.path.abspath(temp.name) temp.close() wbAudit = xlApp.Workbooks.Open(projetFile) wsAudit = wbAudit.Worksheets #création du sheet qui va 'accueillir' le nouveau fichier wsAudit.Add() cnt = wsAudit.Count print 'cnt', cnt wbExcel = xlApp.Workbooks.Open(sheetFile) wsExcel = wbExcel.Worksheets wsExcel(1).Copy(wsAudit(cnt)) wbAudit.Close(SaveChanges = 1) wbExcel.Close()
Partager