IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro Word récupération tableau CSV


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur UNIFACE, C, C++, C#, Java
    Inscrit en
    Janvier 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur UNIFACE, C, C++, C#, Java
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 71
    Par défaut 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 : 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.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    C'est un banal problème de largeur des colonnes. Cela se règle très facilement dans Word. Tu sélectionnes ton tableau et tu règles tout cela à la souris et en quelques minutes.

    Sinon, si tu veux absolument régler tes largeurs de colonnes en VBA tu regardes dans l'aide de VBA-Word, l'objet Column.

    Il y a la méthode setwidth

    Il y a les propriétés PreferedWidth et Width.

    Ou bien tu enregistres une macro dans Word. Dans ce cas, tu vas devoir faire tes déplacements et tes sélections au clavier. Le support de la souris est limité dans l'enregistreur de macros de Word.

    Et si tu veux avoir accès à l'aide de VBA-Word dans VBA-Excel, tu ajoutes la référence à Word dans VBA-Excel

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur UNIFACE, C, C++, C#, Java
    Inscrit en
    Janvier 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur UNIFACE, C, C++, C#, Java
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 71
    Par défaut
    Bonjour clementmarcotte, et merci de ta réponse, J'aurais bien voulu que ça soit un problème de largeur de colonnes mais je n'ai même pas de colonnes J'ai juste le texte brut du fichier CSV avec point virgule et des lignes (qui remplace les virgules) j'ai l'impression que la conversion CSV passe mal, ce que je ne comprend pas c'est pourquoi en faisans la manipulation sous excel puis dans word cela fonctionne et qu'avec cette macro non, pourtant c'est vraiment basique... ça m'échappe

    voici le résultat de la macro :

    Nom : test3.jpg
Affichages : 461
Taille : 227,7 Ko

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Là c'est un problème d'importation dans Excel.

    Enregistre une macro dans Excel en utilisant l'assistant d'importation.

    Il y a des constantes et d'autres bibittes à organiser et je n'ai pas envie de chercher.


    Ou bien tu continues avec ton importation actuelle et tu itères de A1 à Aquelque chose.

    Tu prends la fonction Split() pour séparer ton texte en valeurs uniques.

    Tu itères le tableau que te donne Split() pour mettre une valeur par cellule sur la même ligne.

Discussions similaires

  1. Macro Word depuis Excel avec tableau comme argument
    Par emorejbleu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2013, 14h45
  2. [WD-2007] macro dans un tableau word
    Par lovely2604 dans le forum VBA Word
    Réponses: 15
    Dernier message: 17/05/2013, 10h26
  3. macro word supprimant tableau
    Par yannick113 dans le forum VBA Word
    Réponses: 7
    Dernier message: 01/06/2010, 22h19
  4. Récupération de cellules Excel dans une macro Word
    Par J-yvesR dans le forum VBA Word
    Réponses: 3
    Dernier message: 30/06/2009, 19h43
  5. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo