enregistrer sous format txt avec séparateur spécifique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Janus62

XLDnaute Nouveau
Bonjour à tous,

j'aimerais enregistrer un fichier excel comportant plusieurs colonne au format txt mais en utilisant des séparateurs |

comment procéder ?

merci d'avance
 
Re : enregistrer sous format txt avec séparateur spécifique

Bonjour Janus62,

voici une macro qui peux répondre à ton PB :
Code:
'---------------------------------------------------------------------------------------
' 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

et voilà comment l'utiliser :
Code:
XlsToTxt ThisWorkbook.Sheets("Feuille à exporter"), [COLOR=Red]"c:\resultat.csv"[/COLOR], "|"

si tu ne précise pas le fichier destination (en rouge), une boite de dialogue s'ouvre pour que l'utilisateur crée le fichier destination.


a+
 
Re : enregistrer sous format txt avec séparateur spécifique

Bonjour à tous,

j'aimerais enregistrer un fichier excel comportant plusieurs colonne au format txt mais en utilisant des séparateurs |

comment procéder ?

merci d'avance

donc un fichier .CSV avec | au lieu de ; ?

si c'est pour un "one-shoot", tu peux peut être changer le type de séparateur de listes dans les options régionales de Windows :

Démarrer / Panneau de configuration / Options régionales et linguistiques / onglet Options régionales / Personnaliser / zone Séparateur de listes.

EDIT : bon, je remballe mes billes avec le code de MRomain... 😛
 
Re : enregistrer sous format txt avec séparateur spécifique

Bonjour à tous,

Ci-joint, une autre solution :
Code:
Sub Test()
Chemin = ThisWorkbook.Path
Fichier = "Test.txt"
Sep = "|"
'----------------------
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(Chemin & "\" & Fichier, True)
With Sheets("Feuil1")
    For Each X In .Range("A1:" & .Range("A65536").End(xlUp).Address)
        For Each Y In .Range(X, .Cells(X.Row, 256).End(xlToLeft))
            Var1 = Var1 & Sep & Y.Value
        Next
        a.WriteLine Right(Var1, Len(Var1) - 1): Var1 = ""
    Next
End With
a.Close
End Sub
... finalement basée sur le meme principe que celle de mromain
 

Pièces jointes

Dernière édition:
Re : enregistrer sous format txt avec séparateur spécifique

Un grand merci pour vos réponses,

j'essaye d'exploiter la solution de romain, mais je n'arrive pas à lancer la macro proposée bien que je l'ai collé dans mon fichier

Etant débutant, y a t-il une manipulation spécifique ?

merci
 
Re : enregistrer sous format txt avec séparateur spécifique

bonjour,

Pour appeler la macro de mromain:

Code:
Sub ExporterFeuille()
 XlsToTxt Sheets("NomDeLaFeuilleAExporter") , NomDeFichier, "|"
End Sub

Remplacer:
1 - NomDeLaFeuilleAExporter par le nom de ta feuille
2 - NomDeFichier par le nom complet du fichier final: "c:\fichier.csv" (avec le guillemets)

A+
 
Re : enregistrer sous format txt avec séparateur spécifique

Merci Catrice,

j'ai repris ton exemple car celui de romain m'indiquait que je n'avais pas accès.

cela fonctionne impec, je n'ais plus qu'à modifier le nom du fichier et le chemin d'accès

encore un grand merci

🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
106
Réponses
5
Affichages
154
Réponses
20
Affichages
809
  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
245
Retour