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 :

Enregistrer un fichier xlsx en format csv ou txt sans guillemets [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Points : 81
    Points
    81
    Par défaut Enregistrer un fichier xlsx en format csv ou txt sans guillemets
    Bonjour,

    J'ai créé une macro qui génère dans une feuille Excel un fichier de type relevé bancaire CFONB 120
    Lorsque j'enregistre manuellement ce fichier en format XLCSV ou XLTXT, le résultat est correct : les lignes ne sont pas encadrées par des guillemets.
    En revanche, lorsque je passe par VBA, le résultat est erroné, car toutes les lignes sont alors encadrées par des guillemets, ce qui fausse le fichier qui n'est plus reconnu par le logiciel d'import du relevé.

    J'ai essayé le fileformat xltxtprint, mais dans ce cas, le programme supprime les espaces en fin de ligne, ce qui fausse également le fichier qui est de type fixe 120 caractères par ligne
    Je n'ai pas trouvé de solution sur internet, ni dans le forum

    Merci pour votre aide.

    François

    Code utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        Sheets("Fichier").Select
        Sheets("Fichier").Copy
        ChDir FDon.Range("G2")
     
        ActiveWorkbook.SaveAs Filename:=FDon.Range("G2") & "\" & FDon.Range("G3"), FileFormat:= _
            xlCurrentPlatformText, CreateBackup:=False
        ActiveWindow.Close False
        Sheets("Données").Select

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 653
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 653
    Points : 34 370
    Points
    34 370
    Par défaut
    Salut,

    l'enregistrement dans des formats plats est souvent source de soucis, car il est bien souvent question de configuration locale.

    Une des idées que j'explore la plupart du temps c'Est via l'enregistreur de macros, savoir si un paramètre m'aurait échappé.

    Si par les moyens standard tu n'arrives pas à tes fins, la solution que je ressors de temps en temps se déroule en 2 temps :
    - enregistrement au format que tu a réussi à obtenir sans que cela soit le bon
    - manipuler le fichier plat avec Input ou FileSystemObject pour travailler directement les caractères de séparation ou les caractères à modifier à la volée

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Points : 81
    Points
    81
    Par défaut
    Merci Jean Philippe André.

    J'ai testé tous les type de formats via l'enregistreur de macro.
    Ce que j'ai un peu de mal à comprendre, c'est le fait d'obtenir un fichier correct via la manipulation avec enregistrement de la macro, et lorsqu'on lance la macro issue de cette manip, le résultat obtenu est différent.

    Je vais explorer l'idée du fileSystemObject.

    Merci pour ton aide

    François

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    J'ai également constaté ce problème et en cherchant une solution je suis tombé sur ton sujet.

    Mon contexte : 1 feuille excel contenant 1 colonne A avec XXX lignes à enregistrer au format txt dans un répertoire précis.

    Une solution qui fonctionne dans mon cas :
    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
    Sub Enregistrement_texte()
    Dim a As Integer, i As Integer
    Dim Tableau As Variant
    Dim fs As New FileSystemObject
    Dim File As TextStream
    Set fs = CreateObject("Scripting.FileSystemObject")
     
    'Etape 1 : Création d'un nouveau fichier texte vierge dans un répertoire existant
    Set File = fs.CreateTextFile("C:\Dossier\Fichier.txt")
     
    'Etape 2 : Mémorise les données à intégrer dans une variable tableau
    With ThisWorkbook.Sheets("Feuil1")
        a = .Range("A" & Rows.Count).End(xlUp).Row
        Tableau = .Range("A1:A" & a)
    End With
     
    'Etape 3 : Ajoute les données ligne par ligne, via une boucle, dans le fichier texte précédemment créé
    For i = 1 To UBound(Tableau)
        File.WriteLine (Tableau(i, 1))
    Next i
     
    Erase Tableau
    File.Close
    End Sub
    Il faut également ajouter Microsoft Scripting Runtime dans les Références de ton projet VB pour que FileSystemObject soit pris en charge.

    N'hésites pas si tu as besoin d'aide pour adapter cette solution à ton contexte.
    En espérant que ça puisse t'aider.

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

Discussions similaires

  1. Coversion d'un fichier xls en format csv
    Par yac dans le forum SQL
    Réponses: 6
    Dernier message: 08/10/2007, 09h51
  2. Convertir un fichier texte du format csv au format hws
    Par slayer23 dans le forum MATLAB
    Réponses: 8
    Dernier message: 14/06/2007, 17h48
  3. création de fichier sous le format CSV
    Par nguex dans le forum Windows
    Réponses: 1
    Dernier message: 20/04/2007, 20h36
  4. Réponses: 1
    Dernier message: 03/04/2007, 18h31

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