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
  |