Exporter colonne d'un onglet en fichier txt mais
Bonjour à tous,
J'ai parcouru ce forum en quête d'informations. J'ai vu que le sujet avait été traité plusieurs fois, mais je n'arrive pas à l'appliquer à mon problème. Je n'ai jamais étudié le VBA, j'ai pleins de messages d'erreurs et en essayant cela me fait planter l'ordi.
Pour faire simple (enfin je vais essayer...). sur ma "feuille1", je veux mettre un bouton pour lancer la macro qui créera mon fichier txt.
La colonne à sauvegarder dans le fichier texte se situe dans la colonne B (seulement les valeurs non vides) de ma "feuille2".
Je voudrais que chaque cellule de la colonne soit séparée par un saut de ligne dans le fichier texte (B1 saut de ligne B2 saut de ligne ...). (J'avais réussi à générer un fichier texte mais les cellules de ma colonne se retrouvait sur une seule ligne dans le fichier txt, mon ordi a planté et j'ai perdu cette macro).
De plus, est-il possible qu'au moment de cliquer pour générer le fichier txt, l'utilisateur puisse choisir le dossier où sauvegarder et nommer lui-même le nom du texte ? (je ne sais pas si c'est possible). Autre alternative, sauvegarder par défaut dans mes documents mais mettre un message d'erreur si le nom du fichier existe déjà.
Je pense que c'est peut-être trop compliqué.
Merci par avance si vous pouviez me donner quelques indices
Rebonjour,
J'ai en partie réussi grâce à un code trouvé sur un site anglais. Savez-vous comment l'utilisateur de ce fichier peut choisir la destination et le nom du fichier texte ? (ou alors comment enregistrer dans "Mes documents" quel que soit l'ordinateur) ? J'ai spécifié ici le chemin où sauvegarder.
Sub test()
Dim rng As Range, lRow As Long
Dim stOutput As String, stNextLine As String, stSeparator As String
Dim stFilename As String, stEncoding As String
Dim fso As Object
'-------------------------------------------------------------------------------------
'CHANGE THESE PARAMETERS TO SUIT
Set rng = Worksheets("feuille1").Range("B4:B104") 'this is the range which will be written to text file
stFilename = "C:\TextOutput.txt" 'this is the text file path / name
stSeparator = vbTab 'e.g. for comma seperated value, change this to ","
stEncoding = "UTF-8" 'e.g. "UTF-8", "ASCII"
'-------------------------------------------------------------------------------------
For lRow = 1 To rng.Rows.Count
If rng.Columns.Count = 1 Then
stNextLine = rng.Rows(lRow).Value
Else
stNextLine = Join$(Application.Transpose(Application.Transpose(rng.Rows(lRow).Value)), stSeparator)
End If
If stOutput = "" Then
stOutput = stNextLine
Else
stOutput = stOutput & vbCrLf & stNextLine
End If
Next lRow
Set fso = CreateObject("ADODB.Stream")
With fso
.Type = 2
.Charset = stEncoding
.Open
.WriteText stOutput
.SaveToFile stFilename, 2
End With
Set fso = Nothing
End Sub