OVH Cloud OVH Cloud

se positionner en debut de fichier

4 réponses
Avatar
damnou
Bonjour,
en VBA j'ouvre un fichier avec l'intruction
OPEN "fichier.txt" FOR OUTPUT AS #1
je lis le fichier sequentellement mais je voudrais pouvoir me positionner
- soit au debut pour recommencer une lecture
- soit a la fin pour pouvoir ajouter un enregistrement

si quelqu'un a une solution , merci d'avance

DAMNOU

4 réponses

Avatar
Clément Marcotte
Bonjour,

en VBA j'ouvre un fichier avec l'intruction
OPEN "fichier.txt" FOR OUTPUT AS #1


Je serais très surpris que tu sois capable de lire un fichier avec
Output, parce qu'output c'est pour écrire. Ceci dit, ce serait
peut-être avec FileSystemObject et avec la méthode OpenAsTextStream.

Peut-être qu'en ce dont tu as besoin...


"damnou" a écrit dans le message de
news:%23$$
Bonjour,
je lis le fichier sequentellement mais je voudrais pouvoir me
positionner

- soit au debut pour recommencer une lecture
- soit a la fin pour pouvoir ajouter un enregistrement

si quelqu'un a une solution , merci d'avance

DAMNOU




Avatar
PMO
Bonjour,

Voici un code à faire tourner et qui vous servira d'exemple.
Faites le tourner pas à pas pour mieux vous rendre compte.

'*******************
Option Explicit
'---- Chemin et nom du fichier ----
'---- Changez la valeur de la ----
'---- constance à votre convenance ----
Const nomFichier As String = "c:wxyz.txt"
'____________________________________
Sub LireTout()
Dim Libre As Byte
Dim A$
Dim T()
Dim i&
On Error GoTo Erreur
Libre = FreeFile
'#### Lecture ####
'---- Si fichier introuvable Erreur 53 ----
Open nomFichier For Input As #Libre
Do While Not EOF(Libre)
'°°°° Lit toute la ligne entière °°°°
Line Input #Libre, A$
i& = i& + 1
'°°°° Tableau des données pour les reécrire °°°°
ReDim Preserve T(1 To i&)
T(i&) = A$
Loop
Close #Libre
'#### Ecriture ####
Ecrire:
'°°°° Demande de données °°°°
A$ = "pseudo valeur"
Do Until A$ = ""
A$ = InputBox(prompt:="Tapez une donnée", _
Title:="Données à écrire dans " & nomFichier & "")
If A$ = "" Then Exit Do
'°°°° Tableau des données °°°°
ReDim Preserve T(1 To i& + 1)
T(UBound(T)) = A$
i& = i& + 1
Loop
'°°°° Ecrit les anciennes et nouvelles données °°°°
Open nomFichier For Output As #Libre
For i& = 1 To UBound(T)
Print #Libre, T(i&)
Next i&
Close #Libre
Exit Sub
Erreur:
If Err = 53 Then GoTo Ecrire
End Sub
'*********************

Est-ce que ça répond à votre question ?

Cordialement.

PMO
Patrick Morange






Bonjour,
en VBA j'ouvre un fichier avec l'intruction
OPEN "fichier.txt" FOR OUTPUT AS #1
je lis le fichier sequentellement mais je voudrais pouvoir me positionner
- soit au debut pour recommencer une lecture
- soit a la fin pour pouvoir ajouter un enregistrement

si quelqu'un a une solution , merci d'avance

DAMNOU





Avatar
Clément Marcotte
Bonjour,
Sub LireOuAjouter()
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso As Object, fichier As Object, laligne
Dim lefichier As Object, i As Integer
Dim byebye As Boolean, lareponse As String, jsuistanne As Integer
Set fso = CreateObject("scripting.filesystemobject")
Set fichier = fso.GetFile("c:mes documentslebeaufichiertexte.txt")
Do
lareponse = InputBox("Désirez vous (L)ire ou (A)jouter le(au) fichier
?" & vbNewLine & "Cliquez sur Annuler pour terminer", _ "Choix de
l'action à effectuer")
Select Case UCase(lareponse)
Case "A"
Set lefichier = fichier.openastextstream(ForAppending)
lefichier.WriteLine "Ligne ajoutée ici"
lefichier.Close
Set lefichier = Nothing
Case "L"
Set lefichier = fichier.openastextstream(ForReading)
i = 1
Do While Not lefichier.AtEndOfStream
laligne = lefichier.ReadLine
ligneseparee = Split(laligne, ";")
For j = 0 To UBound(ligneseparee)
Cells(i, j + 1).Value = ligneseparee(j)
Next
i = i + 1
Loop
Case ""
'cliquer sur "Annuler pour terminer le programme
Exit Sub
Case Else
Select Case jsuistanne
Case vbOK
byebye = False
Case vbCancel
End
Case Else
End Select
End Select
Loop Until byebye
End Sub


"damnou" a écrit dans le message de
news:%23$$
Bonjour,
en VBA j'ouvre un fichier avec l'intruction
OPEN "fichier.txt" FOR OUTPUT AS #1
je lis le fichier sequentellement mais je voudrais pouvoir me
positionner

- soit au debut pour recommencer une lecture
- soit a la fin pour pouvoir ajouter un enregistrement

si quelqu'un a une solution , merci d'avance

DAMNOU




Avatar
micosof.com
Bonjour,
en VBA j'ouvre un fichier avec l'intruction
OPEN "fichier.txt" FOR OUTPUT AS #1
je lis le fichier sequentellement mais je voudrais pouvoir me positionner
- soit au debut pour recommencer une lecture
- soit a la fin pour pouvoir ajouter un enregistrement

si quelqu'un a une solution , merci d'avance

DAMNOU


Merci a Clement Marcotte et PMO pour vos reponses


en effet, pour se positionner au debut il faut fermer et reouvrir le
fichier avec "FOR INPUT" et pour se positionner en fin il faut le fermer
et reouvrir avec "FOR APPEND"

A+
Damnou