beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 2017
-
20 mai 2009 à 13:55
beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 2017
-
20 mai 2009 à 14:48
Bonjour tout le monde,
J'ai ce code qui calcule le nombre de lignes dans mon fichier txt :
Dim Fichier As Variant, Ligne As String, c As Integer, Champs As Variant
Fichier = FreeFile
Open NomFichier For Input Access Read Lock Write As #Fichier
Line Input #Fichier, Ligne
While Not EOF(Fichier)
Line Input #Fichier, Ligne
NC = NC + 1
Wend
J'ai par exemple 197 lignes
Je redimensionne un tableau avec le résultat de NC :
ReDim NomsDesCrus(1 To NC)
Je me demandais comment je pouvais remettre le fichier au début ?
J'ai essayé BOF mais ça ne fonctionne pas.
Si je le laisse telle quelle, j' ai ce message d'erreur :
L'entrée dépasse la fin du fichier
Voici le code qui pose problème :
For c = 1 To NC
Line Input #Fichier, Ligne
Champs = Split(Ligne)
If Champs(0) = "" Then
MsgBox "Nom d'oenologue invalide"
Exit Function
End If
If Rechercher(NomsDesCrus, Champs(0)) Then GoTo ErreurLecture
NomsDesCrus(c) = Champs(1)
Next c
Close #Fichier
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 20 mai 2009 à 14:28
ca m'importe correctement les 198 références...
Option Explicit
Private Type Wine
Cru As String
Quantite As Single
End Type
Private Sub Form_Load()
Dim xtWines() As Wine
Dim nCount As Long
Dim i As Long
Me.Show
DoEvents
nCount = ReadWineFile("C:\a.txt", xtWines)
If nCount Then
For i = 0 To nCount - 1
Me.Print xtWines(i).Cru & " en stock: " & FormatNumber(xtWines(i).Quantite, 2)
Next i
Else
MsgBox "Aucun vin trouvé. Le fichier est vide ou non conforme.", vbExclamation
End If
End Sub
Private Function ReadWineFile(ByRef vsFilePath As String, ByRef vxtWines() As Wine) As Long
Dim sBuffer As String
Dim iFile As Integer
Dim oMatch As Object
Dim oMatches As Object
Dim i As Long
iFile = FreeFile
Open vsFilePath For Input As #iFile
sBuffer = Input(LOF(iFile), #iFile)
Close #iFile
If ReadWineFile Then
ReDim vxtWines(ReadWineFile - 1)
For Each oMatch In oMatches
vxtWines(i).Cru = oMatch.submatches(0)
vxtWines(i).Quantite = Val(oMatch.submatches(1))
i = i + 1
Next oMatch
End If
End With
End Function
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 20 mai 2009 à 14:15
A vérifier, mais je ne pense pas qu'on puisse utiliser Seek sur les fichiers ouverts en mode texte.
A mon avis, ce n'est utilisable que les fichiers accessibles en Random, ce qui impose un format de donnée à longueur fixe (non applicable ici)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)