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 :

Ouverture CSV par Workbooks.open


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Ouverture CSV par Workbooks.open
    Salut tous,


    Désolé de vous solliciter pour un pb aussi simple, mais j'avoue être à court d'idée. Je suis bloqué sur le point suivant :

    - J'ouvre un .csv par un "dblclick", il s'affiche bien comme il faut (colonnes bien formatées et le retour chariot est bien conservé dans les cellules)
    - Si je fais la mm chose par du code (Workbooks.Open *.csv), le seul caractère qui est interprété est le retour chariot et du coup, les lignes sont mal découpées et les séparateurs "," non interprétés. Il y a le mm pb en faisant une ouverture normale par le menu /Fichier/Ouvrir/*.csv ou par "drag and drop".


    Je pourrais m'amuser à reconstruire le fichier par la fonction TextToColumns ou fonction Conversion, mais ca me parait bien saoulant (surtt s'il y a des retours chariot) ! :)

    Y-a-t'il une solution ou est-ce un bug Excel 97 identifié?
    Merci d'avance,

    Cdlt,
    PoP

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Curieux ! Je n'ai qu'un petit pb avec cette commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Workbooks.Open FileName:= _
            "\\Pinea\finance\TELECOM\Extraction_2004_B6\001646384_TAGRCF.csv"
    Le pb mineur vient des points dans les nombres décimaux (vite remplacés dans toute la feuille)
    Ex des données texte dans le csv ouvert dans Word :

    001646384;200411;69134;9154576;11440.05;
    001646384;200412;68083;8918251;11811.05;

    Sinon, as-tu essayé de changer l'extension en txt (.?.) ?

    A+

  3. #3
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut Re: Ouverture CSV par Workbooks.open
    Citation Envoyé par PoPmiSiR
    Salut tous,


    Désolé de vous solliciter pour un pb aussi simple, mais j'avoue être à court d'idée. Je suis bloqué sur le point suivant :

    - J'ouvre un .csv par un "dblclick", il s'affiche bien comme il faut (colonnes bien formatées et le retour chariot est bien conservé dans les cellules)
    - Si je fais la mm chose par du code (Workbooks.Open *.csv), le seul caractère qui est interprété est le retour chariot et du coup, les lignes sont mal découpées et les séparateurs "," non interprétés. Il y a le mm pb en faisant une ouverture normale par le menu /Fichier/Ouvrir/*.csv ou par "drag and drop".


    Je pourrais m'amuser à reconstruire le fichier par la fonction TextToColumns ou fonction Conversion, mais ca me parait bien saoulant (surtt s'il y a des retours chariot) !

    Y-a-t'il une solution ou est-ce un bug Excel 97 identifié?
    Merci d'avance,

    Cdlt,
    PoP


    La réponse y est car on a traité ce problème récemment

    Théo

  4. #4
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Je suis désolé mais je ne retrouve pas le post que j'ai fait à ce propos ....

    Alors pour travailler les csv et les mettre dans Excel avec VBA.

    J'ai eu le même problème avec mes fichiers csv... ouverture normale et mise en forme automatique avec Excel et aucune mise en forme avec le code...

    1ère solution :

    utiliser la fonction Split pour chaque ligne que tu lis dans ton fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim monTab
    Dim maChaine as String
     
    'tu ouvres ton fichier csv comme un fichier texte
    'tu lis une ligne
    maChaine = fichier.readline
    monTab = Split(maChaine,delimiter:=";") ' ";" pour le format français ou "," pour l'international
     
    For maColonne = 1 to UBound(monTab)
       Cells(maLigne,maColonne) = monTab(maColonne)
    Next maColonne
     
    ' Et tu boucles sur les lignes jusqu'à la fin du fichier
    Pour la 2nde, je ne me rappelle plus très bien

    Je la recherche ce soir et je la mets sur le forum

    @+

    Théo

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Ok, donc en gros, on est obligés de retraiter le texte. Pas moyen d'utiliser directement la fonctionnalité csv d'Excel, qui est sensé faire tout bien?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Comme je suis sur VBA 97, que tu es sur VBA 97, Thierry n'aura rien à me dire si je te demande si tu as essayé ave cette synaxe :

    "Workbooks.Open FileName:= TonFichier"

    Parce qu'il est curieux que je n'ai pas de pb pour ouvrir les csv, même si j'en ai avec les décimales... et que je fais comme ça depuis que je me suis aperçu que ta syntaxe... "elle marchait pas toujours"...
    ouskel'n'oradi :
    Dans le doute, j'essaie toujours...

    A+

  7. #7
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Salut,

    J'ai retrouvé la 2nde solution que j'ai utilisée par le passé.

    Voici le code
    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
    NomFichier = "File.csv"
     
        '.....
     
        Set xlApp = CreateObject("excel.application")
        xlApp.Visible = False
     
        Set xlBook = xlApp.Workbooks.Open(FileName:=RepCsv & NomFichier, Format:=2)
        Set xlSheet = xlBook.Worksheets(1)
     
        xlSheet.Range("A:A").TextToColumns DataType:=xlDelimited, Comma:=True, DecimalSeparator:=","
     
        xlApp.DisplayAlerts = False
     
        TestFexist = fs.FileExists(RepXls & receplace(NomFichier, ".csv", ".xls"))
     
        If TestFexist Then
            fs.DeleteFile RepGT1TrendExcel & receplace(NomFichier, ".csv", ".xls"), force:=True
        End If
     
        xlBook.SaveAs FileName:=RepGT1TrendExcel & receplace(NomFichier, ".csv", ".xls"), FileFormat:=xlNormal, CreateBackup:=False
     
        xlBook.Save
        xlApp.DisplayAlerts = True
     
        xlBook.Close SaveChanges:=False
        xlApp.Quit
        Set xlApp = Nothing
    Remarque : mon fichier csv avait pour délimiteur de colonne une virgule

    Ce code permet d'ouvrir en fenêtre cachée un fichier csv et de l'enregistrer au format xls (avec vérification d'existense et suppression de l'existant)

    Voilà

    Bonne continuation

    Théo

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    En fait, il a vraissemblablement deux cas:

    1/ le fichier CSV est séparé par des virgules
    Le double click l'ouvrira avec séparation correcte de colonne
    Via VBA avec cette procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TestCSV()
    Const FICHIER = "MonFichierVirgule.csv"
      Workbooks.Open Filename:="C:\Documents and Settings\Argyronet\Bureau\" & FICHIER
    End Sub
    Le fichier est incorrectement formaté

    2/ le fichier CSV est séparé par des points-virgule
    Le double click l'ouvrira avec séparation incorrecte de colonne
    Via VBA avec cette procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TestCSV()
    Const FICHIER = "MonFichierPointVirgule.csv"
      Workbooks.Open Filename:="C:\Documents and Settings\Argyronet\Bureau\" & FICHIER
    End Sub
    Le fichier est correctement formaté

    Conclusion
    Selon le cas, si l'on veut passer par VBA pour l'ouvrir, il faut préalablement nettoyer le fichier avec un TextStream par exemple...

    Argy

Discussions similaires

  1. [XL-2007] ouverture de csv par enregistreur macro
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2011, 21h13
  2. ouverture d'un csv par macro
    Par giom182 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/07/2009, 20h26
  3. Ouverture CSV par Ole Excel
    Par bandit boy dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/04/2007, 08h54
  4. [Macro] ouverture d'un fichier csv par macro différent du double-clic
    Par Caro-Line dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/04/2007, 16h36
  5. [VBA-E] Workbooks.open sur .csv regroupe tout sur 1 colonne
    Par Yeti75_fr dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/03/2007, 11h36

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