Exportation de cellule vers fichier texte

Laosurlamontagne

XLDnaute Occasionnel
Bonjour à tous,

Ma problématique est assez simple mais mon niveau en VBA est hélas trop limité...

Je cherche à extraire les données de 4 colonnes excel vers un fichier txt (dans l'objectif de le travailler ensuite sous latex). J'ai trouvé quelques petites macro sur ce site mais je n'arrive pas à la modifier convenablement:

Code:
        Sub test()
        Dim myFso As Object, csvFile As Object, textLine As String
        Dim exportFileName As String
        Dim curCell As Range
        Dim i As Integer

        exportFileName = "C:\test.txt"

        ' créer le fichier
        Set myFso = CreateObject("Scripting.FileSystemObject")
        Set csvFile = myFso.CreateTextFile(Filename:=exportFileName, overwrite:=True)

        Set curCell = ThisWorkbook.Sheets("MASTER").Range("A1")
        With ThisWorkbook.Sheets("MASTER")
            For i = 1 To .Range("A" & .Rows.Count).End(xlUp).Row
                Set curCell = .Range("A" & i)
                textLine = vbNullString

                While curCell.Text <> vbNullString
                    textLine = textLine & IIf(textLine = vbNullString, vbNullString, vbTab) & curCell.Text
                    Set curCell = curCell.Offset(0, 1)
                Wend
        '        Set curCell = .Range("A" & curCell.Row + 1)
                ' écrire la ligne dans le fichier
                csvFile.WriteLine textLine

            Next i
        End With

        ' fermer le fichier
        csvFile.Close
        Set csvFile = Nothing: Set myFso = Nothing

        End Sub

elle extrait bien les données des cellules pleines uniquement mais je souhaiterais "un retour à la ligne" à chaque cellules et dans "l'ordre de lecture" (i.e de gauche à droite).

Que dois-je modifier dans la macro ci-dessus ?

Merci pour votre aide.
 

Pièces jointes

  • MASTER.xls
    39.5 KB · Affichages: 42
  • MASTER.xls
    39.5 KB · Affichages: 48

pijaku

XLDnaute Occasionnel
Re : Exportation de cellule vers fichier texte

Bonjour,

Ce code modifié permet, je pense, d'obtenir le résultat souhaité :

Code:
Sub test()
Dim myFso As Object, csvFile As Object
Dim exportFileName As String
Dim curCell As Range
Dim i As Integer

exportFileName = ThisWorkbook.Path & "\test.txt"
Set myFso = CreateObject("Scripting.FileSystemObject")
Set csvFile = myFso.CreateTextFile(Filename:=exportFileName, overwrite:=True)
Set curCell = ThisWorkbook.Sheets("MASTER").Range("A1")

With ThisWorkbook.Sheets("MASTER")
    For i = 1 To .Range("A" & .Rows.Count).End(xlUp).Row
        Set curCell = .Range("A" & i)
        If curCell.Text = vbNullString Then
            csvFile.WriteLine ""
        Else
            While curCell.Text <> vbNullString
                csvFile.WriteLine curCell.Text
                Set curCell = curCell.Offset(0, 1)
            Wend
        End If
    Next i
End With
csvFile.Close
Set csvFile = Nothing: Set myFso = Nothing
End Sub
 

Laosurlamontagne

XLDnaute Occasionnel
Re : Exportation de cellule vers fichier texte

Merci pour vote retour !

ca marche sur le fichier exemple joint mais pas sur celui sur lequel je veux travailler. ça plante à la ligne:

Code:
Set csvFile = myFso.CreateTextFile(Filename:=echinon3xportFileName, overwrite:=True)

Quelle pourrait en être la raison ? Les colonnes que je souhaites copier sont les G à I de la ligne 3 à la dernière ligne occupé. Est-ce ceci qui ferait planter la macro ?

Merci pour votre aide.
 

pijaku

XLDnaute Occasionnel
Re : Exportation de cellule vers fichier texte

Bonjour,
Ah OK. Bon alors reprenons le code...
Cette ligne :
Code:
exportFileName = ThisWorkbook.Path & "\test.txt"
affecte, à la variable exportfilename (déclarée As String (Dim exportFileName As String) c'est à dire comme une chaîne de caractères) , le chemin d'accès de ton fichier excel actif (ThisWorkbook.Path) ET le nom du fichier txt (& "\test.txt")
Donc, dans cette ligne :
Code:
Set csvFile = myFso.CreateTextFile(Filename:=exportFileName, overwrite:=True)
"exportfilename" représente le nom de ton fichier txt, inutile de le changer en "echinon3xportFileName"

Alors, recopie le code initial, et reteste... sans rien toucher!
 

Discussions similaires

Réponses
12
Affichages
561

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87