IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Find folder vb6


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Find folder vb6
    Bonjour,
    Je cherche à faire un prog qui permet de rechercher des folders.

    J'ai essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set fs = CreateObject("Scripting.FileSystemObject")
            Set f = fs.GetFolder(folderspec)
            Set fc = f.SubFolders
    Ca marche bien mais c trop lourd car ma base à scanner est trop grosse. Donc ca plante.

    Avez vous une solution?
    Merci d'avance.

  2. #2
    Membre habitué
    Avatar de nabil
    Inscrit en
    Avril 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 223
    Points : 168
    Points
    168
    Par défaut
    essaye ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim fso As New FileSystemObject
    MsgBox fso.FolderExists(App.path + "\nom")
    Il ne faut jamais désesperer, il y a toujours une solution.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Re bonsoir, Nabil,

    Deux remarques :

    1) à nouveau avec cette utilisation (alourdissante de FSO)
    2) Relis la question : il s'agit de scanner la totalité afin de localiser un (ou plusieurs, d'ailleurs, car plusieurs folders peuvent porter le même nom) alors que l'on n'en connait pas le chemin principal ...

  4. #4
    Membre habitué
    Avatar de nabil
    Inscrit en
    Avril 2002
    Messages
    223
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 223
    Points : 168
    Points
    168
    Par défaut
    on se croise à nouveau ucfoutu
    concernant fso c'es ok mais concernant
    il s'agit de scanner la totalité afin de localiser un (ou plusieurs, d'ailleurs, car plusieurs folders peuvent porter le même nom) alors que l'on n'en connait pas le chemin principal ...
    dkoneeee n'a pas spécifié qu'il ne connait pas le chemin ni que les dossiers peuvent avoir le même nom.

    Bon ce n'ai qu'une proposition qui peux impérativement être amélioré
    Il ne faut jamais désesperer, il y a toujours une solution.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par dkoneeee Voir le message
    Bonjour,
    Je cherche à faire un prog qui permet de rechercher des folders.

    J'ai essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set fs = CreateObject("Scripting.FileSystemObject")
            Set f = fs.GetFolder(folderspec)
            Set fc = f.SubFolders
    Ca marche bien mais c trop lourd car ma base à scanner est trop grosse
    .


    Si tel n'était pas le cas : un simple Dir ( de pur VB) suffirait, avec les bons attributs...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    merci.

    il s'agit de retourner le path d'un ou plusieurs dossiers dans une base connue.

    La fonction dir s'applique pour les fichiers et non les dossiers.


    est ce que la fonction sfo peut le faire?

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par dkoneeee Voir le message
    merci.

    il s'agit de retourner le path d'un ou plusieurs dossiers dans une base connue.

    La fonction dir s'applique pour les fichiers et non les dossiers.


    est ce que la fonction sfo peut le faire?
    Non !

    1) La fonction dir sert de la même façon, qu'il s'agisse de dossier ou de fichiers ... seule change la définition de l'attribut ....
    2) qu'entends-tu donc par "une base connue" ?

    Sois très précis sur ce point fondamental, s'il te plait !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    La base c juste un dossier contenant des sous-dossiers dont je veux comparer leur nom.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    merci ucfoutu,

    Mias la fonction dir retourne le nom du dossier mais pas le path et date created.

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Elle est bien bonne, celle-là !

    Voilà qu'apparait soudain la notion (demande non exprimée auparavant) de date .... et pourquoi pas d'heure (pendant qu'in y est)...

    Voilà donc ce que VB sait faire tout seul et plus vite que FSO :

    Un projet - 3 CommandButtons nommés Command1, Command2 et Command3
    - une listbox nommée List1 (juste pour voir)

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub Command1_Click()
      ' regarde ce que fait ceci :
     If Dir("c:\Program files\Accessoires", vbDirectory) <> "" Then MsgBox "existe et est un dossier créé ou modifié " & _
     "pour la dernière fois le " & FileDateTime("c:\Program files\Accessoires")
    End Sub
     
    Private Sub Command2_Click()
     
     ' puis regarde ce que fait ceci ceci :
     List1.Clear
     monrep = "c:\"
     mondossier = Dir(monrep, vbDirectory)
      Do While mondossier <> ""
        If mondossier <> "." And mondossier <> ".." Then
         If (GetAttr(monrep & mondossier) And vbDirectory) = vbDirectory Then
                List1.AddItem mondossier & "  " & FileDateTime("c:\" & mondossier)
            End If
        End If
        mondossier = Dir
      Loop
     
    End Sub
     
    Private Sub Command3_Click()
      ' et maintenant regarde aussi ce que fait ceci, après avoir ajouté un contrôle
      'Dirlistbox nommé dir 1 et une listbox nommée List1
      List1.Clear
     Dir1.Path = "C:\"
      For i = 1 To Dir1.ListCount - 1
        List1.AddItem Dir1.List(i) & "  " & FileDateTime(Dir1.List(i))
      Next
    End Sub
    Tu en veux d'autres, peut-être ??? Ya !!!

    Une précision : ce ne sont là que trois touts petits exemples bien humbles pour VB.
    On pourrait aller plus loin, y compris en triant par date !!!!

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Merci encore pour tes solutions ucfoutu, je pense que ca va marcher .

    dommage que je n'ai pas de dirlistbox dans ma version VB.

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par dkoneeee Voir le message
    Merci encore pour tes solutions.

    dommage que je n'ai pas de dirlistbox dans ma version VB.

    Connaitrais tu une fonction pour le path comme pour FileDateTime.
    Que nous racontes-tu là ????
    1) Si tu n'as pas de contrôle DirlistBox, celà veux dire que tu n'es pas sous VB6 (ni même sous VB5, ni même sous VB4 !!!) .... et si tu es sous VBA (Excel, par Exemple... tu t'es trompé de section ...)

    2) Command2 ===>> la même chose, mais sans la DirListBox ....

    3) FileDateTime est précisément une fonction de VB

    4) que veut dire "Pour le Path" ???? .... si c'est pour le résultat de Command2, il me semble que tu le connais, ce "Path", non ? C'est même celui que tu indiquesau départ !!!

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    ufoutu serait faire une boucle pour scanner tous les repertoires d'un dossier?

  14. #14
    Membre régulier Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Points : 106
    Points
    106
    Par défaut
    si tu allez voir dans la FAQ???

    voila ce que tu y aurais trouver si tu avais chercher

    Nécessite d'activer la référence Microsoft Scripting Runtime (scrrun.dll)
    Il y a possibilité d'agir sur chaque fichier listé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    vb 
     
    Private Sub Command1_Click()
     
    Dim fso As FileSystemObject, dossier As Folder, sousdossier As Folder, fichier As File
     
        Set fso = New FileSystemObject
        Set dossier = fso.GetFolder("c:\essai")
        scan dossier
     
    End Sub
     
    Public Sub scan(ByVal dossier As Folder)
     
        For Each fichier In dossier.Files
            Debug.Print fichier
        Next
     
        For Each sousdossier In dossier.SubFolders
            Debug.Print sousdossier
            scan sousdossier
        Next
     
    End Sub

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    ouai mais c trop lourd comme solution car ca fait une copie de tous les dossiers. c'est pourquoi je dois m'orienter vers une autre solution.

    Je vous montre mon prog de depart qui est trop gourmand:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Sub ShowFolderInfo(folderspec, folderspec2)
    Dim desc As String
    Dim fs, f, s, fc, f1
     
            Set fs = CreateObject("Scripting.FileSystemObject")
            Set f = fs.GetFolder(folderspec)
            Set fc = f.SubFolders
            i = 1
     
       For Each f1 In fc
     
            If InStr(f1.Name, TextBox1.Text) Then
         'MsgBox f1.Name
     
              Data(i, 0) = f1.Name
               Data(i, 1) = f1.Path
                i = i + 1
            End If
           Next

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche la fonction équivalente à Find de VBA en VB6
    Par VBAG38 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/12/2012, 09h54
  2. [OL-2010] Utiliation de Items.Find infructueux avec le Folders("COMPTES")
    Par JeanB_Can dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 23/07/2011, 15h51
  3. Méthode .Find en VB6
    Par Khalou8 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/03/2010, 10h23
  4. [VB6] pb avec critère sur find avec rs ADODB
    Par Mymi dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/08/2006, 15h45
  5. [VB6]Compil error: can't find project or library
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/05/2006, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo