'---------------------------------------------------------------------------------------
' Procedure : Procédure XlsToTxt
' Author : mromain
' Date : 10/06/2009
' Purpose : exporte une feuille Excel dans un fichier texte
' - l'attribut "sheetExport" représente la feuille source (pour l'export)
' - si l'attribut "exportFileName" n'est pas précisé, une IHM demandera à l'utilisateur de sélectionner le fichier
' - si l'attribut "csvDelimiter" n'est pas précisé, la valeur prise par défaut sera ";"
'---------------------------------------------------------------------------------------
'
Public Sub XlsToTxt(sheetExport As Worksheet, Optional exportFileName As String, Optional csvDelimiter As String = ";")
Dim myFso As Object, csvFile As Object, i As Integer, j As Integer, csvLine As String
' si le nom de fichier CSV destination n'a pas été précisé,
If exportFileName = Empty Then
' récupérer le nom du fichier à créer
Do
exportFileName = Application.GetSaveAsFilename(InitialFileName:=sheetExport.Name & ".csv", filefilter:="Fichier CSV, *.csv")
Loop Until UCase(exportFileName) <> "FAUX"
End If
' créer le fichier
Set myFso = CreateObject("Scripting.FileSystemObject")
Set csvFile = myFso.CreateTextFile(Filename:=exportFileName, overwrite:=True)
With sheetExport
' boucler sur toutes les lignes
For i = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
' initialiser la ligne CSV
csvLine = vbNullString
' boucler sur toutes les colonnes
For j = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Column
' créer la ligne
csvLine = csvLine & .Cells(i, j).Text & csvDelimiter
Next j
csvLine = Left(csvLine, Len(csvLine) - Len(csvDelimiter))
' écrire la ligne dans le fichier
csvFile.WriteLine csvLine
Next i
End With
' fermer le fichier
csvFile.Close
Set csvFile = Nothing: Set myFso = Nothing
End Sub