Exporter sélection vers un fichier txt

yannoch

XLDnaute Junior
Bonjour à tous,

Cela fait longtemps que je n'avais pas appelé à l'aide, mais après quelques heures de recherche ici et sur d'autres sites français/anglais, je n'arrive pas à trouver une macro pour exporter une sélection dans une feuille active vers un fichier texte tout en conservant le format.
Je m'explique, dans une colonne, j'ai une série avec la formule suivante :
Code:
="dn: cn="&B10&",ou="&Index!$E$12&",ou=External,ou=people,dc=toto,dc=tintin,dc=com
cn: "&B10&"
givenname: "&C10&"
mail: "&SI(D10="";Index!$E$12&LIGNE();D10)&"
objectclass: inetOrgPerson
objectclass: top
sn: "&F10&"
uid: "&B10&"
userpassword: "&H10
&CAR(10)

si je fais un copier/coller de cette formule dans Word par exemple, les [ALT+ENTREE] sont bien conservés, et le CAR(10) me fait bien un saut à la ligne entre chaque cellule.

Quand j'essaie d'exporter ma sélection dans un fichier txt avec les différentes macros que j'ai trouvé, je perd les [ALT+ENTREE] et le CAR(10), tout est sur une ligne et je n'ai plus de saut à la ligne entre chaque cellule.

exemple de macro que j'ai trouvé :
Code:
Sub ExportColB()
Dim myFileName As String
Set WorkRng = Sheets("tintin").Range("I9:I500")
myFileName = Application.GetSaveAsFilename(fileFilter:="Text Files (*.txt), *.txt")
If myFileName = "" Then Exit Sub
With WorkRng
    Open myFileName For Output As #1
        Print #1, Join(Evaluate("transpose(" & _
        .Address(external:=True) & ")"), vbCrLf)
    Close #1
End With

Voilà ma problématique, donc je suis preneur de toute solution qui me conserve le format de mon texte dans une cellule, plus un saut de ligne entre chaque.
J'ai pour contrainte aussi d'exporter vers un format de fichier neutre (txt, dat, ou autre, mais pas doc) pour pouvoir le réimporter autre part.

Merci à tous par avance pour vos réponses.
 

Lone-wolf

XLDnaute Barbatruc
Re : Exporter sélection vers un fichier txt

Bonjour yannoch


essaie comme ceci si c'est seulement 1 colonne que tu veux exporter

Code:
Sub Copy_Txt()
Dim fs As Object, file As Object
Dim i As Integer, lig As Long
Dim line1, line2, line3, line4

Set fs = CreateObject("Scripting.FileSystemObject")
Set file = fs.CreateTextFile("D:\Main.txt", True)
With Feuil1
lig = .Range("i65536").End(xlUp).Row
For i = 2 To lig
'line1 = .Cells(1, 1) & " " & i - 1 & ": " & .Cells(i, 1)
'line2 = .Cells(1, 2) & ": " & .Cells(i, 2)
'line3 = .Cells(1, 3) & ": " & .Cells(i, 3)
line1 = .Cells(i, 10) & Chr(13) + Chr(10)  ' .Cells(1, 4) & ": " &
file.WriteLine line1
'file.WriteLine line2
'file.WriteLine line3
'file.WriteLine line4
Next
i = i + 1
End With
file.Close
End Sub


A+ :cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : Exporter sélection vers un fichier txt

Re,

as-tu changé le chemin, le nom de la feuille et le nom de la colonne?


fichier.gif


texte.gif




A+ :cool:
 

Pièces jointes

  • fichier.gif
    fichier.gif
    5.3 KB · Affichages: 39
Dernière édition:

yannoch

XLDnaute Junior
Re : Exporter sélection vers un fichier txt

Effectivement, j'avais oublié de modifier le nom de la feuille, désolé.
J'ai bien modifié le chemin, et c'est bien la colonne I.
Maintenant, j'ai une erreur d'exécution 424 > Objet requis, le débogueur me place sur la ligne : lig = .Range("i65536").End(xlUp).Row
 

yannoch

XLDnaute Junior
Re : Exporter sélection vers un fichier txt

Merci pour ton aide Lone-wolf, mais le fichier de sortie est vide.

En parallèle, je me suis aperçu que la macro que j'ai trouvé fonctionne, c'est notepad qui ne me montre pas le format correct de mes données.
Si j'ouvre mon fichier txt avec Notepad++, j'ai bien la mise en forme que j'attend (avec les alt+entree).
Bref, je ne suis pas assez expert en "notepad microsoft" pour comprendre pourquoi il n'affiche pas les données comme cela devrait être.

Du coup, j'ai repris la macro que j'ai trouvé et j'ai continué à l'adapter à mon besoin, pour ceux que ça intéresse, la voici commentée :
Code:
Sub ExportColB()
Dim myFileName As String
Dim nouvFich As String
Dim DernLigne As Integer
Dim Plg As Range
Set Plg = Sheets("feuil1").Range("K9:K500") 'je met en mémoire une plage dans laquelle je vais chercher le numéro de la dernière cellule non vide
Sheets("feuil1").Range("I9:I500").Copy 'je copie la plage de cellule contenant des formules avec mes résultats, la plage n'est pas forcément utilisée en entier.
Sheets("feuil1").Range("K9:K500").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'je colle ma copie temporairement dans une autre colonne
nouvFich = ThisWorkbook.Path & "\" & Sheets("Index").Range("E13") & " - Comptes LDAP" & ".txt" 'je définie le nom de mon fichier et l'emplacement qui sera le dossier ou se trouve mon fichier excel
derlig = Plg.Find("*", , , , xlByRows, xlPrevious).Row 'dans la plage que j'ai collé, je cherche la dernière cellule non vide en cherchant n'importe quel caractère dedans (*)
Set WorkRng = Sheets("feuil1").Range("I9" & ":I" & derlig) 'je définie la plage que je vais exporter avec la première ligne en fixe et la dernière ligne trouvé précédemment (non vide)
myFileName = Application.GetSaveAsFilename(fileFilter:="Text Files (*.txt), *.txt", InitialFileName:=nouvFich) 'j'ouvre la boîte de dialogue d'enregistrement pour permettre de choisir un autre dossier ou nom de fichier
If myFileName = "" Then Exit Sub 'si j'annule, je quitte le programme
With WorkRng 'j'enregistre dans mon fichier txt la plage qui m'intéresse
    Open myFileName For Output As #1
        Print #1, Join(Evaluate("transpose(" & _
        .Address(external:=True) & ")"), vbCrLf)
    Close #1
End With
Sheets("feuil1").Range("K9:K500").ClearContents 'je supprime la plage que j'ai copié/collé temporairement
Sheets("feuil1").Range("A1").Select 'je me place sur une cellule de ma feuille
End Sub

Voilà, elle n'est pas optimisée, il y a sûrement plus simple mais elle marche, le seul point noir concerne notepad de microsoft.
Pour info, pour trouver la dernière cellule non vide, j'avais essayé un truc de ce genre : Derlig = Range("I65536").End(xlUp).Row, Mais ça ne marche pas avec la sélection que j'ai collé en colonne K, il me retourne toujours la dernière valeur de la plage collée = 500 alors qu'il n'y avait plus rien après la ligne 36 dans mon test.

Si par hasard quelqu'un sait pourquoi Notepad ne m'affiche pas correctement mon fichier txt, ça m'intéresse.
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi