2 pièce(s) jointe(s)
Macro Word récupération tableau CSV
Bonjour,
afin d'automatiser plusieurs manipulations j'ai besoin d'une macro capable de venir récupérer un fichier CSV généré par une application (le fichier porte toujours le même nom et est toujours au même endroit) pour ensuite le coller sur word avec une mise en forme (tableau) + par la suite, une mise en forme conditionnelle, pour le copie/coller c'est ok pour la mise en forme nok.
Pour la mise en forme je lance cette macro sous excel (pour test) ça fonctionne correctement :
Code:
1 2 3 4 5 6 7
| Sub AjusterColonnes()
For Each sh In ActiveWorkbook.Sheets
sh.Cells.EntireColumn.AutoFit
sh.Cells.HorizontalAlignment = xlCenter
sh.Cells.VerticalAlignment = xlBottom
Next
End Sub |
ce qui me donne :
Pièce jointe 185798
ensuite via collage spécial sous WORD j'arrive à mettre mon tableau en forme :
Pièce jointe 185799
Donc il me suffit maintenant de combiner une macro qui vient ouvrir mon fichier CSV de le mettre en forme grâce au code ci-dessus pour enfin copier la sélection et la coller...
Mais ça ne fonctionne pas comme je veux :) la mise en forme est juste illisible.
Voici la macro complète :
Code:
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
| Sub Import()
'
' Import Macro
''Déclaration des variables
Dim XlAppli
Dim XlCl
Dim Xlfl
Dim Plage
Dim Ws As Worksheet
Dim derligne, dercolonne As Long
Set XlAppli = CreateObject("Excel.Application") '< L'appli Excel
Set XlCl = XlAppli.Workbooks.Open("C:\temp\RECAP.csv") '< le classeur
Set Xlfl = XlCl.Worksheets("RECAP") '< la feuille
For Each sh In ActiveWorkbook.Sheets
sh.Cells.EntireColumn.AutoFit
sh.Cells.HorizontalAlignment = xlCenter
sh.Cells.VerticalAlignment = xlBottom
Next
derligne = Range("A1").End(xlDown).Row
dercolonne = Range("A1").End(xlToRight).Column
Plage = ("A1:A" & derligne)
Xlfl.Range(Plage).Copy
Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
DoEvents 'laisse le temps au système de réaliser la copie
XlCl.Close False 'ferme le classeur Excel sans enregistrer
DoEvents ' laisse au système le temps de fermer le classeur
XlAppli.Quit ' Ferme Excel
Set XlAppli = Nothing ' supprime les instances
Set XlCl = Nothing
Set Xlfl = Nothing
End Sub |
Si un de vous trouve une solution je suis preneur :)
Bonne journée.