Recherche recursive

T103 Messages postés 177 Date d'inscription lundi 11 août 2003 Statut Membre Dernière intervention 21 avril 2010 - 25 mars 2008 à 10:17
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 25 mars 2008 à 10:25
Bonjour,

Jai une fonction qui doit me retourner le fichier pdf le plus recent dans un repertoire et dans les sous repertoires :

Public Function recher(Chemin As String)
Dim fich As String
Dim chemCompl As String
Dim newchem As String
Dim datFich As String
Dim Fso As Object, FileItem As Object, oSousRep As Object, objrepInit As Object
Dim Tableau()
Dim m As Integer, i As Integer
Dim z As Byte, Valeur As Byte
Dim Cible As Variant


  
fich = Dir(Chemin & "\*.pdf")
Do


    m = m + 1
    ReDim Preserve Tableau(2, m)
    Tableau(1, m) = fich
                  
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set FileItem = Fso.GetFile(Chemin & "" & fich)


    Tableau(2, m) = Left(FileItem.DateCreated, 8)
                  
    fich = Dir
   
    Set objrepInit = Fso.GetFolder(Chemin)
    Set oSousRep = objrepInit.SubFolders
    recher (oSousRep.Name)<----erreur l'objet ne gere pas cette methode ou cette proprieté
   
Loop Until fich = ""

Mais j'ai une erreur au moment de l'appel de ma fonction recursive...

Merci de votre aide

2 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 mars 2008 à 10:20
Salut,
merci de préciser l'erreur...

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 mars 2008 à 10:25
Re,
OUPPS, réellement confus, je n'avais pas lu le code en entier.
Je te pris d'accepter mes excuses.

L'erreur vient du fait que un objet SubFolders ne contient pas la propriété Name

=> voir l'aide sur FileSystemObject.
Tu peux ajouter Microsoft Scripting Runtime pour avoir les objets disponibles du FileSystemObject

ce qu'il faudrait faire c'est:

Public Function recher(Chemin As String)
Dim fich As String
Dim chemCompl As String
Dim newchem As String
Dim datFich As String
Dim Fso As Object, FileItem As Object, oSousRep As Object, objrepInit As Object
Dim Tableau()
Dim m As Integer, i As Integer
Dim z As Byte, Valeur As Byte
Dim Cible As Variant

 
fich = Dir(Chemin & "\*.pdf")
Do

   m = m + 1
   ReDim Preserve Tableau(2, m)
   Tableau(1, m) = fich
                 
   Set Fso = CreateObject("Scripting.FileSystemObject")
   Set FileItem = Fso.GetFile(Chemin & "\" & fich)

   Tableau(2, m) = Left(FileItem.DateCreated, 8)
                 
   fich = Dir

   Set objrepInit = Fso.GetFolder(Chemin)
'    Set oSousRep = objrepInit.SubFolders
   For Each oSousRep In objrepInit.SubFolders
      Call recher(oSousRep.Name)
   Next oSousRep
Loop Until fich = vbNullString
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous