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

Contribuez Discussion :

[VBA-E]Ouvrir un fichier .csv ou un fichier .txt séparateur ";" ou ","


Sujet :

Contribuez

  1. #1
    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 543
    Points
    15 543
    Par défaut [VBA-E]Ouvrir un fichier .csv ou un fichier .txt séparateur ";" ou ","
    Ouverture d'un fichier.txt avec séparateur ";"
    Excel 97 et 2003
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Workbooks.OpenText Filename:="D:\xls\Fichier.txt", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    Ouverture d'un fichier.csv avec séparateur ";"
    Excel 97 (version française) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Workbooks.Open FileName:="D:\xls\Fichier.csv"
    Excel 2003 : Le fichier.csv doit s'ouvrir en tant que fichier texte.
    (La conversion n'est pas indispensable)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Name "D:\xls\Fichier.csv" As "D:\xls\Fichier.txt"
        Workbooks.OpenText Filename:="D:\xls\Fichier.txt", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True
    Le code suivant ouvre un fichier texte (.txt ou .csv), avec le point (".") comme séparateur décimal et le point-virgule (";") comme séparateur de données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Workbooks.OpenText Filename:="D:\xls\Classeur1.csv", StartRow:=1, _
        DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter _
            :=False, Semicolon:=True, DecimalSeparator:="."
    Le code suivant ouvre un fichier texte (.csv ou .txt), le séparateur décimal paramétré dans le système, et la virgule (",") comme séparateur de données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Workbooks.OpenText Filename:="D:\xls\Fichier.csv", Origin:= _
            xlWindows, DataType:=xlDelimited, TextQualifier:=xlNone, _
            ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _
            , Space:=False, Other:=False
    L'aide en ligne précise l'utilisation des nombreux paramètres à la rubrique "OpenText, méthode"
    Tous les paramètres dont la valeur est la valeur par défaut sont inutiles.

  2. #2
    Futur Membre du Club
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette info, ce bug d'Excel m'a fait perdre une demi-journée.

    A signaler qu'Excel 2003 également ne sait pas traiter un fichier CSV avec comme délimiteur le point virgule si le fichier à importer n'a pas l’extension .TXT. Si on tente d'importer un fichier avec l’extension .CSV avec la méthode OpenText, le point virgule n'est pas utilisé comme délimiteur, mais uniquement la virgule simple (et pour donc?).
    En Excel 2003 je suis donc obliger d'utiliser la fonction Name pour renommer en .txt.

    Excel est bel et bien remplie de piège de ce genre. C'est fou comme cela peut être chronophage.

  3. #3
    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 677
    Points
    18 677
    Par défaut
    Comme indiqué dans plusieurs messages en utilisant la recherche dans la section Macros et VBA Excel par exemple,
    Excel version française, même en 2003, lit sans souci un fichier .csv délimité ; avec la virgule comme séparateur décimal …

    Premier test : double clic sur le fichier .csv depuis l'Explorateur Windows.

    Si le fichier est correctement importé (99,99% des cas),
    il est donc directement ouvrable en VBA via la méthode Open associée à un objet Workbooks en
    définissant son argument Local:=True, rien qu'en lisant l'aide de cette méthode !

    Effectivement, la méconnaissance d'un produit est chronophage …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut ouverture d'un csv en standard européen
    Chers amis de France et de Navarre et autres pays de la vieille Europe,

    Je me rends compte que Marc-L vient de donner la bonne bonne réponse cherchée depuis des mois! Bravo!
    En complément: elle fonctionne aussi bien en 2003 qu'en 2010!
    Et comme on dit chez moi, "En voor de Vlamingen, hetzelfde"!

    Un code complet pour l'exemple qui nous occupe est donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks.OpenText Filename:="D:\xls\Fichier.csv", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Local:=True, Semicolon:=True

  5. #5
    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 677
    Points
    18 677
    Par défaut
    Merci mais je n'y suis pour rien, d'autres l'ont déjà indiqué sur ce forum …

    Mais ayant donc vérifié qu'une seule commande suffit, depuis j'insiste ‼
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. [Toutes versions] Ventiler mon fichier .csv en plusieurs fichiers .csv
    Par X.e.N.o.N dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/07/2018, 05h11
  2. [VBA-E]Ouvrir un fichier.csv ou un fichier.txt séparateur ";"
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/05/2007, 12h09
  3. [VBA-E] Ouvrir un UserForm au lancement du fichier Excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2007, 14h37
  4. [VBA-E] Ouvrir un Userform à l'ouverture du fichier excel
    Par dimitrios dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/12/2006, 16h35
  5. Réponses: 12
    Dernier message: 07/12/2005, 18h42

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