Macro _Exporter des données au format csv

senecartour Messages postés 391 Statut Membre -  
senecartour Messages postés 391 Statut Membre -
Bonjour,

J'ai trouvé un code en ligne que j'essaie d'adapter à mon cas.
Je souhaite exporter les données de ma feuille dans un fichier texte.

Mais j'ai un message d'erreur au lancement de ma macro "Sub, Function ou property attendu".

J'ai beau recherché, je ne trouve pas les causes de l'erreur.
Je vous joins le fichier avec le code via le lien
https://www.cjoint.com/c/FAAk1BvUwih

Merci d'avance pour votre aide

--
Partager son savoir est la meilleure façon d'apprendre!

2 réponses

  1. Maurice
     
    Bonjour
    voila une nouvelle macro
    peux etre plus simple pour toi
    Sub ExportCsv()
    Application.ScreenUpdating = False
    Nom = "Testcsv"
    Ext = ".csv"
    Fichier = Nom & Ext
    chemin = ActiveWorkbook.Path & Application.PathSeparator
    CheminFiche = chemin & Fichier
    Sep = ";"
    'Sep = vbTab
    Nlig = Cells(Rows.Count, 1).End(xlUp).Row
       Set plage = Range("A1:C" & Nlig)
          Open CheminFiche For Output As #1
             For Each Lig In plage.Rows
                Tmp = ""
                   For Each Cel In Lig.Cells
                      Tmp = Tmp & CStr(Cel.Text) & Sep
                   Next
                Print #1, Tmp
             Next
          Close
       Set plage = Nothing
    Application.ScreenUpdating = True
    MsgBox "Terminer"
    End Sub
    

    A+
    Maurice
    0
    1. senecartour Messages postés 391 Statut Membre 3
       
      Bonjour Maurice pour c code.
      Mais je souhaiterais partir des codes dans mon fichier.
      l'idée c'est de comprendre pourquoi mon code ne fonctionne pas.
      Auriez-vous une idée ?
      Merci d'avance
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    L'objet "ADODB.Stream" ne me semble pas adapté pour les fichier texte voir ici

    En faisant un brin de ménage dans ton code ceci devrait (à peu près)fonctionner, mais la solution de Maurice, que je salue au passage, est plus adaptée

    Option Explicit

    Sub exporter()
    Enregistrerdonnees "semecartour2"
    End Sub

    Sub Enregistrerdonnees(ByVal Fichier As String)
    Dim Ligne As Long, NombreLigne As Long, NombreColonne As Long, Colonne As Long
    Dim oStream As Object
    Dim feuille As String, chemin As String
    Dim s As String

    NombreLigne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    NombreColonne = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).Column
    chemin = Application.ActiveWorkbook.Path
    feuille = ActiveSheet.Name
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Position = 0
    oStream.Charset = "UTF-8"
    For Ligne = 1 To NombreLigne
    s = Cells(Ligne, 1)
    For Colonne = 2 To NombreColonne
    s = s & ";" & Cells(Ligne, Colonne)
    Next Colonne
    oStream.writeText s & Chr(10)
    Next Ligne
    oStream.savetofile chemin & "\" & Fichier & ".csv"
    Set oStream = Nothing
    End Sub

    Cdlmnt
    0
    1. senecartour Messages postés 391 Statut Membre 3
       
      BonjourCCM81,
      J'ai testé votre code mais ça ne fonctionne pas.
      C'est vrai que la solution de Maurice marche mais j'aiemrais comprendre pourquoi mon code ne marche pas alors que tout semble être OK.
      C'est là la question.
      0