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

VBA Word Discussion :

VBA : récupérer certaines données d'un fichier CSV depuis Word


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 19
    Points
    19
    Par défaut VBA : récupérer certaines données d'un fichier CSV depuis Word
    Bonjour

    J’ai besoin de votre aide pour travail sur un fichier CSV. Je n’arrive pas a naviguer en VBA depuis Word dans un fichier CSV pour remplir un tableau.

    Actuellement j’ai un bout de code en VBA qui me permet depuis Word de remplir un tableau (qui se situe sous word) avec des données issues d’un fichier XLS.

    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
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Workbooks.Open CheminDossier & "MonFichier.xls"
    objExcel.Visible = False
    i = 2
    Indice = 1
            While objExcel.Sheets("Planning").Cells(i, 1).Value <> ""
            'tant que la ligne n'est pas vide (dans fichier xls), rempli le tableau
                ActiveDocument.Tables(1).Cell(Indice, 1).Range.Text = objExcel.Sheets("Planning").Cells(i, 1)
                ActiveDocument.Tables(1).Cell(Indice, 2).Range.Text = objExcel.Sheets("Planning").Cells(i, 4)
                ActiveDocument.Tables(1).Cell(Indice, 3).Range.Text = objExcel.Sheets("Planning").Cells(i, 3)
                ActiveDocument.Tables(1).Rows.Add
                 Indice = Indice + 1
                i = i + 1
            Wend
    objExcel.Workbooks.Close
    Set objExcel = Nothing
    Ce bout de code fonctionne bien pour un fichier Excel.

    Je souhaiterais faire la même chose mais en partant d’un fichier CSV. Or je ne sais pas comment faire. Avez-vous svp, des piste a me donner ou des conseils pour m’aider a réaliser ce bout de programme.

    Merci par avance

  2. #2
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je ne suis pas trop sûr de comprendre le problème. En principe, une fois qu'Excel a ouvert un fichier, il devient un banal classeur Excel. Sauf erreur de ma part, tu peux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     objExcel.Workbooks.Open CheminDossier & "MonFichier.csv"
    ou, au pire, si tu enregistres une macro Excel en ouvrant un fichier csv, tu devrais avoir les paramètres nécessaires pour adapter ta macro.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    j'avais déjà testé en gérant le fichier comme un fichier excel en utilisant la même ligne de code.

    Le problème c'est qu'il me renvoie toutes les données de ma ligne sans prendre en considération les ";"

    ex

    donnée1; donnée 2; donnée 3; donnée 4;

    Dans ma 1ere macro, je récupère les données 1, 4, 3 quand j'utilise objExcel.Workbooks.Open CheminDossier & "MonFichier.csv", il récupère toute la ligne.

    Je ne trouve pas le code pour lui dire de ne prendre que les données que je souhaite

    J'espère que j'ai été plus claire sur mon probleme.

    En tout cas merci de ta réponse

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut



    Bonjour,

    dans Excel, j'ai sous le coude au moins cinq méthodes pour lire un fichier texte sans compter les dérivées !
    Pour lire un fichier texte dans Word, Excel est inutile car le VB pur peut déjà s'en acquitter et ce, de différentes manières …

    Afin de choisir celle convenant le mieux à la problématique, joindre un fichier texte source et un document .docx résultat.


    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  5. #5
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    merci de ton aide.

    J'ai un soucis pour joindre mon fichier.

    Voici un exemple de fichier source

    Site 1;Adresse/Site1/;OK;7
    Site 2;Adresse/Site2/;Dispo;2
    Site 3;Adresse/Site3/;Dispo;2
    Site 4;Adresse/Site4/;KO;2
    Site 5;Adresse/Site5/;Erreur;7
    Site 6;Adresse/Site6/;KO;7
    Site 7;Adresse/Site7/;Dispo;7
    le nom de mon fichier est "Fichier Source.csv"

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Sans fichier texte source ni document Word, je m'en tiens au B-A-BA du VBA avec un code exemple de lecture d'un fichier texte

    repris à partir de l'aide VBA de l'instruction Line Input et affichant l'extraction désirée dans la fenêtre Exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Demo()
               CSV$ = "D:\Tests4Noobs\Fichier Source.csv"
        If Dir(CSV) = "" Then Beep: Exit Sub
                FF% = FreeFile
        Open CSV For Input As #FF
     
        Do While Not EOF(FF)
             Line Input #FF, T$
             SP = Split(T, ";")
             If UBound(SP) > 2 Then Debug.Print SP(0), SP(3), SP(2)
        Loop
     
        Close #FF
    End Sub
    La fonction Split renvoie un tableau dont l'indice du premier élément est le zéro …

    Bonne continuation !

    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Si déboguer est l’art de corriger les bogues, alors programmer est l’art d’en faire !

  7. #7
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup.
    Ta solution me convient très bien
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer une donnée d'un fichier CSV
    Par bremer dans le forum Débuter
    Réponses: 4
    Dernier message: 28/01/2014, 15h37
  2. Réponses: 5
    Dernier message: 11/07/2010, 14h07
  3. [XL-2007] Extraire que certaines données d'un fichier csv
    Par Fouinette85 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 06/05/2009, 23h37
  4. Réponses: 3
    Dernier message: 14/03/2007, 15h30
  5. Réponses: 12
    Dernier message: 21/02/2007, 09h44

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