XL 2016 Ecriture dans un fichier existant

David73

XLDnaute Nouveau
Bonjour,
je souhaite écrire du texte à la fin d'un fichier.
Cela marche mais les lignes du début du fichier sont supprimées.
Si quelqu'un a une idée ??

VB:
NomFichier = Chemin_PIL & "FICHIER.TXT"
    Set FSO = New Scripting.FileSystemObject   'Instanciation du FSO'
    Set Txt = FSO.OpenTextFile(NomFichier, ForAppending, True)
    Txt.WriteLine "suite"
    Txt.Close
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoiur @David73 ,

Un exemple:
VB:
Sub AjouterDansFichier()
Dim nfic&

   nfic = FreeFile
   Open ThisWorkbook.Path & "\fichier.txt" For Append As #nfic    'chemin et nom du fichier à adapter
   Print #nfic,    'insère un saut de ligne - facultatif - dépend du fichier texte
   Print #nfic, "La suite n° 1"
   Print #nfic, "La suite n° 2"
   Close #nfic
End Sub

Deux fichiers:
  • le .xlsm qui contient le code à exécuter (dans module1)
  • le .txt à mettre dans le répertoire du fichier .xlsm
 

Pièces jointes

  • David73- Fichier Append- v1.xlsm
    13.6 KB · Affichages: 0
  • Fichier.txt
    25 bytes · Affichages: 1
Dernière édition:

job75

XLDnaute Barbatruc
Bonsoir David73, kiki29; mapomme,

Effectivement avec Append ça ne va pas toujours bien.

Avec ce code pas de problème :
VB:
Sub Ajout()
Dim fichier$, texte$, n%, a(), i&
fichier = ThisWorkbook.Path & "\FICHIER.txt" 'à adapter
texte = "Bonsoir"
n = FreeFile
'---lecture---
Open fichier For Input As #n
While Not EOF(n)
    ReDim Preserve a(i)
    Line Input #n, a(i)
    i = i + 1
Wend
Close #n
a(i - 1) = a(i - 1) & vbLf & texte 'modifie la dernière ligne
'---écriture---
Open fichier For Output As #n
For i = 0 To UBound(a)
    Print #n, a(i)
Next
Close #n
MsgBox "Ajout de '" & texte & "' effectué..."
End Sub
Téléchargez les fichiers joints dans le même dossier (le bureau).

Bonne nuit.
 

Pièces jointes

  • Pilote(1).xlsm
    16.6 KB · Affichages: 5
  • FICHIER.txt
    13 bytes · Affichages: 6

David73

XLDnaute Nouveau
Bonsoiur @David73 ,

Un exemple:
VB:
Sub AjouterDansFichier()
Dim nfic&

   nfic = FreeFile
   Open ThisWorkbook.Path & "\fichier.txt" For Append As #nfic    'chemin et nom du fichier à adapter
   Print #nfic,    'insère un saut de ligne - facultatif - dépend du fichier texte
   Print #nfic, "La suite n° 1"
   Print #nfic, "La suite n° 2"
   Close #nfic
End Sub

Deux fichiers:
  • le .xlsm qui contient le code à exécuter (dans module1)
  • le .txt à mettre dans le répertoire du fichier .xlsm
Merci beaucoup pour ta réponse mais cela ne marche pas ; les 200 premières lignes (environ) ne sont pas ré-écrites...
 

David73

XLDnaute Nouveau
Bonsoir David73, kiki29; mapomme,

Effectivement avec Append ça ne va pas toujours bien.

Avec ce code pas de problème :
VB:
Sub Ajout()
Dim fichier$, texte$, n%, a(), i&
fichier = ThisWorkbook.Path & "\FICHIER.txt" 'à adapter
texte = "Bonsoir"
n = FreeFile
'---lecture---
Open fichier For Input As #n
While Not EOF(n)
    ReDim Preserve a(i)
    Line Input #n, a(i)
    i = i + 1
Wend
Close #n
a(i - 1) = a(i - 1) & vbLf & texte 'modifie la dernière ligne
'---écriture---
Open fichier For Output As #n
For i = 0 To UBound(a)
    Print #n, a(i)
Next
Close #n
MsgBox "Ajout de '" & texte & "' effectué..."
End Sub
Téléchargez les fichiers joints dans le même dossier (le bureau).

Bonne nuit.
Effectivement cela marche ... même si cela impose de tout ré-écécrire donc légère perte de temps pour des fichiers très longs...
 

Discussions similaires