Problème avec Dir...

Résolu
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007 - 30 juin 2006 à 09:54
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 3 juil. 2006 à 12:31
Voila j'ai une fonction récursive avec Dir (je sais y'a beaucoup mieux mais ca m'est imposé ....)
Le problème c'est que je n'arrive pas à passer au répertoire suivant.

    rep = Dir(reperdedepart & "")
    While (rep <> "")
            If (GetAttr(reper & rep) And vbDirectory) = vbDirectory Then
                'je reviens à cette fonction
            Else
                'je parcours les fichiers
            End If
            'passe à l'élément suivant
            rep = ??????
    Wend

Merci pour vos réponses.
Bonne journée

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 juin 2006 à 10:00
quel interet de faire     reperdedepart & ""   ?

Dir ne peut être utilisée dans le cadre d'une fonction récursive.
J'ignore pourquoi ca t'es imposé, mais Dir ne le permet pas.

voici un lien vers une source de mon ami Jack, laquelle te permettra de résoudre ton problème.
http://www.vbfrance.com/codes/REMPLACER-DIR-CLASSE-DIR2-AVANTAGES_37859.aspx

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007
30 juin 2006 à 16:01
Je sais bien c'est ce que j'ai dit mais j'avais pas le choix...
Merci en tout cas pour la réponse!!!
Pour du recursif y'a ca aussi pour ceux que ca interesse:

Dans Références cochez : Microsoft Scripting runtime et ensuite en global vous déclarez :

Private m_FSO As New FileSystemObject

Et voila la fonction....
Private Sub Recursive(chemin As String)
 
  Dim ObjFile As File
  Dim ObjDir  As Folder

  Set ObjDir = m_FSO.GetFolder(chemin)
 
  For Each ObjFile In ObjDir.Files
    'traitement à faire pour les fichiers...
  Next
 
  For Each ObjDir In ObjDir.SubFolders
    Recursive ObjDir.Path
  Next
End Sub

Bonne journée à tous
3
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007
30 juin 2006 à 10:08
Dsl j'ai collé la mauvaise partie de code ^^
Je pensai que ca ne marchait que pour passer au fichier suivant mai non : c'est tout simplement : rep = dir
Merci quand même :)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 juin 2006 à 10:19
Rep = Dir, ok, ca c'est bon, ca fonctionne,
ce que je critique, c'est la vaine tentative d'utiliser Dir dans une fonction recursive....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 juin 2006 à 16:07
pourrais-tu m'en dire un peu plus, sur le "je n'ai pas le choix" ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
VisualBoinet Messages postés 64 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 juin 2007
3 juil. 2006 à 12:24
et bien parceque ma boite ne veut pas que je passe par des API...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 juil. 2006 à 12:31
Dir est incapable de bosser de façon récursive...

Je vois pas en quoi c'est un problème, d'utiliser des APIs....

Surtout dans une société, je ne comprend pas ce genre de décision...

Si ils veulent sacrifier des performances qu'apporteraient l'utilisation d'API (simples, de surcroit) au nom de je ne sais quelle raison fumeuse... libre à eux...

FSO fonctionne, bien sur, si cette solution leur convient, pourquoi pas...
reste que FSO est, comme le nom de sa librairie l'indique, dédiée au Scripting et qu'elle est lente.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous