XL 2013 Aide sur sauvegarde en TXT par VBA

Fave

XLDnaute Junior
Bonjour à toutes et tous,

J'ai un souci avec un code VBA.

Je veux sauvegarder tout le contenu d'une feuille dans un fichier txt, jusqu'à la dernière ligne contenant des valeurs. Le souci c'est que cela me créer des espaces après la dernière valeur alors que je souhaite que mon curseur n'aille pas plus loin de la dernière valeur trouvée.
J'espère me faire bien comprendre... lol

Voici le code qui, j'en suis sur, peut être amélioré !!! :D

Code:
Sub Ecrire()
Dim i, j, DernièreLigne, DernièreColonne, f As Worksheet
Set f = ActiveSheet
With Sheets("Feuil1")
    DerniereLigne = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
    DerniereColonne = .Range("A1").SpecialCells(xlCellTypeLastCell).Column
    End With
    chemin = "G:\xxxxxx\xxxxxx\"
    Open chemin & "Report.txt" For Output As #1
    For i = 1 To DerniereLigne
        For j = 1 To DerniereColonne - 1
            Print #1, f.Cells(i, j).Formula;
        Next j
        Print #1, f.Cells(i, j + 1).Value
    Next i
    Close #1
    'commande ouverture notepad
    Shell "C:\Windows\System32\notepad.exe " & chemin & "Report.txt"
End Sub

En pj, 2 fichiers :
report.txt = celui généré par la macro
final = résultat souhaité (avec le curseur après la dernière valeur et sans espace vers le bas)...
 

youky(BJ)

XLDnaute Barbatruc
Re : Aide sur sauvegarde en TXT par VBA

Bonjour Lone-wolf,
Fave, je crois qu'il faut trouer la dernierecolonne de chaque ligne
Voici
Code:
Sub Ecrire()
Dim i, j, DernièreLigne, DernièreColonne, f As Worksheet
Set f = ActiveSheet
With Sheets("Feuil1")
    DerniereLigne = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
    'DerniereColonne = .Range("A1").SpecialCells(xlCellTypeLastCell).Column
    End With
    chemin = "G:\xxxxxx\xxxxxx\"
    Open chemin & "Report.txt" For Output As #1
    For i = 1 To DerniereLigne
'.Cells(i, 256).End(1).Column renvoie la dercol de la ligne i
        For j = 1 To .Cells(i, 256).End(1).Column 'DerniereColonne - 1
            Print #1, f.Cells(i, j).Formula;
        Next j
        Print #1, f.Cells(i, j + 1).Value
    Next i
    Close #1
    'commande ouverture notepad
    Shell "C:\Windows\System32\notepad.exe " & chemin & "Report.txt"
End Sub
Bruno
 

Fave

XLDnaute Junior
Re : Aide sur sauvegarde en TXT par VBA

Bonjour Lone-wolf,

Oui, il s'agit bien de 2 fichiers différents.

La différence étant ce fameux curseur que je peux descendre dans le fichier "report" alors que je souhaite qu'il ne puisse aller que jusquà la dernière valeur voir la ligne immédiate en dessous comme dans le fichier "final".

C'est d'ailleurs pour ça que j'ai besoin de toutes vos lumières car ce fichier texte est utilisé dans un autre programme qui ne tolère pas les espaces après la dernière valeur... ;)
 

Fave

XLDnaute Junior
Re : Aide sur sauvegarde en TXT par VBA

Bonjour à tous,

Désolé pour la réponse tardive.

youky(BJ), merci pour l'intérêt que tu portes à mon souci et pour ton aide.
Je viens de tester ta solution mais j'ai une erreur de compilation (Référence incorrecte ou non qualifiée).

A quoi est-ce que cela pourrait être du ?

Bonne journée,
 

youky(BJ)

XLDnaute Barbatruc
Re : Aide sur sauvegarde en TXT par VBA

Re bonjour,
J'ai peut être été un peu vite, il y avait des bugs dés le départ
J'ai rectifié mais n'ai pas testé.
Pense à modifier le chemin
Bruno
Code:
Sub Ecrire()
Dim i, j, DernièreLigne, DernièreColonne, f As Worksheet
With Sheets("Feuil1")
    DerniereLigne = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
    chemin = "G:\xxxxxx\xxxxxx\"
    Open chemin & "Report.txt" For Output As #1
    For i = 1 To DerniereLigne
        For j = 1 To .Cells(i, 256).End(1).Column 'To DerniereColonne de la ligne
            Print #1, .Cells(i, j)
        Next j
        Print #1, .Cells(i, j + 1)
    Next i
    Close #1
End With
    'commande ouverture notepad
    Shell "C:\Windows\System32\notepad.exe " & chemin & "Report.txt"
End Sub
 

Fave

XLDnaute Junior
Re : Aide sur sauvegarde en TXT par VBA

Bonjour à tous,
Bonjour youky(BJ),

Je viens de tester ton code et je suis désolé mais cela ne fonctionne pas. Je peux toujours descendre mon curseur bien plus bas que la dernière valeur... :(
De plus, cela me génère une ligne entre chaque valeur (voir ici)... :confused:

En tout cas, merci pour tes efforts !!! :eek:

Bonne journée,
 

youky(BJ)

XLDnaute Barbatruc
Re : Aide sur sauvegarde en TXT par VBA

Bon cette fois c'est la bonne .
J'avais pas testé.
Maintenant c'est bon remets le chemin
Bruno
Code:
Sub Ecrire()
Dim i, j, DernièreLigne, DernièreColonne, tx, f As Worksheet

With Sheets("Feuil1")
    DerniereLigne = .[A65000].End(3).Row
    chemin = ThisWorkbook.Path & "\"  '"G:\xxxxxx\xxxxxx\"
    Open chemin & "Report.txt" For Output As #1
    For i = 1 To DerniereLigne
        For j = 1 To .Cells(i, 256).End(1).Column 'To DerniereColonne de la ligne
           tx = tx & .Cells(i, j) & ";"
        Next j
        tx = Left(tx, Len(tx) - 1)
        Print #1, tx
        tx = ""
    Next i
    Close #1
End With
    'commande ouverture notepad
    Shell "C:\Windows\System32\notepad.exe " & chemin & "Report.txt"
End Sub
 

youky(BJ)

XLDnaute Barbatruc
Re : Aide sur sauvegarde en TXT par VBA

Non faut rien enlever !
Le ; se mets car il y a une donnée invisible dans la cellule
J'ai ajouté un For Next pour supprimer les valeurs avec 1 seul caractère en début de procédure
Bruno
Code:
Sub Ecrire()
Dim i, j, DernièreLigne, DernièreColonne, tx, f As Worksheet
With Sheets("Feuil1")
For i = 1 To.range("A" & rows.count).end(3).row
If Len(.Cells(i, 1)) < 2 Then Exit For
Next
    DerniereLigne = i
    chemin = ThisWorkbook.Path & "\"  '"G:\xxxxxx\xxxxxx\"
    Open chemin & "Report.txt" For Output As #1
    For i = 1 To DerniereLigne
        For j = 1 To .Cells(i, 256).End(1).Column
        tx = tx & .Cells(i, j) & ";"
        Next j
        tx = Left(tx, Len(tx) - 1)
        Print #1, tx
        tx = ""
    Next i
    Close #1
End With
    'commande ouverture notepad
    Shell "C:\Windows\System32\notepad.exe " & chemin & "Report.txt"
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re : Aide sur sauvegarde en TXT par VBA

Fave, je crois qu'il faut trouer la dernierecolonne de chaque ligne

Fave...surtout ne fait pas ça!!! effraye.gif Sinon l'encre va couler!! lone-wf.gif
 

Pièces jointes

  • effraye.gif
    effraye.gif
    10.2 KB · Affichages: 44
  • lone-wf.gif
    lone-wf.gif
    4.9 KB · Affichages: 37

Discussions similaires

Réponses
2
Affichages
449
J
Réponses
39
Affichages
3 K
J
Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT