Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Nyepalo

XLDnaute Junior
Bonjour,

Après des recherches individuels et dans le forum dont les résultats ne correspondent pas toujours à mes désirs, je viens dans ce forum solliciter votre aide.

Il est question de ressortir dans un fichier texte, toutes les données présentes dans les différentes colonnes et lignes de la feuille « Détail ». Le fichier texte à une ligne entête en dur dans le code, en plus de lignes détails dans le tableau. Le nombre de ligne dans le tableau est sans limite.
Mon exemple ci-joint.

Merci d'avance de votre aide.
 

Pièces jointes

  • MdleExcel_Convert_txt.xlsm
    15.3 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Bonsoir Nyepalo,

Je ne comprends pas trop, pourquoi une macro ?

Modifiez la ligne d'en-têtes comme vous voulez et avec la commande Enregistrer sous enregistrez le fichier au format Texte ou CSV.

Bien sûr on peut automatiser avec une macro utilisant SaveAs.

Edit : bonsoir camarchepas.

A+
 
Dernière édition:

Nyepalo

XLDnaute Junior
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Bonjour Tous,

camarchepas : il y a effectivement une présentation spéciale mais pas de séparateur entre les différentes colonnes. C'est un texte (DOS). Les colonnes vides sont à prendre en compte en respectant le nombre de caractères prévus. Par exemple "R" de la colonne B doit avoir 8 caractères espace.

job75 : Je ne préfère pas cette alternative par ce qu'elle ne répond exactement pas aux attentes. Pas d'alignement systématique des colonnes ; d'où le choix du code.

Merci de votre réaction.

Bien à vous.
 

Roland_M

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

bonjour à tous,

s'il y a une présentation spéciale, il serait bon que tu nous fasses un exemple avec les données que tu as sur cette feuille !

EDIT:
message modifié je n'avais pas vu qu'il y avait déjà une macro !
je ne suis pas encore réveillé !?
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

re

voir ci qq chose du genre convient !?
la version 1 avec Print #NoF, ValCell;
la version 2 avec Print #NoF, ValCell,
 

Pièces jointes

  • MdleExcel_Convert_txt1.xlsm
    17.9 KB · Affichages: 31
  • MdleExcel_Convert_txt2.xlsm
    18 KB · Affichages: 33
Dernière édition:

job75

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Bonjour Nyepalo, camarchepas, Roland_M,

Avec cette macro les colonnes du fichier texte créé seront bien alignées :

Code:
Sub FichierTexte()
Dim nomfich$, col As Range, L, c As Range
nomfich = "Texte.txt" 'nom à adapter
[B1,G1] = "R" & String(8, Chr(160))
[M1] = "R" & String(6, Chr(160))
Rows(1).Replace "é", "e", xlPart
For Each col In ActiveSheet.UsedRange.Columns
  L = 0
  For Each c In col.Cells
    If Len(c) > L Then L = Len(c)
  Next
  For Each c In col.Cells
    If Len(c) < L Then c = c & String(L - Len(c), Chr(160))
  Next
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & nomfich, xlText
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
Dans le bloc-notes, menu Format, décocher si nécessaire "Retour automatique à la ligne".

A+
 

camarchepas

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Bonjour à tous ,

Bravo Job , super solution hyper réutilisable , j'étais également partis sur une solution proche de notre ami Roland,

Clin d'oeil pour ta solution one shop en fin de traitement
 

job75

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Re,

Je n'avais pas vu la formule en J13...

Avant de modifier les données il faut donc supprimer les formules :

Code:
Sub FichierTexte()
Dim nomfich$, col As Range, L, c As Range
nomfich = "Texte.txt" 'nom à adapter
ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value 'supprime les formules
[B1,G1] = "R" & String(8, Chr(160))
[M1] = "R" & String(6, Chr(160))
Rows(1).Replace "é", "e", xlPart
For Each col In ActiveSheet.UsedRange.Columns
  L = 0
  For Each c In col.Cells
    If Len(c) > L Then L = Len(c)
  Next
  For Each c In col.Cells
    If Len(c) < L Then c = c & String(L - Len(c), Chr(160))
  Next
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & nomfich, xlText
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Re,

S'il y a beaucoup de données l'exécution sera beaucoup plus rapide avec un tableau VBA (matrice) :

Code:
Sub FichierTexte()
Dim nomfich$, t, h&, j%, L%, i&, x$
nomfich = "Texte.txt" 'nom à adapter
[B1,G1] = "R" & String(8, Chr(160))
[M1] = "R" & String(6, Chr(160))
Rows(1).Replace "é", "e", xlPart
t = ActiveSheet.UsedRange 'matrice, plus rapide
h = UBound(t)
For j = 1 To UBound(t, 2)
  L = 0
  For i = 1 To h
    x = t(i, j)
    If Len(x) > L Then L = Len(x)
  Next
  For i = 1 To h
    x = t(i, j)
    If Len(x) < L Then t(i, j) = x & String(L - Len(x), Chr(160))
  Next
Next
ActiveSheet.UsedRange = t
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & nomfich, xlText
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Re,

Il faut bien comprendre que l'alignement des colonnes est rendu possible par le fait que le bloc-notes utilise par défaut une police à chasse fixe, chez moi par exemple Lucida Console.

Avec une police à chasse variable on n'obtient pas le résultat souhaité.

A+
 

MJ13

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Bonjour à tous

On peut aussi enregistrer en .csv voire .txt.

Code:
Sub a()
ActiveWorkbook.SaveAs Filename:= _
        "C:\Temp\MdleExcel_Convert_txt.csv", FileFormat:=xlCSV, _
        CreateBackup:=False, local:=True
End Sub
 

Roland_M

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

re

avec l'excellente macro de job45
mais avec une copy de la feuille ce qui permet une sauvegarde séparée et de rester sur son classeur de base !

concernant la police à chasse fixe, j'utilise toujours courier new

Code:
Sub SaveFichierFormatTexte()
Dim NomFeuil$, NomFich$, Tablo As Variant, H&, J&, L&, I&, X$

' INIT .
NomFeuil = "Détail" '<<<<< nom de la feuil !?
NomFich = "Texte.txt" '<<< nom du fichier  !?

ThisWorkbook.Sheets(NomFeuil).Copy: DoEvents
With ActiveWorkbook.Sheets(NomFeuil)
 .Range("B1,G1") = "R" & String(8, Chr(160))
 .Range("M1") = "R" & String(6, Chr(160))
 .Rows(1).Replace "é", "e", xlPart
  Tablo = .UsedRange 'matrice, plus rapide
  H = UBound(Tablo)
End With

For J = 1 To UBound(Tablo, 2)
  L = 0
  For I = 1 To H
    X = Tablo(I, J)
    If Len(X) > L Then L = Len(X)
  Next
  For I = 1 To H
    X = Tablo(I, J)
    If Len(X) < L Then Tablo(I, J) = X & String(L - Len(X), Chr(160))
  Next
Next
ActiveSheet.UsedRange = Tablo
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & NomFich, xlText
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub
 

job75

XLDnaute Barbatruc
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

Re,

D'accord Roland, mais on peut aussi tout simplement rouvrir le fichier source :

Code:
Sub FichierTexte()
Dim nomfich$, nom$, t, h&, j%, L%, i&, x$
nomfich = "Texte.txt" 'nom à adapter
nom = ThisWorkbook.Name 'mémorise
Application.ScreenUpdating = False
Application.DisplayAlerts = False
[B1,G1] = "R" & String(8, Chr(160))
[M1] = "R" & String(6, Chr(160))
Rows(1).Replace "é", "e", xlPart
t = ActiveSheet.UsedRange 'matrice, plus rapide
h = UBound(t)
For j = 1 To UBound(t, 2)
  L = 0
  For i = 1 To h
    x = t(i, j)
    If Len(x) > L Then L = Len(x)
  Next
  For i = 1 To h
    x = t(i, j)
    If Len(x) < L Then t(i, j) = x & String(L - Len(x), Chr(160))
  Next
Next
ActiveSheet.UsedRange = t
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & nomfich, xlText
Workbooks.Open ThisWorkbook.Path & "\" & nom 'rouvre le fichier source
ThisWorkbook.Close
End Sub
A+
 

Nyepalo

XLDnaute Junior
Re : Extraire les données dans un teableau EXCEL vers Fichier *.TXT

D'abord un 1000 Mercis à vous tous,

J'ai testé tous vos modules, ils répondent à ma première préoccupation à savoir convertir tous les enregistrements (lignes du tableau). Reste à peaufiner l'alignement des colonnes et les espaces, à voir.
J'ai oublié cependant de préciser que la ligne entête n'est pas à prendre en compte, tout comme la dernière ligne. C'est juste pour aider à formater le tableau. Il y a une ligne entête à insérer dans le fichier sortie avec la date du jour de texte.
je mets le spécimen du fichier texte ici.
Je reviens la semaine prochaine avec mes adaptations à partir de ce que vous m'avez proposé.

Bien à vous.
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    36.8 KB · Affichages: 44
  • Capture.jpg
    Capture.jpg
    36.8 KB · Affichages: 57
  • Capture.jpg
    Capture.jpg
    36.8 KB · Affichages: 53

Discussions similaires

Réponses
8
Affichages
377
Réponses
2
Affichages
103

Statistiques des forums

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