VB6 - Aidez moi a accelerez mon code svp [Résolu]

Signaler
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
7 août 2009
-
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
7 août 2009
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
67
PS : Bien sûr, dans cette source (la classe), tu découvrira comment utiliser les API pour accéder aux fichiers
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
7 août 2009

merci pour ta réponse rapide je vais voir ca tout de suite.

 
Messages postés
20
Date d'inscription
vendredi 11 avril 2003
Statut
Membre
Dernière intervention
7 août 2009

Merci beaucoup, c'est vraiment nickel cette classe dir2