export CSV ou tXT

B

billysteph

Guest
Bonjour a tous,

J'ai un fichier .XLS, et je dois faire un fichier .CSV ou .TXT d'une des feuilles.
J'ai fait un bouton qui m'enregistre tout ca (je pense que c'est du bricolage; mais bon...).
Le seul "hic", c'est que le fichier CSV ou TXT ne reagit pas comme je le voudrai, en fait il devrait etre constituer comme cela:
"1","2",3,"4",5,6

Oui, il me faut des virgules, non pas des points virgules, et suivant certaines valeurs, il me faut des guillemets " " sur certaines donnees.
Est ce que quelqu'un aurait une idee pour me faciliter la recherche, car là, je desespere.
Merci d'avance,
 
@

@+Thierry

Guest
Bonjour BillySteph, le Forum

Je pense qu'une petite démo vaut toujours mieux qu'un long discours !

  => Fichier Téléchargeable Lien supprimé

  => Fil de Discussion Lien supprimé

Maintenant pour ta demande précise, il faudra un peu adapter le code à ce niveau :
  => Module.Name "Exportation"
  => Macro.Name "Sub BuildTXT(Separateur As String)"
  => Line.Number 30 to 32
  => Code Original :
&nbsp;&nbsp;&nbsp;If C < 4 Then
&nbsp;&nbsp;&nbsp; TheText = TheText & CStr(Cells(L, C).Text) & Separateur
&nbsp;&nbsp;&nbsp; Else
&nbsp;&nbsp;&nbsp; TheText = TheText & CStr(Cells(L, C).Text)
&nbsp;&nbsp;&nbsp; End If

&nbsp;&nbsp;=> Code de Remplacement :
&nbsp;&nbsp;&nbsp; If C < 4 Then
&nbsp;&nbsp;&nbsp; TheText = TheText & Chr(34) & CStr(Cells(L, C).Text) & Chr(34) & Separateur
&nbsp;&nbsp;&nbsp; Else
&nbsp;&nbsp;&nbsp; TheText = TheText & Chr(34) & CStr(Cells(L, C).Text) &nbsp;&nbsp;&nbsp; & Chr(34)
End If

Maintenant au regard de ce que tu as écrit => "1","2",3,"4",5,6
Je Conclus que tu as 6 colonnes alors que mon Programme en exporte que 4...

Donc le code pour toi donnerait un peu un résulat comme ceci :

Option Explicit

Sub BuildTXTBillySteph()
Dim Range As Object, Line As Object
Dim TheText As String, ThePath As String, Separator As String
Dim TheFile As Variant
Dim L As Integer
Dim C As Byte


ThePath = ThisWorkbook.Path & "\ReportDataTXT"
TheFile = Application.GetSaveAsFilename(ThePath, "Fichier,*.txt")
If TheFile = False Then Exit Sub

Separator = ","
Set Range = ActiveSheet.Range("A1:F" & TXT.Range("A65536").End(xlUp).Row)
Open TheFile For Output As #1

For Each Line In Range.Rows
L = L + 1
TheText = ""

For C = 1 To 6
If C < 3 Or C = 4 Then
TheText = TheText & Chr(34) & CStr(Cells(L, C).Text) & Chr(34) & Separator
ElseIf C = 3 Or C = 5 Then
TheText = TheText & CStr(Cells(L, C).Text) & Separator
Else
TheText = TheText & CStr(Cells(L, C).Text)
End If
Next C

Print #1, TheText
Next
Close

Set Range = Nothing
End Sub


Bon Aprèm
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 530
dernier inscrit
Chess01