Fichier texte

Francois73

XLDnaute Occasionnel
Bonjour le forum

j'ai un petit souci, je cherche à exporter le contenu d'une feuille en txt, le fichier txt crée est utilisé pour entrer dans un autre logiciel. le souci il m'exporte bien les lignes non vides en txt, mais aussi toutes les cellules vides.
y a t'il un moyen de n'exporter que les cellules non vide.
ci joint un exemple de mon fichier

merci de votre aide
 

Pièces jointes

  • essais.xlsm
    16.7 KB · Affichages: 24
  • essais.xlsm
    16.7 KB · Affichages: 30
  • essais.xlsm
    16.7 KB · Affichages: 33

Staple1600

XLDnaute Barbatruc
Re : Fichier texte

Bonjour à tous


François73
Ton fichier ne contient pas de données (à part en A1)
(Il y a bien ton code VBA)
Mais sans données, difficile de faire un test, non ?

EDITION: Sinon ce code issu de l'enregistreur de macros fait le job
(avec comme séparateur la tabulation, et en prenant en compte que les lignes non vides)
Code:
Sub Macro1()
'adapter le chemin et nom du fichier texte selon vos besoins
ActiveWorkbook.SaveAs Filename:="C:\Temp\Classeur1.txt", FileFormat:=xlText
End Sub
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Fichier texte

Bonjour

comme ceci ???

Code:
Sub Savetxt()
 Sheets("Fichier texte").Select
 Dim c As Variant
 Dim fFilename As String
 Dim a As Integer, b As Integer
 Dim tmP As String
 Dim Separateur As String
 Dim derl As Integer
 'Tu choisis le séparateur de ton choix
 Separateur = vbTab
 'Plage à copier
 derl = Range("a65536").End(xlUp).Row + 1
 With Worksheets("Fichier texte")
     c = Range("A1:k" & derl)
 End With
 Application.DefaultFilePath = Application.DefaultFilePath = "C:\Users\courbois_f\Documents\ECRITURE EXCEL LACTO\lacto siege"
 fFilename = _
 Application.GetSaveAsFilename(InitialFileName:="R_", _
 fileFilter:="Text Files (*.txt), *.txt")
 Open fFilename For Output As #1
 For a = 1 To UBound(c, 1)
 tmP = ""
     For b = 1 To UBound(c, 2)
         If tmP > "" Then
             tmP = tmP & Separateur & c(a, b)
         Else
             tmP = c(a, b)
         End If
     Next
         Print #1, tmP
 Next
     Close #1
     Erase c
 End Sub

dans la page colonne A, il y a des fonctions jusqu'en ligne 21 !!!!!! :cool:
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Fichier texte

Bonjour Gilbert RGI

Effectivement j'avais point vu les formules.
Désolé :eek:.

Mais la fonctionnalité
Enregistrer sous
Type: Texte(séparateur:Tabulation)(*.txt)(*.txt)
(pilotée en VBA- voir mon message précédent) ne suffit-elle pas dans le cas présent ?
 

Francois73

XLDnaute Occasionnel
Re : Fichier texte

bonjour et merci pour ces réponses, effectivement je n'avais pas laissé les données (désolé)
j'ai appliqué la macro de Gilbert_RGI (merci) il reste un souci j'ai deux lignes vides en fin de texte (essais.txt)
je joins les deux fichiers , le classeur excel source avec les données, effectivement elles ne sont présentes qu'en colonne A, par contre le nombre de ligne varient (impossible de connaître ce nombre à l'avance) et le fichier txt que je récupère



merci à vous
 

Pièces jointes

  • essais.xlsm
    15.6 KB · Affichages: 30
  • R_ESSAIS.txt
    1.4 KB · Affichages: 20
  • essais.xlsm
    15.6 KB · Affichages: 30
  • essais.xlsm
    15.6 KB · Affichages: 33

gilbert_RGI

XLDnaute Barbatruc
Re : Fichier texte

Voilà
Code:
Sub Savetxt()
  Sheets("Fichier texte").Select
  Dim c As Variant
  Dim fFilename As String
  Dim a As Integer, b As Integer
  Dim tmP As String
  Dim Separateur As String
  Dim derl As Integer
  'Tu choisis le séparateur de ton choix
  Separateur = vbTab
  'Plage à copier
  derl = Range("a65536").End(xlUp).Row
  With Worksheets("Fichier texte")
      c = Range("A1:k" & derl)
  End With
  Application.DefaultFilePath = Application.DefaultFilePath ="C:\Users\courbois_f\Documents\ECRITURE EXCEL LACTO\lacto siege"
  fFilename = _
  Application.GetSaveAsFilename(InitialFileName:="R_", _
  fileFilter:="Text Files (*.txt), *.txt")
  Open fFilename For Output As #1
  For a = 1 To UBound(c, 1)
  tmP = ""
      For b = 1 To UBound(c, 2) - 1
          If tmP > "" Then
              tmP = tmP & Separateur & c(a, b)
          Else
              tmP = c(a, b)
          End If
      Next
          Print #1, tmP
  Next
      Close #1
      Erase c
  End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 571
Messages
2 089 797
Membres
104 275
dernier inscrit
Manu974