Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier text

3 réponses
Avatar
Fournier Raymond
Bonjour a tous,
Lorsque j'ajoute une ligne dans un fichier text et que je le relie
il y a le double de ligne qui y a dans le fichier.

Lors de la lecture la premiere fois je retrouve dans mon tableau

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5

ceci est exactement le contenu de mon fichier text. Je rajoute Allo
et j'obtient

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5
Allo 6
7
8
9
10
11
12
Voici mon code si quelqu'un a une idée

--------------------------------------------------------------------
Dans un Module

Public Sub LireFichierTextEtPlacerDansUnTableau(ByRef NomDuFichier As
String, _
ByRef NomDuTableau As
Variant, _
ByVal NiveauInfDuTableau
As Integer)

Dim hFile As Integer
Dim LigneItemTab As Long

hFile = FreeFile
LigneItemTab = 0

Open "D:\Visual Basic V6\Programmes VB\Epicerie\" & NomDuFichier For
Input As #hFile
Do While Not EOF(hFile) ' Effectue la boucle jusqu'à la fin du
fichier.
Line Input #hFile, TextLine
'Ajoute l'item dans le tableau.
NomDuTableau(LigneItemTab) = TextLine

ReDim Preserve NomDuTableau(UBound(NomDuTableau) + 1)
LigneItemTab = LigneItemTab + 1
Loop
Close #hFile

End Sub

Public Sub AjouterUneLigneAuFichier(ByRef NomDuFichier As String, _
ByVal NouvelleLigne As String)

Dim hFile As Integer

hFile = FreeFile

Open "D:\Visual Basic V6\Programmes VB\Epicerie\" & NomDuFichier For
Append As #hFile
Print #hFile, NouvelleLigne
Close #hFile

End Sub
-----------------------------------------------------------------------

Et dans ma form

Dim tabX() As String

Private Sub Command1_Click()

Call ModFichierText.AjouterUneLigneAuFichier("ItemsTest2.txt",
Text1.Text)
Call lire

End Sub

Private Sub Form_Load()

ReDim tabX(0)
Call lire

End Sub
Private Sub lire()

Call ModFichierText.LireFichierTextEtPlacerDansUnTableau
("ItemsTest2.txt", tabX(), 0)

Debug.Print
For i = LBound(tabX) To UBound(tabX)
Debug.Print tabX(i), i
Next i

End Sub


------------------------------------------------------------------------

Merci de votre aide

Raymond Fournier

3 réponses

Avatar
Clive Lumb
Raymond,

Ton problème vient du fait que la deuxième fois que tu lances la lecture du
fichier (après l'ajout de la ligne) ton tableau "tabX()" est déjà rempli.
Le Redim Preserve ajoute des entrées à la fin.

Pour éviter ce problème, placer un "Redim tabX(0)" au debut de ton sub
lire() .

Clive

"Fournier Raymond" <duracelle(Enlever-ceci)@sympatico.ca> a écrit dans le
message de news:
Bonjour a tous,
Lorsque j'ajoute une ligne dans un fichier text et que je le relie
il y a le double de ligne qui y a dans le fichier.

Lors de la lecture la premiere fois je retrouve dans mon tableau

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5

ceci est exactement le contenu de mon fichier text. Je rajoute Allo
et j'obtient

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5
Allo 6
7
8
9
10
11
12
Voici mon code si quelqu'un a une idée

--------------------------------------------------------------------
Dans un Module

Public Sub LireFichierTextEtPlacerDansUnTableau(ByRef NomDuFichier As
String, _
ByRef NomDuTableau As
Variant, _
ByVal NiveauInfDuTableau
As Integer)

Dim hFile As Integer
Dim LigneItemTab As Long

hFile = FreeFile
LigneItemTab = 0

Open "D:Visual Basic V6Programmes VBEpicerie" & NomDuFichier For
Input As #hFile
Do While Not EOF(hFile) ' Effectue la boucle jusqu'à la fin du
fichier.
Line Input #hFile, TextLine
'Ajoute l'item dans le tableau.
NomDuTableau(LigneItemTab) = TextLine

ReDim Preserve NomDuTableau(UBound(NomDuTableau) + 1)
LigneItemTab = LigneItemTab + 1
Loop
Close #hFile

End Sub

Public Sub AjouterUneLigneAuFichier(ByRef NomDuFichier As String, _
ByVal NouvelleLigne As String)

Dim hFile As Integer

hFile = FreeFile

Open "D:Visual Basic V6Programmes VBEpicerie" & NomDuFichier For
Append As #hFile
Print #hFile, NouvelleLigne
Close #hFile

End Sub
-----------------------------------------------------------------------

Et dans ma form

Dim tabX() As String

Private Sub Command1_Click()

Call ModFichierText.AjouterUneLigneAuFichier("ItemsTest2.txt",
Text1.Text)
Call lire

End Sub

Private Sub Form_Load()

ReDim tabX(0)
Call lire

End Sub
Private Sub lire()

Call ModFichierText.LireFichierTextEtPlacerDansUnTableau
("ItemsTest2.txt", tabX(), 0)

Debug.Print
For i = LBound(tabX) To UBound(tabX)
Debug.Print tabX(i), i
Next i

End Sub


------------------------------------------------------------------------

Merci de votre aide

Raymond Fournier



Avatar
Fournier Raymond
"Clive Lumb" wrote in
news::

Merci Beaucoup ca fonctionne parfaitement

Bonne fin de semaine.
Raymond Fournier


Raymond,

Ton problème vient du fait que la deuxième fois que tu lances la
lecture du fichier (après l'ajout de la ligne) ton tableau "tabX()"
est déjà rempli. Le Redim Preserve ajoute des entrées à la fin.

Pour éviter ce problème, placer un "Redim tabX(0)" au debut de ton sub
lire() .

Clive

"Fournier Raymond" <duracelle(Enlever-ceci)@sympatico.ca> a écrit dans
le message de
news:
Bonjour a tous,
Lorsque j'ajoute une ligne dans un fichier text et que je le
relie
il y a le double de ligne qui y a dans le fichier.

Lors de la lecture la premiere fois je retrouve dans mon tableau

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5

ceci est exactement le contenu de mon fichier text. Je rajoute Allo
et j'obtient

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5
Allo 6
7
8
9
10
11
12
Voici mon code si quelqu'un a une idée

--------------------------------------------------------------------
Dans un Module

Public Sub LireFichierTextEtPlacerDansUnTableau(ByRef NomDuFichier As
String, _
ByRef NomDuTableau As
Variant, _
ByVal
NiveauInfDuTableau
As Integer)

Dim hFile As Integer
Dim LigneItemTab As Long

hFile = FreeFile
LigneItemTab = 0

Open "D:Visual Basic V6Programmes VBEpicerie" & NomDuFichier
For
Input As #hFile
Do While Not EOF(hFile) ' Effectue la boucle jusqu'à la fin
du
fichier.
Line Input #hFile, TextLine
'Ajoute l'item dans le tableau.
NomDuTableau(LigneItemTab) = TextLine

ReDim Preserve NomDuTableau(UBound(NomDuTableau) + 1)
LigneItemTab = LigneItemTab + 1
Loop
Close #hFile

End Sub

Public Sub AjouterUneLigneAuFichier(ByRef NomDuFichier As String, _
ByVal NouvelleLigne As String)

Dim hFile As Integer

hFile = FreeFile

Open "D:Visual Basic V6Programmes VBEpicerie" & NomDuFichier
For
Append As #hFile
Print #hFile, NouvelleLigne
Close #hFile

End Sub





----------------------------------------------------------------------
-

Et dans ma form

Dim tabX() As String

Private Sub Command1_Click()

Call ModFichierText.AjouterUneLigneAuFichier("ItemsTest2.txt",
Text1.Text)
Call lire

End Sub

Private Sub Form_Load()

ReDim tabX(0)
Call lire

End Sub
Private Sub lire()

Call ModFichierText.LireFichierTextEtPlacerDansUnTableau
("ItemsTest2.txt", tabX(), 0)

Debug.Print
For i = LBound(tabX) To UBound(tabX)
Debug.Print tabX(i), i
Next i

End Sub







----------------------------------------------------------------------
--

Merci de votre aide

Raymond Fournier








Avatar
ng
Salut,

Quelques remarques :

ByRef NomDuTableau As Variant


Si c'est toujours du tbl de string, pourquoi ne pas le typer ainsi ?
=> ByRef NomDuTableau() As String

Open "D:Visual Basic V6Programmes VBEpicerie" & NomDuFichier For



Pourquoi ne pas définir une variable public pour le chemin de l'appli dans
un module :

Public sAppChe as String

'et lui définir dynamiquement sa valeur dans la sub main (ou la form_load de
la première form) :

If Right$(App.Path, 1) = "" Then sAppChe = App.Path Else sAppChe = App.Path
& ""


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Fournier Raymond <duracelle(Enlever-ceci)@sympatico.ca> a écrit :

Bonjour a tous,
Lorsque j'ajoute une ligne dans un fichier text et que je le relie
il y a le double de ligne qui y a dans le fichier.

Lors de la lecture la premiere fois je retrouve dans mon tableau

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5

ceci est exactement le contenu de mon fichier text. Je rajoute Allo
et j'obtient

Banane 1
Carotte 2
Poulet 3
Hotdog 4
Revue 5
Allo 6
7
8
9
10
11
12
Voici mon code si quelqu'un a une idée

--------------------------------------------------------------------
Dans un Module

Public Sub LireFichierTextEtPlacerDansUnTableau(ByRef NomDuFichier As
String, _
ByRef NomDuTableau As
Variant, _
ByVal
NiveauInfDuTableau As Integer)

Dim hFile As Integer
Dim LigneItemTab As Long

hFile = FreeFile
LigneItemTab = 0

Open "D:Visual Basic V6Programmes VBEpicerie" & NomDuFichier
For Input As #hFile
Do While Not EOF(hFile) ' Effectue la boucle jusqu'à la fin du
fichier.
Line Input #hFile, TextLine
'Ajoute l'item dans le tableau.
NomDuTableau(LigneItemTab) = TextLine

ReDim Preserve NomDuTableau(UBound(NomDuTableau) + 1)
LigneItemTab = LigneItemTab + 1
Loop
Close #hFile

End Sub

Public Sub AjouterUneLigneAuFichier(ByRef NomDuFichier As String, _
ByVal NouvelleLigne As String)

Dim hFile As Integer

hFile = FreeFile

Open "D:Visual Basic V6Programmes VBEpicerie" & NomDuFichier
For Append As #hFile
Print #hFile, NouvelleLigne
Close #hFile

End Sub
-----------------------------------------------------------------------

Et dans ma form

Dim tabX() As String

Private Sub Command1_Click()

Call ModFichierText.AjouterUneLigneAuFichier("ItemsTest2.txt",
Text1.Text)
Call lire

End Sub

Private Sub Form_Load()

ReDim tabX(0)
Call lire

End Sub
Private Sub lire()

Call ModFichierText.LireFichierTextEtPlacerDansUnTableau
("ItemsTest2.txt", tabX(), 0)

Debug.Print
For i = LBound(tabX) To UBound(tabX)
Debug.Print tabX(i), i
Next i

End Sub


------------------------------------------------------------------------

Merci de votre aide

Raymond Fournier