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 :

Lire un fichier CSV ou XLS de la même manière


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut Lire un fichier CSV ou XLS de la même manière
    J'ai fait une longue macro qui lit en entrée un fichier Excel et qui en traite les champs.

    L'ouverture ressemblait à quelque chose du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set classeurSource = Workbooks.Open(ThisWorkbook.Sheets(1).Cells(2, "C"))
    (Le nom de mon fichier étant contenu dans la cellule pointée)

    Après dans mon code, je fais ce genre de choses:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tamponString = classeurSource.Sheets(1).Cells(i, j)
    Là où le bat blesse c'est que maintenant il faut que mon programme marche aussi pour des fichiers CSV avec séparateur ;

    J'ai donc cherché sur les forums et sur les tuto, et je pensais avoir trouvé la solution, mais en fait ça ne marche pas top. Dans un premier temps je vérifie l'extension de mon fichier et si c'est CSV, à ce moment là, je traite le fichier avec une ligne vue sur le forum...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim FSO
     
      'Ouverture du gestionnaire de fichiers
      Set FSO = CreateObject("Scripting.FileSystemObject")
     
      'Ouverture du classeur qui contient les données en entrée
      If (FSO.GetExtensionName(ThisWorkbook.Sheets(1).Cells(2, "C")) = "csv") Then
        Set classeurSource = Workbooks.OpenText((ThisWorkbook.Sheets(1).Cells(2, "C")), xlWindows, 2, xlDelimited, xlDoubleQuote, False, False, True, False, False, False, Array(1, 1), True)
      Else
        Set classeurSource = Workbooks.Open(ThisWorkbook.Sheets(1).Cells(2, "C"))
      End If
    Il me dit: Fonction ou Variable non attendue sur OpenText

    J'avais essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set classeurSource = Workbooks.OpenText Filename:=(ThisWorkbook.Sheets(1).Cells(2, "C")), Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    Mais là il me dit erreur de syntaxe...

    Une idée?

  2. #2
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Bon j'ai résolu mon problème, c'est dû à l'extension CSV qu'il traite comme ayant un séparateur , (alors qu'il l'enregistre lui même avec ; )

    Ah... Microsoft...

    Au moins c'est réglé.

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

Discussions similaires

  1. Ouvrir et lire un fichier .csv
    Par Art19 dans le forum Composants VCL
    Réponses: 20
    Dernier message: 12/08/2007, 23h18
  2. conversion d'un fichier csv en xls
    Par yandoka dans le forum Langage
    Réponses: 11
    Dernier message: 23/07/2007, 16h37
  3. Réponses: 12
    Dernier message: 12/04/2006, 10h20
  4. Enregistrer un fichier ".CSV" en ".XLS"
    Par Isa31 dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/03/2006, 14h05
  5. Lire un fichier CSV/XLS
    Par Doneve dans le forum ASP
    Réponses: 3
    Dernier message: 04/10/2005, 17h34

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