Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Recherche de sous-répertoires

5 réponses
Avatar
HD
Bonjour,

Je voudrais rechercher en VBA tout les sous-répertoires par exemple "2005
Janvier\Docs" parmis le répertoire racine "D:\Mes Docs\".

Le problème est que la fonction FileSearch n'apprécie pas d'avoir une
recherche avec un slash... (J'ai un message: "Erreur d'exéctuion '5':
Argument ou appel de procédure incorrect").

Avez vous une idée sur la façon dont je pourrais m'en sortir ?

Merci d'avance pour votre aide
--
@+
HD

5 réponses

Avatar
jps
bonjour HD
colle ceci dans un module standard et ça devrait le faire
cette proc a été donnée par michdenis (que nous saluons au passage) qui,
lui-même, s'était inspiré de Dave Peterson d'un forum anglophone
HTH
jps

Option Explicit
Dim myRow As Long
Dim wks As Worksheet


Sub FoldersList()
Set wks = Worksheets.Add
myRow = 0

'Sélectionne ton répertoire ici :
Call FoldersInFolder("C:TonRepertoire")
End Sub


Sub FoldersInFolder(myFolderName As String)

Dim FSO As Object
Dim myBaseFolder As Object
Dim myFolder As Object
Set FSO = CreateObject("scripting.filesystemobject")

Set myBaseFolder = FSO.GetFolder(myFolderName)

For Each myFolder In myBaseFolder.SubFolders
myRow = myRow + 1
wks.Cells(myRow, "A").Value = myFolder.Path
Call FoldersInFolder(myFolder.Path)
Next myFolder

End Sub


"HD" a écrit dans le message de news:
dtufik$kbe$
Bonjour,

Je voudrais rechercher en VBA tout les sous-répertoires par exemple "2005
JanvierDocs" parmis le répertoire racine "D:Mes Docs".

Le problème est que la fonction FileSearch n'apprécie pas d'avoir une
recherche avec un slash... (J'ai un message: "Erreur d'exéctuion '5':
Argument ou appel de procédure incorrect").

Avez vous une idée sur la façon dont je pourrais m'en sortir ?

Merci d'avance pour votre aide
--
@+
HD




Avatar
Michel Pierron
Bonjour HD;
Autre solution que FSO:

Sub FolderList()
Const iPath$ = "D:Mes Docs"
Application.ScreenUpdating = False
Workbooks.Add: Cells(1, 1) = iPath: Call DirScan(iPath)
End Sub

Private Function DirScan(folder$, Optional i% = 1)
Dim oItem As Object
With CreateObject("Shell.Application").Namespace(CStr(folder))
For Each oItem In .items
If oItem.isfolder Then
i = i + 1: Cells(i, 1) = oItem.Path: Call DirScan(oItem.Path, i)
End If
Next
End With
End Function

MP

"HD" a écrit dans le message de news:
dtufik$kbe$
Bonjour,

Je voudrais rechercher en VBA tout les sous-répertoires par exemple "2005
JanvierDocs" parmis le répertoire racine "D:Mes Docs".

Le problème est que la fonction FileSearch n'apprécie pas d'avoir une
recherche avec un slash... (J'ai un message: "Erreur d'exéctuion '5':
Argument ou appel de procédure incorrect").

Avez vous une idée sur la façon dont je pourrais m'en sortir ?

Merci d'avance pour votre aide
--
@+
HD




Avatar
HD
Cette macro me donne tout les sous-répertoires du répertoire spécifié...
mais je cherche en fait à avoir par exemple tout les répertoires
"2005Images" du répertoire racine "D:Mes docs" de sorte que je puisse
avoir en résultat par exemple:
" D:Mes docsTotoBureau2005Images "
--
@+
HD
Avatar
Michel Pierron
Re HD;
Rajoute une condition:

Sub FolderList()
Const iPath$ = "D:Mes Docs"
Application.ScreenUpdating = False
Workbooks.Add
End Sub

Private Function DirScan(folder$, Optional i% = 0)
Dim oItem As Object
With CreateObject("Shell.Application").Namespace(CStr(folder))
For Each oItem In .items
If oItem.isfolder Then
If InStr(1, oItem.Path, "2005Images", 1) Then
i = i + 1: Cells(i, 1) = oItem.Path
' Récursivité des sous répertoires qui remplissent la condition
'Call DirScan(oItem.Path, i)
End If
End If
Next
End With
End Function

MP

"HD" a écrit dans le message de news:
dtv5q0$sr6$
Cette macro me donne tout les sous-répertoires du répertoire spécifié...
mais je cherche en fait à avoir par exemple tout les répertoires
"2005Images" du répertoire racine "D:Mes docs" de sorte que je puisse
avoir en résultat par exemple:
" D:Mes docsTotoBureau2005Images "
--
@+
HD




Avatar
HD
Un grand MERCI à vous deux :-)

--
@+
HD