Fichier text

Le
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 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
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Clive Lumb
Le #14757371
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" 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



Fournier Raymond
Le #14757361
"Clive Lumb" 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" 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








ng
Le #14757291
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
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


Publicité
Poster une réponse
Anonyme