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 :

Ouvrir un fichier csv dans excel


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Ouvrir un fichier csv dans excel
    Bonjour a tous,

    Je débute en vbs et j'aimerais ouvrir un fichier de donnée en csv dans excel, faire quelques modifications, puis l'enregistrer au format xls.
    J'utilise la fonction OpenText, pour avoir l'équivalent de "Fichier > Ouvrir", et non pas d'un double clic sur mon fichier csv, ce qui se passe avec la fonction Open.

    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
    Const EXCEL_GUID = "Excel.Application"
    Const MSXML_GUID = "MSXML.DOMDocument"
     
    ' Méthodes
    Sub Main()
    ' Excel objects
    Dim xls
    Dim wkb
    Dim sht
     
    Set Infilename="C:\base\exploitation\interfaces\in\stats.csv"
    Set Outfilename = "C:\base\exploitation\interfaces\out\stats_batchs_ " & year(date) & month(date) & day(date) & ".xls"
    ' Création d'une instance d'Excel
    Set xls = CreateObject(EXCEL_GUID)
     
    xls.DisplayAlerts = FALSE
     
    xls.Workbooks.OpenText Filename:=Infilename , DataType:=xlDelimited, Semicolon:=True
    Et j'ai une erreur "Expected Statement" Line 55, char 33, ce qui correspond a l'affectation de Filename.
    Comment ouvrir mon fichier de donnée de manière a avoir chaque champ dans une colonne, sachant que les champs sont séparé par des ';' ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Comment ouvrir mon fichier de donnée de manière a avoir chaque champ dans une colonne, sachant que les champs sont séparé par des ';' ?
    Si je ne me trompe pas, lorsque tu ouvres un tel fichier avec excel, il te le mets en forme automatiquement de cette manière.

    ce que tu as écris n'est aps valide en vbs. Regarde sur le site MSDN, pour les dévellopements office, dans la partie excel comment fonctionne la méthode OpenText de l'objet worksbooks.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Points : 212
    Points
    212
    Par défaut
    ou sinon tu l'ouvres en opentextfile, tu le split sur le caractère ";", tu ouvre une feuille excel vierge, et tu la remplis avec le tableau issu de ton split.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par spantemonium Voir le message
    ou sinon tu l'ouvres en opentextfile, tu le split sur le caractère ";", tu ouvre une feuille excel vierge, et tu la remplis avec le tableau issu de ton split.
    C'est que je voulais faire aussi, mais sans succès

    Je vais regarder un peu le site de msdn, merci

  5. #5
    Membre actif
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Points : 212
    Points
    212
    Par défaut
    Essaie cà :

    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
    FichierSource = "c:\log.txt" 'c'est un exemple à remplacer par ton fichier
    Const ForReading = 1
    Set objExcel = CreateObject("Excel.Application")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Verif fichier source
    If objFSO.FileExists(Fichiersource) Then
    	Set objTextFile = objFSO.OpenTextFile(Fichiersource, ForReading)
    Else
    	Wscript.Echo "Fichier : """ & Fichiersource & """ introuvable, tâche annulée"
    	Wscript.quit
    End If
    'Remplit Dictionnaire de données (empeche les doublons)
    Do Until objTextFile.AtEndOfStream 
        strNextLine = objTextFile.Readline
        objDictionary.Add strNextLine, strNextLine
    Loop
    objTextFile.Close
    'Ouverture excel
    objExcel.Visible = True
    objExcel.Workbooks.Add()
     
    'Remplissage excel
    ligne = 1
    colonne = 1
    For Each strKey in objDictionary.Keys
    ligne = 1
    colonne = colonne +1
    arrList1 = Split(objDictionary.item(strKey) , ";")
    objExcel.Cells(ligne , colonne ).Value = arrList1(0)
    colonne = colonne +1
    objExcel.Cells(ligne , colonne ).Value = arrList1(1)
    colonne = colonne +1
    objExcel.Cells(ligne , colonne ).Value = arrList1(2)
    'après ca dépend combien de champs il y a, dans cet exemple il y en a 3
    Next
    enjoy^^

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Pour l'ouvrir en opentextfile grâce à l'objet FileSystemObject, tu peux aussi t'inspirer des exemples de La FAQ VBScript.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

Discussions similaires

  1. Ouvrir un fichier csv dans Open Office par un programme VB6
    Par vincentc17 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/04/2015, 12h26
  2. Réponses: 8
    Dernier message: 28/10/2014, 16h14
  3. [XL-2010] Conversion d'un fichier csv dans excel 2010
    Par Yvette dans le forum Excel
    Réponses: 5
    Dernier message: 10/02/2014, 15h36
  4. Ouvrir un fichier csv dans excel via access
    Par NELAIN dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/02/2009, 15h15
  5. Réponses: 28
    Dernier message: 22/05/2006, 16h25

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