Peut on exporter des données Excel vers un fichier .csv

TraderAS Messages postés 119 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai des données sur un fichier Excel que je souhaite exporter (automatiquement-via une macro) vers des fichiers .csv
je n'ai pas pu trouver une solution

merci

17 réponses

  1. TraderAS Messages postés 119 Statut Membre 1
     
    Salut f894009

    j'ai un tableau sur excel et je veux faire un copier de chaque ligne et le coller dans un fichier .csv qui lui correspond

    le problème c que j'ai fai une macro mais ca n'a pas marché

    Trader
    0
  2. TraderAS Messages postés 119 Statut Membre 1
     
    Re
    merci pour le lien mais en faite ce code correspond à transformer les séparateurs "," en ";" or mon problème consiste à copier une ligne (à partir d'un fichier .xlsm) et la coller dans un fichier .csv avec comme séparateurs bien sur ";"

    le problème c pas dans le faite que j'obtiens des séparateurs "," mais qu'il m'endommage la dernière colonne genre tous les chiffre comme 785413 il les transforment en 78,,,,,

    en faite j'ai crée ce code mais le fichier :

    Sub Macro3()

    Application.ScreenUpdating = False
    Rep = "C:\Users\toshiba\Desktop\Others\"
    FichD = ActiveWorkbook.Name
    FichTest = "TestExcel.csv"

    Workbooks.OpenText Filename:="C:\Users\toshiba\Desktop\Others\TestExcel.csv", StartRow:=1, _
    DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter _
    :=False, Semicolon:=True, DecimalSeparator:="."

    Workbooks.Open Rep & FichTest
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

    With Workbooks(FichD)
    .Sheets("TestExcel").Range("A1:F1").Copy
    Workbooks(FichTest).Sheets("TestExcel").Range("A1:G1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Range("A1:F1").Select
    Selection.Copy
    Range("A1:F1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Range("A2:F2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("A1:F1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    ActiveWorkbook.Save
    ActiveWindow.Close

    End With
    End Sub
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    merci pour le lien mais en faite ce code correspond à transformer les séparateurs "," en ";" Non, il permet de creer un fichier format csv separateur ;. Il se peut que vous ne connaissiez pas la base des creations de fichier .txt ou .dat ou .csv en programmation pure.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. TraderAS Messages postés 119 Statut Membre 1
     
    oui je suis entrain d'apprendre, mais est ce qu'il y'a une solution à ce problème ?
    0
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Apres quelquessssssss essais avec excel uniquement

    Sub Macro5()
        Application.DisplayAlerts = False
        Workbooks.Open Filename:="D:\_cles\TestExcel.csv", local:=True
        Windows("test.xlsm").Activate
        Range("A1:F5").Select
        Selection.Copy
        Windows("TestExcel.csv").Activate
        Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveWorkbook.Save
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    End Sub


    ouvre fichier csv comme un fichier xls(x) (local:=true)
    copie/coller des cellules
    sauve et ferme csv, fichier xlsm
    ferme xlsm

    Petits details: si vous ouvrez le csv, les donnees sont dans une cellule par ligne, separees par une virgule---->c'est tout a fait normal. En effet, pour une raison qui lui appartient, excel fait une difference entre un fichier xls(x) enregistre manuellement en csv et la meme chose avec une macro, mais ceci n'est qu'un affichage. Comme je ne sais pas ce que vous voulez faire de ce fichier csv, est-ce important l'affichage avec une donnee par cellule??????

    A+
    0
  7. TraderAS Messages postés 119 Statut Membre 1
     
    re

    je vais simplifier le problème

    mon problème consiste a faire un copier coller d'un fichier excel vers un fichier .csv
    je veux copier un tableau qui existe dans le fichier Daily-backup.xlsm et le coller dans un fichier qui s'appelle Test.csv

    pour être plus clair et plus précis voici les liens aux deux docuements:

    j'ai intégré votre macro avec des modifications pour être plus rapide

    le fichier test.csv :https://www.cjoint.com/c/CCykeMG4sGO
    le fichier source.xlsm: https://www.cjoint.com/c/CCykp4fg9D1 (la macro qui correspond d'appelle copiercoller Test, juste il faut modifier la path du fichier)

    vous pouvez tester directement
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    fichier xlsm et csv

    https://www.cjoint.com/c/CCykUSx0bkB

    vous n'avez pas repondu a la question:

    Comme je ne sais pas ce que vous voulez faire de ce fichier csv, est-ce important l'affichage avec une donnee par cellule??????

    A+
    0
  9. bg62 Messages postés 23433 Date d'inscription   Statut Modérateur Dernière intervention   2 436
     
    pourquoi une 'macro' .... ???
    il suffit de Sélectionner l'option lors de l'enregistrement , non ;)
    0
  10. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour bg62,

    TraderAS demande une macro pour enregistrer une plage de cellule dans un fichier csv en automatique, donc macro.

    A+
    0
  11. TraderAS Messages postés 119 Statut Membre 1
     
    Salut f894009

    oui c'est trés important le séparateur ";" car il y'a une application qui va saisir les données sous forme de fichiers .csv avec séparateurs ";" et donc je dois avoir ce genre de séparateur ;)
    0
  12. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Methode a l'ancienne,mais 100% fiable

    Sub ExportCSV()

    Dim LigneCSV As String
    Dim PlageCSV As Range
    Dim Ligne As Integer, Colonne As Integer, Nb_Ligne As Integer, Nb_Colonne As Integer

    'Fermeture ficher si ouvert
    Close

    'Plage CSV
    Set PlageCSV = Worksheets("test").Range("A1:F5")

    'Ouverture du fichier de sortie
    Open "D:\_cles\testexcel.csv" For Output As #1

    'Butees de comptage
    Nb_Ligne = PlageCSV.Rows.Count
    Nb_Colonne = PlageCSV.Columns.Count

    'Boucle sur la plage et ajoute les lignes au fichier
    For Ligne = 1 To Nb_Ligne
    For Colonne = 1 To Nb_Colonne
    If LigneCSV <> "" Then
    LigneCSV = LigneCSV & ";"
    End If
    'construction ligne
    LigneCSV = LigneCSV & PlageCSV.Cells(Ligne, Colonne).Value
    Next Colonne
    'Enregistrement ligne
    Print #1, LigneCSV
    LigneCSV = ""
    Next Ligne

    'Fermeture du fichier
    Close #1

    End Sub

    A+
    0
  13. TraderAS Messages postés 119 Statut Membre 1
     
    Bonjour f894009 et merci pour votre précieuse aide

    en faite j'ai appliqué votre dernier code mais je trouve un problème au niveau de la ligne Nb_Ligne = PlageCSV.Rows.Count qui s'affiche en jaune .

    mais bon puisque j'ai posé cette question sur plusieurs tutorials, voici une nouvelle idée, car je crois que le problème est d'envergure

    voici la nouvelle proposition et voire si vous pouvez m'aider:

    je dois avoir une fonctionnalité qui me permet d'écraser les fichiers (.csv) anciens (j-1) qui existent dans un même dossier et transformer chaque chaque fichier (presque 50) fichier .xls en fichier .csv avec séparateur ";", ceci à travers une macro qui contient tout ca, c'est possible ?

    Trader
    0
  14. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Nb_Ligne = PlageCSV.Rows.Count qui s'affiche en jaune . Pas chez moi!!

    en faite j'ai appliqué votre dernier code mais je trouve un problème recopie en entier (avec adaptation des noms), partiellement! ???????

    je dois avoir une fonctionnalité qui me permet d'écraser les fichiers (.csv) anciens (j-1) qui existent dans un même dossier et transformer chaque chaque fichier (presque 50) fichier .xls en fichier .csv avec séparateur ";", ceci à travers une macro qui contient tout ca, c'est possible ? Comprends pas tout !!!

    A+
    0
  15. TraderAS Messages postés 119 Statut Membre 1
     
    Re

    d'après ce que j'ai lu le problème de copier coller une nouvelle ligne d'un fichier excel dans un fichier csv est trés compliquée, car d'après ce que j'ai lu sur un autre forum, un fichiers .txt et .csv correspond à une feuille entière ET unique.

    donc je me suis dis pourquoi pas aller dans une autre logique, c'est à dire aller insérer les lignes dans des fichiers distincts .xls puis les modifier en csv

    une autre façon de voire les choses ;)

    Trader ;)
    0
  16. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Oui, cela peut se faire, avant de vous donner le code a l'ancienne, j'avais regarde dans cette voie.

    A+
    0
  17. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    bonjour,

    export onglet, plage de cellules ou .......
    -1