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

VBScript Discussion :

Lire des fichiers csv directement dans Excel


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 37
    Points : 10
    Points
    10
    Par défaut Lire des fichiers csv directement dans Excel
    Bonjour,

    Je connais un peu le VBScript mais pas contre je ne connais pas bien son intégration avec l'Objet Excel.

    Je cherche à lire dans un même répertoire plusieurs fichiers texte (type CSV) donc préformaté avec le "point virgule" pour les mettre directement dans un seul fichier excel. Chaque fichier csv sera dans une feuille différente portant par exemple le nom du fichier.

    J'ai bien regardé dans ce forum et aussi sur Internet et je n'ai pas trouvé certaines réponses.

    L'idée du programme est de faire une boucle sur le répertoire contenant les fichiers puis les lire un par un en les intégrant directement dans le même Worbook sur des feuilles différentes. (sans lire les fichiers ligne à ligne)

    Je sais facilement lire les fichiers d'un répertoire , exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    stRep = "C:\Temp"
    If oFSO.FolderExists(stRep) Then
     For each oFl in  oFSO.GetFolder(stRep).Files
       Wscript.Echo oFl.Name	
     Next
    Mes questions :

    ) Comment lit on directement dans Excel un fichier texte pré formaté.(CSV)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set oXL = createobject("Excel.Application")
      oXL.Workbooks.Opentext "D:\Donnees\log.csv
    quels paramètres à rajouter ( XLDélimiter ou autre...) (Open ou OpenText)
    Dans l'exemple tout est dans la première colonne avec les ";"?

    ) Comment met on les données de différents fichiers "directement" dans le même Workbook mais dans des feuilles différentes.

    Merci de vos réponses.

    Thierry.

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    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
     
                cible = "c:\fichier.txt"
                Set sht = wbk.Worksheets.Add
     
                With sht.QueryTables.Add(Connection:="TEXT;" & cible, Destination:=sht.Range("A1"))
                    .Name = cible
                    .FieldNames = True
                    .RowNumbers = False
                    .FillAdjacentFormulas = False
                    .PreserveFormatting = True
                    .RefreshOnFileOpen = False
                    .RefreshStyle = xlInsertDeleteCells
                    .SavePassword = False
                    .SaveData = True
                    .AdjustColumnWidth = True
                    .RefreshPeriod = 0
                    .TextFilePromptOnRefresh = False
                    .TextFilePlatform = 1252
                    .TextFileStartRow = 1
                    .TextFileParseType = xlDelimited
                    .TextFileTextQualifier = xlTextQualifierDoubleQuote
                    .TextFileConsecutiveDelimiter = False
                    .TextFileTabDelimiter = False
                    .TextFileSemicolonDelimiter = True
                    .TextFileCommaDelimiter = False
                    .TextFileSpaceDelimiter = False
                    .TextFileColumnDataTypes = Array(1, 2, 2, 4, 1, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, _
                     2, 2, 2, 4, 2, 2, 2, 2, 2, 4, 2, 2, 2, 4, 4, 2, 2, 1, 1, 1, 2, 2, 4, 2, 9)
                    .TextFileTrailingMinusNumbers = True
                    .Refresh BackgroundQuery:=False
                End With

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 37
    Points : 10
    Points
    10
    Par défaut Pas tout compris.
    Bonjour pc75

    Je crois comprendre que ton code explique l'intégration d'un fichier teste dans un Workbook, ça à l'air bien complqué...
    En plus j'ai l'impression que c'est du VBA. Je cherche en VBScript.

    N'y aurait-il pas une commande plus facile du style :
    xlapp.Workbooks.Opentext("c:\" & i & ".csv",,,,,,,) avec des paramètres
    ou
    xlapp.Workbooks.Open("c:\" & i & ".csv",,,,,,,,)avec des paramètres.

    Merci,
    Thierry.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    pour ce qui est de l'aide sur les fonctions et leur paramétres il suffit d'utiliser la touche dans l'èditeur VBA d'excel ... Ces fonctions font parties des objets excel... et sont les mêmes en VBS ou VBA.,

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 37
    Points : 10
    Points
    10
    Par défaut VBS / EXCEL
    Bonjour Bbil,
    Je vais regardé plus en détail l'aide dans le VBA.
    Par contre je ne trouve pas d'exemple de mise en forme de fichier texte directement dans Excel.

    J'ai des exemples VBScript avec lecture de fichier texte ligne par ligne qu'on met dans un Workbook cellule par cellule à travers un "spilt" sur le séparateur.

    Par contre aucun exemple de VBScript avec lecture et ajout "directement" dans Excel. (Je dis bien directement)

    Comme on le fait avec Excel en interactif on l'ouvre puis on fait onglet "fichier" et ouvrir et on choisi le format de fichier (*.txt, *.csv...) et cela remplit directement les les lignes et surtout les cellules correctement.

    Je pense que dans le VBScript il faut une commande du type :
    XLL.workbooks.open("c:\dummy.csv",par1,par2,par3,...)
    Open ou OpenText ? et surtout quels sont les paramètres par1,par2... ?

    Merci et bonne journée,
    Thierry.

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Citation Envoyé par thierryppp Voir le message
    Comme on le fait avec Excel en interactif on l'ouvre puis on fait onglet "fichier" et ouvrir et on choisi le format de fichier (*.txt, *.csv...) et cela remplit directement les les lignes et surtout les cellules correctement.
    Tu fais ça sous Excel, mais auparavant tu lances l'enregistreur de macros et tu regardes le code généré.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 37
    Points : 10
    Points
    10
    Par défaut Réponse...
    Pc75 merci pour ta réponse.
    Mais je ne sais pas traduire du VBA en VBS.
    Vioci l'enregistrement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ' Macro1 Macro
    ' Macro enregistrée le 17/09/2011 par Compaq_Propriétaire
     
    '
        Workbooks.OpenText Filename:= _
            "C:\Documents and Settings\Compaq_Propriétaire\Mes documents\A lire !.txt", _
            Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
    End Sub
    Il me faut la syntaxe VBS du type Workbooks.OpenText(,,,,,,,,)
    Quels sont les paramètres à passer et surtout la valeur des constantes Xl ...

    Merci,
    Thierry.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/07/2012, 12h11
  2. Réponses: 0
    Dernier message: 28/12/2011, 10h50
  3. Réponses: 9
    Dernier message: 21/04/2011, 10h32
  4. Réponses: 3
    Dernier message: 05/08/2009, 11h45
  5. Réponses: 5
    Dernier message: 21/02/2007, 17h12

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