daniel-12 | Bonjour
je souhaite lire le contenu d'un fichier texte et récupérer des informations dedans
le fichier texte est compose de ce genre de ligne
D53110000%toto
D53110000%titi
il y a 100 000 lignes
j'ai une listview avec les n° en colonne 1 je voudrais mettre les toto et titi en colonne 2
dans le cas bien sur ou le n° est connu
ce code mets 3s pour 10 n°
Code :
- Private Sub CommandButton1_Click()
- Dim tp!
- tp = Timer
- ListView1.ListItems.Clear
- ListView1.ListItems.Add , , "D53110000"
- ListView1.ListItems.Add , , "D53110001"
- ListView1.ListItems.Add , , "D53110002"
- ListView1.ListItems.Add , , "D53110003"
- ListView1.ListItems.Add , , "D53110004"
- ListView1.ListItems.Add , , "D53110005"
- ListView1.ListItems.Add , , "D53110006"
- ListView1.ListItems.Add , , "D53110007"
- ListView1.ListItems.Add , , "D53110008"
- ListView1.ListItems.Add , , "D53110009"
- FichierBDD = Environ("userprofile";) & "DocumentsBDD MacroControleDeroplan SA.txt"
- For i = 1 To 10
- L = ListView1.ListItems(i).Text
- L = Left(L, 9)
- Open FichierBDD For Input As #1
- Do While Not EOF(1)
- Input #1, ligneBDD
- If ligneBDD Like L & "*" Then
- ListView1.ListItems(i).ListSubItems.Add = Split(ligneBDD, "%";)(1)
- Me.Repaint
- End If
- Loop
- Close #1
- Next i
- Me.Caption = "Duration of treatment: " & Format(Timer - tp, "0.000s";)
- End Sub
|
ce code mets 9s pour 10 n° Code :
- Private Sub CommandButton2_Click()
- Dim tp!
- tp = Timer
- ListView1.ListItems.Clear
- ListView1.ListItems.Add , , "D53110000"
- ListView1.ListItems.Add , , "D53110001"
- ListView1.ListItems.Add , , "D53110002"
- ListView1.ListItems.Add , , "D53110003"
- ListView1.ListItems.Add , , "D53110004"
- ListView1.ListItems.Add , , "D53110005"
- ListView1.ListItems.Add , , "D53110006"
- ListView1.ListItems.Add , , "D53110007"
- ListView1.ListItems.Add , , "D53110008"
- ListView1.ListItems.Add , , "D53110009"
- FichierBDD = Environ("userprofile";) & "DocumentsBDD MacroControleDeroplan SA.txt"
- 'ex: D53110000%toto
- For i = 1 To 10
- L = ListView1.ListItems(i).Text
- L = Left(L, 9)
- Set fso = CreateObject("Scripting.FileSystemObject";)
- Set f = fso.OpenTextFile(FichierBDD, ForReading, False)
- Do While Not f.AtEndOfStream
- ligneBDD = f.ReadLine
- If ligneBDD Like L & "*" Then
- ListView1.ListItems(i).ListSubItems.Add = Split(ligneBDD, "%";)(1) 'recupere toto
- Me.Repaint
- End If
- Loop
- Set f = Nothing
- Next i
- Me.Caption = "Duration of treatment: " & Format(Timer - tp, "0.000s";)
- End Sub
|
dans les 2 codes, j'ouvre 10 fois le fichier, ce qui ne me semble pas très malin
je voudrais bien l'ouvrir 1 fois, mais je n'arrive pas a le formuler correctement
j'ai pourtant essayé..
Spoiler :
Set fso = CreateObject("Scripting.FileSystemObject"
Set f = fso.OpenTextFile(FichierBDD, ForReading, False)
For i = 1 To 10
L = ListView1.ListItems(i).Text
L = Left(L, 9)
Do While Not f.AtEndOfStream
ligneBDD = f.ReadLine
If ligneBDD Like L & "*" Then
ListView1.ListItems(i).ListSubItems.Add = Split(ligneBDD, "%"(1) 'recupere toto
Me.Repaint
End If
Loop
Next i
Set f = Nothing
|
Message édité par daniel-12 le 29-10-2017 à 12:44:15
|