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 :

Macro conversion colonne fichier CSV


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut Macro conversion colonne fichier CSV
    bonjour,

    je rencontre un problème au niveau de la fonction convertir d'excel sur un fichier csv.

    on part du principe que le fichier csv (pièce jointe) est ouvert et que la macro suivante est lancée à partir d'un autre fichier contenant toutes mes différentes macros.

    De base la 1ère colomne contient toutes les informations avec comme séparteur la virgule et donc ma macro doit répartir chacune des informations séparemment dans les colonnes correspondantes.

    Sauf que rien ne s'est passé une fois que la macro a "fait" son travail et que l'on réouvre le fichier.

    Pourriez-vous m'aider ? svp
    merci

    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
    Sub Conversion_Column()
     
    Application.DisplayAlerts = False
     
    Columns(1).Select
    Selection.TextToColumns Destination:=Cells(1, 1), DataType:=xlDelimited, _
    TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
     
    chemin = "\\serveur\test\"
     
        ActiveWorkbook.SaveAs Filename:= _
                chemin & "\ligne 19.csv", _
              FileFormat:=xlCSV, CreateBackup:=False, Local:=False
              DoEvents
        ActiveWorkbook.Save
     
        ActiveWorkbook.Close savechanges:=False
     
     Application.DisplayAlerts = True
     
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Je n'ai pas compris le but de ta macro. Tu ouvres un fichier csv et tu l'enregistres au format csv ? C'est pour changer le séparateur ? En tout cas, ma macro fonctionne ici. Je joins le fichier obtenu.
    Fichiers attachés Fichiers attachés
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    merci

    une macro ouvre un fichier excel vierge et alimente ce fichier avec les informations et les disposent tel qu'elles apparaissent dans ton fichier résultat.
    Cetta macro enregistre enfin ce nouveau fichier .xls ouvert et alimenté en un fichier .csv via ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    chemin = "\\serveur\test\"
     
        ActiveWorkbook.SaveAs Filename:= _
                chemin & "\ligne19.csv", _
              FileFormat:=xlCSV, CreateBackup:=False, Local:=False
              DoEvents
        ActiveWorkbook.Save
     
        ActiveWorkbook.Close savechanges:=True
    Lorsque j' ouvre par la suite ce fichier .csv généré il a perdu son formatage et je retrouve toutes les informations qui était avant dans les différentes colonnes uniquement dans la 1ère colonne avec le séparteur virgule.

    Je voudrais donc récupérer le bon formatage de ce fichier .csv mais ma macro ne donne pas le résultat escompté.

    Par contre je ne vois pas dans ton fichier résultat de macro ou bien est-ce ma macro qui fonctionne avec toi !?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Par contre je ne vois pas dans ton fichier résultat de macro ou bien est-ce ma macro qui fonctionne avec toi !?
    Tu ne peux pas avoir de macro dans un fichier csv. Le fichier a été généré avec ta macro. Sauf que je n'ai pas utilisé la partie enregistrement. Je l'ai fait manuellement. Fais l'opération manuellement et vois s'il y a une différence.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    ok bien compris mais lorsque j'ouvre à nouveau ce fichier csv et que tout est concaténé dans la 1ère colonne séparé par des virgules et que je convertit manuellement cette colonne puis j'enregistre à nouveau le fichier en csv manuellement...le fichier conserve son nouveau format avec des données dans chacunes des colonnes.

    donc manuellement ok ça marche
    alors pourquoi par code vba ça ne marcherait pas !?

    Via mon fichier perso.xls où sont stockées mes macros j'appelle ce fichier csv, j'y applique la conversion de la colonne et je réenregistre ce fichier dans son format orginel .csv

    en le faisant pas à pas avec la touche F8 on voit bien le fichier se formater correctement, s'enregistrer et se fermer.
    et pourtant en réouvrant le fichier tout est concaténé à nouveau dans la 1ère colonne.

    ok c'est un fichier csv mais pourquoi cette macro ne pourrait pas faire ce qu'il est possible de faire manuellement ?

    merci
    bonne soirée

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Parce que, par défaut, VBA enregistre avec le séparateur US, la virgule alors que dans les options régionales de Windows, le séparateur doit être le ";". Mets le paramètre "local:=True" dans la méthode "SaveAs".
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

Discussions similaires

  1. Extraction colonnes fichier csv
    Par fpfpf dans le forum Général Python
    Réponses: 6
    Dernier message: 11/05/2015, 11h19
  2. Macro Conversion fichier excel en .csv
    Par Tomz57 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 16/04/2015, 10h46
  3. [VBA-E] macro conversion excel vers csv
    Par abdelhamidem dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2008, 16h48
  4. conversion de fichier Excel en csv ,
    Par bounette dans le forum Excel
    Réponses: 2
    Dernier message: 26/01/2005, 08h42
  5. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23

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