Exporter plusieurs cellules vers fichier TXT

Guilee

XLDnaute Nouveau
Bonjour à tous,

J'ai suivi le tutoriel disponible dans la page Wiki 3 de MichelXld (Piloter d'autres applications depuis Excel) afin d'exporter un contenu de cellule dans un fichier .txt
C'est exactement ce que je souhaite mais avec un ensemble de cellules.

Si je modifie le code original suivant :

Sub excelVersFichierTexte_V02()

Dim Fichier As String

Fichier = "C:\Documents and Settings\michel\dossier\general\excel\Fichier.Txt"

Open Fichier For Output As #1

Print #1, Range("A1") 'renvoie la valeur cellule A1 dans le fichier txt

Close

End Sub

Par :

Private Sub CommandButton1_Click()

Dim Fichier As String

Fichier = "C:\Documents and Settings\***\Bureau\TEST.txt"

Open Fichier For Output As #1

Print #1, Sheets("feuil2").Range("A1:J10")

Close

End Sub

Ça ne marche pas (Erreur d'exécution '13' sur la ligne "Print #1...").

Pourriez-vous m'expliquer pourquoi et m'aiguiller vers une solution?

Merci d'avance à tous :)
 

MJ13

XLDnaute Barbatruc
Re : Exporter plusieurs cellules vers fichier TXT

Bonjour

Code:
Print #1, Sheets("feuil2").Range("[B]A1:J10[/B]")

Cette ligne me paraît bizarre essaye déjà:

Code:
Print #1, Sheets("feuil2").Range("[B]A1[/B]").value

ensuite il faudrait boucler sur les cellules de la plage avec

Code:
for each cell in range("[B]A1:J10")[/B]
Print #1, cell.value
next

Mais bon je fait cela de tête, donc après il faut debogger (généralemnt averc un code comme celui la, il y a des erreurs).
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Exporter plusieurs cellules vers fichier TXT

Bonsoir,

Code:
Sub ExportTxtChamp()
  repertoire = ThisWorkbook.Path
  Open repertoire & "\x.txt" For Output As #1
  Set champ = [C1].CurrentRegion
  For lig = 1 To champ.Rows.Count
    ligne = ""
    For col = 1 To champ.Columns.Count
      ligne = ligne & champ.Cells(lig, col) & ";"
    Next col
    Print #1, Left(ligne, Len(ligne) - 1)
  Next lig
  Close #1
End Sub

Fichiers séquentiels

JB
 

Guilee

XLDnaute Nouveau
Re : Exporter plusieurs cellules vers fichier TXT

Re-bonjour à tous,

Je clarifie mon problème : j'aimerai copier les cellules en séparant leurs valeurs par une tabulation (et en passant à la ligne suivante lorsqu'il n'y a plus de valeur dans la cellule de la colonne suivante).

La solution de BOISGONTIER me paraît intéressante mais je ne la comprends pas et j'ai du mal à l'adapter à mon projet :(

Merci encore pour vos conseils!
 

mromain

XLDnaute Barbatruc
Re : Exporter plusieurs cellules vers fichier TXT

bonjour Guilee, BOISGONTIER,

voici un essai :
Code:
Private Sub CommandButton1_Click()
Dim myFso As Object, csvFile As Object, textLine As String
Dim exportFileName As String
Dim curCell As Range

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("Feuil1").Range("A1")

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

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

End Sub
a+
 

Pièces jointes

  • Classeur1.xls
    34 KB · Affichages: 281
  • Classeur1.xls
    34 KB · Affichages: 293
  • Classeur1.xls
    34 KB · Affichages: 307

Guilee

XLDnaute Nouveau
Re : Exporter plusieurs cellules vers fichier TXT

:) Merci bien mromain, ça marche!

Mais (je chipote?) j'aimerai intégrer des sauts de lignes pour plus de lisibilité dans le fichier texte. En clair, à chaque ligne vide sur Excel faire correspondre un saut de ligne dans mon fichier texte.

Merci encore pour ces réponses. Comme j'ai encore un peu de mal à comprendre le code, je vous en redemande un peu plus :eek:
 

mromain

XLDnaute Barbatruc
Re : Exporter plusieurs cellules vers fichier TXT

:) Merci bien mromain, ça marche!

Mais (je chipote?) j'aimerai intégrer des sauts de lignes pour plus de lisibilité dans le fichier texte. En clair, à chaque ligne vide sur Excel faire correspondre un saut de ligne dans mon fichier texte.

Merci encore pour ces réponses. Comme j'ai encore un peu de mal à comprendre le code, je vous en redemande un peu plus :eek:
re bonjour le fil,

peux-tu joindre des fichiers pour travailler stp :
> fichier xls (à exporter)
> fichier txt (résultat souhaité)

a+
 

Guilee

XLDnaute Nouveau
Re : Exporter plusieurs cellules vers fichier TXT

C'est vrai que ce sera plus simple avec les petits fichiers comme exemple :eek:

Donc, le fichier .xls joint correspond au fichier à exporter et le fichier .txt correspond au résultat souhaité.
Vous aurez compris à la vue de ce dernier fichier qu'il servira à construire un modèle géométrique en 3 dimensions (pour de l'acoustique prévisionnelle, juste pour information).
Le fichier texte doit donc être clair (avec des sauts de ligne et des ";" pour les commentaires) puisque plusieurs utilisateurs sont susceptibles de travailler dessus tour à tour (les informaticiens me comprennent :D ).

On n'est pas loin du résultat escompté ;) un grand merci à vous!
 

Pièces jointes

  • MASTER.zip
    5.2 KB · Affichages: 137
  • MASTER.zip
    5.2 KB · Affichages: 140
  • MASTER.zip
    5.2 KB · Affichages: 131

mromain

XLDnaute Barbatruc
Re : Exporter plusieurs cellules vers fichier TXT

bonjour Guilee,

voici un autre essai :
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

a+
 

Discussions similaires

Réponses
2
Affichages
416