VB6 - Aidez moi a accelerez mon code svp

Résolu
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009 - 6 août 2009 à 10:56
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009 - 7 août 2009 à 08:35
Bonjour,

J'ai fait un code qui scanne des dossiers et leur sous dossier pour les afficher dans une combobox, j'ai fait ca avec fso mais je trouve que c'est un peu long. Avez vous une idée pour faire autrement qu'avec fso (peut etre une api) ou alors mon code est surement optimisable.
Voici mon code
Dim result, i
Dim FSO, flder, ssflder, secondssfolder, dossier As Object
Dim folder() As String, sous_dossier_lot() As String, sous_dossier_lot_met() As String, secondsousfolder() As String, map As String
Set FSO = CreateObject("Scripting.FileSystemObject")
i = 0

'Connection au map
map = Form3.lettrenetuse.Text & ":"
strremotpath = "\" & Form3.serveur.Text & "\dossier1"
strusername = "adope02" & Form3.txtcompte.Text
strpassword = Form3.txtmdp.Text
result = Net_Connect(map, strremotpath, strusername, strpassword)

'Parcours de la liste des dossiers------------------------------------------------------------------------
Set dossier = FSO.GetFolder(map)
For Each flder In dossier.SubFolders
    folder = Split(flder, "")
    If folder(1) <> "PLAN" Then ' on enleve de la recherche le dossier postes qui contient les vars
        For Each ssflder In flder.SubFolders 'On incremente le tabeau
              sous_dossier_lot = Split(ssflder, "")
            If Right(ssflder, 3) = "aaa" Then
            Form3.lst_lot.AddItem (folder(1) & " - " & sous_dossier_lot(2) & " - tra - H")
                GoTo harmocom
            Else
            Form3.lst_lot.AddItem (folder(1) & " - " & sous_dossier_lot(2) & " - tra - C")
            End If
     
        Next
        
    End If
harmocom:
Next
result = Net_Disconnect(map, 1, True)
Set flder = Nothing

'Connection au map
map = Form3.lettrenetuse.Text & ":"
strremotpath = "\" & Form3.serveur.Text & "\dossier2"
strusername = "adope02" & Form3.txtcompte.Text
strpassword = Form3.txtmdp.Text
result = Net_Connect(map, strremotpath, strusername, strpassword)

'Parcours de la liste des dossiers------------------------------------------------------------------------
Set dossier = FSO.GetFolder(map)
For Each flder In dossier.SubFolders
    folder = Split(flder, "")
    If folder(1) <> "PLAN" Then ' on enleve de la recherche le dossier postes qui contient les vars
        For Each ssflder In flder.SubFolders 'On incremente le tabeau
        sous_dossier_lot_met = Split(ssflder, "")
        Select Case sous_dossier_lot_met(2)
        Case Is = "ccc"
            Form3.lst_lot.AddItem (folder(1) & " - tri- h")
            GoTo harmomet
        Case Is = "aaa"
            Form3.lst_lot.AddItem (folder(1) & " - tri- H")
            GoTo harmomet
        Case Is = "bbb"
            Form3.lst_lot.AddItem (folder(1) & " - tri- H")
            GoTo harmomet
        Case Else
            Form3.lst_lot.AddItem (folder(1) & " - tri - h")
            GoTo harmomet
        End Select
           
      Next
    End If
harmomet:
Next
result = Net_Disconnect(map, 1, True)
MsgBox "c'est fait"


Merci d'avance pour votre aide
 

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 août 2009 à 11:12
Salut
En effet, FSO est lent.
Sous VB6, il y a les commandes du langage :
[*] ChDrive
[*] ChDir
[*] Dir
avec les boucles Do-Loop classiques :
Dim sTemp As String
sTemp = Dir("C:\mon répertoire\*.*")
Do While sTemp <> ""
  Debug.Print sTemp
  sTemp = Dir
  DoEvents
Loop

Voir le détail de l'instruction Dir dans l'aide et comment lister les fichiers et/ou les répertoires ("C:\mon répertoire\*." sans extension)

Attention : L'instruction Dir n'a qu'un seul buffer.
Il n'est donc pas possible d'imbriquer plusieurs recherches utilisant des Dir.
Pour éviter ce problème, voir cette source : REMPLACER DIR PAR UNE CLASSE DIR2 (AVANTAGES)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 août 2009 à 11:14
PS : Bien sûr, dans cette source (la classe), tu découvrira comment utiliser les API pour accéder aux fichiers
0
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009
6 août 2009 à 11:32
merci pour ta réponse rapide je vais voir ca tout de suite.

 
0
kciope Messages postés 20 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 7 août 2009
7 août 2009 à 08:35
Merci beaucoup, c'est vraiment nickel cette classe dir2


 
0
Rejoignez-nous