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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Nom : test1.jpg
Affichages : 546
Taille : 153,9 Ko

ensuite via collage spécial sous WORD j'arrive à mettre mon tableau en forme :

Nom : test2.jpg
Affichages : 491
Taille : 215,0 Ko

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 : 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
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.