[Résolu] Retour à la ligne dans un fichier .txt suite copie cellule

Lone-wolf

XLDnaute Barbatruc
Bonjour le Forum et Bon Dimanche.

Suite à la macro de notre ami Robert ici

J'en ai profité pour modifier un peu le code, pour pouvoir créer des fichiers .txt, selon le choix dans la listbox.

Le problème c'est qu' une fois créé le fichier, le texte s'affiche sur une ligne et non comme on le vois dans la cellule. J'en ai mis un comme exemple dans la PJ. Si qulequ'un à une idée.


A+ :cool:


Amicalement
Lone-wolf
 

Pièces jointes

  • Convertisseur Txt.zip
    65.5 KB · Affichages: 105
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Bonjour.
Je n'ai pas regardé le fichier, mais remède très probable:
Soit Z le String contenant le texte à écrire, envoyez y : Replace(Z, vbLf, vbCrLf)
Cordialement
 

Lone-wolf

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Bonjour Dranreb,

merci pour la solution, c'est parfait.

Code:
Private Sub Liste_Click()
Dim cel, nom, fichier, rg

With Sheets(1)
rg = Cells(Me.Liste.Column(1, Me.Liste.ListIndex), 3)
nom = Cells(Me.Liste.Column(1, Me.Liste.ListIndex), 2)
End With
cel = Replace(rg, vbLf, vbCrLf)
fichier = ThisWorkbook.Path & "\" & nom & ".txt"

Open fichier For Output As #1

Print #1, cel
Close #1

End Sub

Maintenant j'aimerais créer un dossier suivant le nom écrit dans la Textbox et enregistrer le fichier.
Le nom du dossier se réfère aux cellules de la colonne A, et comme il y a des doublons, il faut une condition.

Condition: si le dossier existe déjà, enregistrer quand même le fichier dans le dossier.

J'ai essaié avec le code de Job75:

Code:
Sub CreerDossiers()
'Auteur: Job75  Site Web: Excel-Downloads.com
Dim txt$, s, i%
txt = [A1] 'txt = "C:\TEST"  ' Modifiée par Me.Recherche.Value
s = Split(txt, "\")
On Error Resume Next
txt = s(0) 
For i = 1 To UBound(s) 
txt = txt & "\" & s(i) 
MkDir txt
Next
End Sub

Là je ne sais pas comment modifier la ligne: fichier = ThisWorkbook.Path & "\" & nom & ".txt"


A+ :cool:


Amicalement
Lone-wolf
 

Dranreb

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

À quoi peut bien servir ce code ? il simule txt = Join(Split("txt, "\"), "\") ce qui ne fait strictement rien !
VB:
MkDir txt
devrait faire aussi bien.
Là je ne sais pas comment modifier la ligne: fichier = ThisWorkbook.Path & "\" & nom & ".txt"
???
VB:
fichier = txt & "\" & nom & ".txt"
À +
 

job75

XLDnaute Barbatruc

Lone-wolf

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Re Dranreb, bonjour Job,

J'ai trouver la solution, un peu casse tête je dois dire.

Dans un module : Public dossier$, fichier$, chemin$, s, i%


Code:
Private Sub Liste_Click()
Dim cel, nom, rg

With Sheets(1)
rg = Cells(Me.Liste.Column(1, Me.Liste.ListIndex), 3)
nom = Cells(Me.Liste.Column(1, Me.Liste.ListIndex), 2)
End With
cel = Replace(rg, vbLf, vbCrLf)
chemin = dossier & "\"
fichier = chemin & nom & ".txt"
Open fichier For Output As #1

Print #1, cel
Close #1

End Sub

Private Sub Affiche_Click()
Call CreerDossier
Dim r As Range
Dim pa As String

Me.Liste.Clear
Set r = Sheets(1).Columns(2).Find(Me.Recherche.Value, , xlValues, xlPart)
If Not r Is Nothing Then
pa = r.Address
Do
With Me.Liste
.AddItem r.Value
.Column(1, .ListCount - 1) = r.Row
End With
Set r = Sheets(1).Columns(2).FindNext(r)
Loop While Not r Is Nothing And r.Address <> pa
End If

End Sub

Private Sub UserForm_Initialize()

Dim fichier As String
Dim x As Long
    
fichier = ThisWorkbook.Path & "\fichier.ico"
x = Len(Dir(fichier))
If x = 0 Then Exit Sub
    
 x = ExtractIconA(0, fichier, 0)
 SendMessageA FindWindow(vbNullString, Me.Caption), &H80, False, x
End Sub

Sub CreerDossier()
dossier = ThisWorkbook.Path & "\" & Me.Recherche.Value
s = Split(dossier, "\")
On Error Resume Next
dossier = s(0)
For i = 1 To UBound(s)
dossier = dossier & "\" & s(i)
MkDir dossier
Next
End Sub

Merci beaucoup pour votre aide.

A+ :cool:


Amicalement
Lone-wolf
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Bonjour le Forum,

après test du fichier joint, ce n'est pas concluant. En effet, le code de Robert recherche tout les mots identique à la textbox. Comme les textes de la colonne A sont différents de la colonne B, le code ne sert à rien dans ce cas précis. J'ai fait une recherche sur le Forum sans trouver mon bonheur :eek: ;).

Un coup de main est toujours le bienvenu. Convertisseur fichiers


A+ :cool:


Amicalement
Lone-wolf
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Bonjour Lone-wolf, le fil,

Pourquoi créer des fichiers txt pour restituer les macros ?

Le fichier joint est très simple avec ce code dans l'USF :

Code:
Private Sub CommandButton1_Click()
Dim cel As Range
ListBox1.Clear
For Each cel In Sheets(1).[A2:A65536].SpecialCells(xlCellTypeConstants)
  If InStr(cel & cel.Offset(, 1), TextBox1) Then ListBox1.AddItem cel.Offset(, 1)
Next
End Sub

Private Sub ListBox1_Click()
Dim txt$, lig&
txt = ListBox1.List(ListBox1.ListIndex)
lig = Application.Match(txt, Sheets(1).[B:B], 0)
Feuil3.Activate 'CodeName
[A1] = txt
[A2] = Sheets(1).Cells(lig, "C")
Me.Hide
End Sub
Edit : j'avais oublié de restituer le titre des macros (txt).

A+
 

Pièces jointes

  • Rechercher les macros(1).xls
    139 KB · Affichages: 65
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Bonjour Job,

Merci d'avoir répondu et merci pour ton aide.

je viens de faire un test du fichier, dès que je clique sur le bouton de recherche, le formulaire se ferme.
Et la ligne UserForm1.Show est en jaune.


Pourquoi créér des fichiers txt? Dans le dernier fichier joint, tu recherches par ex. Cellules, quand tu clique sur les lignes, un fichier txt se crée avec le nom de la ligne et un 2ème formulaire affiche le texte du fichier .txt.


A+ :cool:


Amicalement
Lone-wolf
 

Si...

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

salut tous

Si... tu as déjà un répertoire de sauvegarde des textes, cela pourrait suffire
Code:
Option Explicit
Option Compare Text
Private Declare Function FindWindowA& Lib "User32" _
                                      (ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function EnableWindow& Lib "User32" _
                                       (ByVal hWnd&, ByVal bEnable&)
Private Declare Function GetWindowLongA& Lib "User32" _
                                         (ByVal hWnd&, ByVal nIndex&)
Private Declare Function SetWindowLongA& Lib "User32" _
                                         (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
Private Sub UserForm_Initialize()
  Dim hWnd As Long
  hWnd = FindWindowA(vbNullString, Caption)
  SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
  Dim fc As String
  Dim x As Long
  fc = ThisWorkbook.Path & "\Dossier-Images" & "\fiche.ico"
  x = Len(Dir(fc))
  If x = 0 Then Exit Sub
  x = ExtractIconA(0, fc, 0)
  SendMessageA FindWindow(vbNullString, Caption), &H80, False, x
End Sub
Private Sub UserForm_Activate()
  Dim hWnd As Long
  hWnd = FindWindowA("XLMAIN", Application.Caption)
  EnableWindow hWnd, 1
End Sub
Private Sub Affiche_Click()
  Dim r As Range
  Dim pa As String
  Liste.Clear
  For Each r In Sheets(1).Range("B2:B" & Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row)
    If r Like "*" & Recherche & "*" Then
      Liste.AddItem r
      Liste.List(Liste.ListCount - 1, 1) = r.Row
    End If
  Next
End Sub
Private Sub Liste_Click()
  Dim cel, nom, rg, li As Long
  li = Liste.List(Liste.ListIndex, 1)
  rg = Sheets(1).Cells(li, 3)
  nom = Sheets(1).Cells(li, 2)
  On Error Resume Next
  cel = Replace(rg, vbLf, vbCrLf)
   'chemin --------------------------------->terminé par \
    chemin = "répertoire  où tu veux stocker tes Textes"
  Fichier = chemin & nom & ".txt"
  Open Fichier For Output As #1
  Print #1, cel
  Close #1
  'inutile (ça marche !)
  Test
  UserForm1.Show
End Sub
Private Sub Fermer_Click()
  Unload Me
End Sub

Sub Test()
  Dim a$, texte$
  Open Fichier For Input As #1
  While Not EOF(1)
    Input #1, a$
    texte = texte & a$ & vbNewLine
  Wend
  Close #1
  UserForm1.TextBox1 = texte
End Sub
 

job75

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Re Lone-wolf,

J'ai en effet redonné à l'USF et ses contrôles leurs noms d'origine (UserForm1...).

Adapte éventuellement les macros que j'ai données.

Maintenant voici une version (2) avec possibilité de sauvegarde de la feuille de restitution.

Il me semble préférable de créer un fichier Excel classique :

Code:
Sub Sauvegarde()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Feuil3.Copy 'CodeName
With ActiveSheet
  .[B:IV].Delete
  .Parent.SaveAs ThisWorkbook.Path & "\" & .[A1], ThisWorkbook.FileFormat
  If Err Then MsgBox "Sauvegarde impossible !", 48
  .Parent.Close
End With
End Sub
A+
 

Pièces jointes

  • Rechercher les macros(2).xls
    138.5 KB · Affichages: 55

job75

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Re,

Avec retard (je partais diner), je salue l'ami SI...

Une précision sur la macro Sauvegarde de ma version (2).

Le message "Sauvegarde impossible !" s'affiche quand :

- il y a des caractères interdits pour les noms de fichiers en cellule A1

- le fichier à créer existe déjà et est ouvert.

A+
 

job75

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Bonjour Lone-wolf, le forum,

Dans cette version (3) les macros choisies sont affichées dans l'UserForm.

La feuille de restitution (masquée) est utilisée pour les macros Imprimer et Sauvegarder.

Noter la fonction EPUR qui supprime les caractères interdits pour les noms des fichiers.

A+
 

Pièces jointes

  • Rechercher les macros(3).xls
    148.5 KB · Affichages: 57
Dernière édition:

job75

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Re,

Avec la boîte de dialogue Imprimer, l'Aperçu avant impression n'allait pas (sur Excel 2010).

Il faut préalablement masquer l'UserForm.

Voir cette version (4).

A+
 

Pièces jointes

  • Rechercher les macros(4).xls
    148.5 KB · Affichages: 59

Lone-wolf

XLDnaute Barbatruc
Re : Retour à la ligne dans un fichier .txt suite copie cellule

Bonjour Job, Si...,

veuillez me pardonner pour la réponse tardive, j'était tellement pris pour trouver une solution à mon problème.

@Job: le fichier est super, mais je je comprend pas pourquoi tu as interdit certains signes dans la colonne A, d'après ce que j'ai pu voir. J'ai essaié de rajouter quelques lignes concernant l'affichage des objets, ce n'est pas encore au point pour l'instant.

@Si: je viens de voir le code que tu m'a proposé, dès que j'ai un moment pour le tester, je te tiendrais au courant.


En attendant, voici le fichier final: Convertisseur


Merci infiniment pour tout ce que vous avez fait.


A+ :cool:


Amicalement
Lone-wolf
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 296
Membres
103 171
dernier inscrit
clemm