Bonjour,
Essaie comme ça : 2 variables à définir dans la procédure Test_GetFolder
'-----------------------------------
Sub Test_GetFolder()
Dim Dict As Object, Chemin As String, Expression As String
'***********Variable à définir*****************
'Répertoire de départ
Chemin = "C:UsersDMDocumentsBook22_files"
'condition : dont le nom des répertoires contient
'l'expression à déterminer..
Expression = "bo"
'**********************************************
' Création d'un objet Dictionnaire
Set Dict = CreateObject("Scripting.Dictionary")
' Si récursif, retourne les répertoires dans un objet dictionnaire
If GetFolders(Chemin, Dict, Expression, True) Then
'Ajout d'une feuille au répertoire
Sheets.Add
'récupère directement le tableau des items du dictionaire
'dans la colonne A de la nouvelle feuille
Range("A1:A" & Dict.Count).Value = _
Application.Transpose(Dict.Items)
End If
End Sub
'-----------------------------------
Function GetFolders(Chemin As String, _
Dict As Object, Expression As String, _
Optional Récursif As Boolean) As Boolean
Dim FS As Object, MyFolder As Object, MySubFolder As Object
Set FS = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set MyFolder = FS.GetFolder(Chemin)
If Err <> 0 Then
'chemin incorrect ou inexistant
Err = 0
GetFolders = False
Exit Function
End If
'si récursif est égale à true, rappel de la fonction
If Récursif Then
For Each MySubFolder In MyFolder.SubFolders
If InStr(1, MySubFolder, Expression, vbTextCompare) > 0 Then
'donne seulement le nom des répertoires
'Dict.Add MySubFolder.Name, MySubFolder.Name
'donne seulement le chemin complet des répertoires
Dict.Add MySubFolder.Path, MySubFolder.Path
End If
GetFolders MySubFolder.Path, Dict, Expression, True
Next
End If
' Retourne True si aucune erreur est trouvé.
If Dict.Count > 0 Then GetFolders = True
End Function
'-----------------------------------
MichD
--------------------------------------------
"steph b" a écrit dans le message de groupe de discussion :
4dcce9e3$0$30747$
Bonjour
Je voudrais si possible qu'une macro me fasse une recherche, alros je vais
essayer d'etre explicite.
J'ai un repertoire nommé "s:" qui correspond à un repertoire partagé, qui
lui meme contient d'autre lettre de mappage lecteur disque dur.
Dans ces répertoires il y a une multitude de dossiers.
J'aimerais que, tout d'abord, la macro me recherche tous les répertoires
contenant le terme "EVP" ca peut etre du genre "*EVP*"
et aussi qu'il me les liste le chemin de chaque dossier sous une feuille
excel ligne par ligne (avec le nom de la lettre du lecteur (les lecteurs
mappés)).
merci d avance
Bonjour,
Essaie comme ça : 2 variables à définir dans la procédure Test_GetFolder
'-----------------------------------
Sub Test_GetFolder()
Dim Dict As Object, Chemin As String, Expression As String
'***********Variable à définir*****************
'Répertoire de départ
Chemin = "C:UsersDMDocumentsBook22_files"
'condition : dont le nom des répertoires contient
'l'expression à déterminer..
Expression = "bo"
'**********************************************
' Création d'un objet Dictionnaire
Set Dict = CreateObject("Scripting.Dictionary")
' Si récursif, retourne les répertoires dans un objet dictionnaire
If GetFolders(Chemin, Dict, Expression, True) Then
'Ajout d'une feuille au répertoire
Sheets.Add
'récupère directement le tableau des items du dictionaire
'dans la colonne A de la nouvelle feuille
Range("A1:A" & Dict.Count).Value = _
Application.Transpose(Dict.Items)
End If
End Sub
'-----------------------------------
Function GetFolders(Chemin As String, _
Dict As Object, Expression As String, _
Optional Récursif As Boolean) As Boolean
Dim FS As Object, MyFolder As Object, MySubFolder As Object
Set FS = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set MyFolder = FS.GetFolder(Chemin)
If Err <> 0 Then
'chemin incorrect ou inexistant
Err = 0
GetFolders = False
Exit Function
End If
'si récursif est égale à true, rappel de la fonction
If Récursif Then
For Each MySubFolder In MyFolder.SubFolders
If InStr(1, MySubFolder, Expression, vbTextCompare) > 0 Then
'donne seulement le nom des répertoires
'Dict.Add MySubFolder.Name, MySubFolder.Name
'donne seulement le chemin complet des répertoires
Dict.Add MySubFolder.Path, MySubFolder.Path
End If
GetFolders MySubFolder.Path, Dict, Expression, True
Next
End If
' Retourne True si aucune erreur est trouvé.
If Dict.Count > 0 Then GetFolders = True
End Function
'-----------------------------------
MichD
--------------------------------------------
"steph b" a écrit dans le message de groupe de discussion :
4dcce9e3$0$30747$ba4acef3@reader.news.orange.fr...
Bonjour
Je voudrais si possible qu'une macro me fasse une recherche, alros je vais
essayer d'etre explicite.
J'ai un repertoire nommé "s:" qui correspond à un repertoire partagé, qui
lui meme contient d'autre lettre de mappage lecteur disque dur.
Dans ces répertoires il y a une multitude de dossiers.
J'aimerais que, tout d'abord, la macro me recherche tous les répertoires
contenant le terme "EVP" ca peut etre du genre "*EVP*"
et aussi qu'il me les liste le chemin de chaque dossier sous une feuille
excel ligne par ligne (avec le nom de la lettre du lecteur (les lecteurs
mappés)).
merci d avance
Bonjour,
Essaie comme ça : 2 variables à définir dans la procédure Test_GetFolder
'-----------------------------------
Sub Test_GetFolder()
Dim Dict As Object, Chemin As String, Expression As String
'***********Variable à définir*****************
'Répertoire de départ
Chemin = "C:UsersDMDocumentsBook22_files"
'condition : dont le nom des répertoires contient
'l'expression à déterminer..
Expression = "bo"
'**********************************************
' Création d'un objet Dictionnaire
Set Dict = CreateObject("Scripting.Dictionary")
' Si récursif, retourne les répertoires dans un objet dictionnaire
If GetFolders(Chemin, Dict, Expression, True) Then
'Ajout d'une feuille au répertoire
Sheets.Add
'récupère directement le tableau des items du dictionaire
'dans la colonne A de la nouvelle feuille
Range("A1:A" & Dict.Count).Value = _
Application.Transpose(Dict.Items)
End If
End Sub
'-----------------------------------
Function GetFolders(Chemin As String, _
Dict As Object, Expression As String, _
Optional Récursif As Boolean) As Boolean
Dim FS As Object, MyFolder As Object, MySubFolder As Object
Set FS = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set MyFolder = FS.GetFolder(Chemin)
If Err <> 0 Then
'chemin incorrect ou inexistant
Err = 0
GetFolders = False
Exit Function
End If
'si récursif est égale à true, rappel de la fonction
If Récursif Then
For Each MySubFolder In MyFolder.SubFolders
If InStr(1, MySubFolder, Expression, vbTextCompare) > 0 Then
'donne seulement le nom des répertoires
'Dict.Add MySubFolder.Name, MySubFolder.Name
'donne seulement le chemin complet des répertoires
Dict.Add MySubFolder.Path, MySubFolder.Path
End If
GetFolders MySubFolder.Path, Dict, Expression, True
Next
End If
' Retourne True si aucune erreur est trouvé.
If Dict.Count > 0 Then GetFolders = True
End Function
'-----------------------------------
MichD
--------------------------------------------
"steph b" a écrit dans le message de groupe de discussion :
4dcce9e3$0$30747$
Bonjour
Je voudrais si possible qu'une macro me fasse une recherche, alros je vais
essayer d'etre explicite.
J'ai un repertoire nommé "s:" qui correspond à un repertoire partagé, qui
lui meme contient d'autre lettre de mappage lecteur disque dur.
Dans ces répertoires il y a une multitude de dossiers.
J'aimerais que, tout d'abord, la macro me recherche tous les répertoires
contenant le terme "EVP" ca peut etre du genre "*EVP*"
et aussi qu'il me les liste le chemin de chaque dossier sous une feuille
excel ligne par ligne (avec le nom de la lettre du lecteur (les lecteurs
mappés)).
merci d avance
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
Bonjour
Où sont tes LOLO et LOLA ? dans quelle colonne? supposons A>>>
Sub lolo2()
For Each C In Range("a1:a10")
If Right(C & i, 4) = "lolo" Then
C.Rows.EntireRow.Delete
End If
Next
End Sub
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"steph b" a écrit dans le message de groupe de discussion :
4dd12001$0$30755$
lorsque j'execute la macro qui marche super bien, j'ai une liste de
répertoires
avec cette liste:
si le denier mot de chaque ligne constituée
par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
il me supprime la ligne entiere en remontant sans
laisser de ligne vide.
est ce plus clair?
"MichD" a écrit dans le message de news:
iqqt51$vrd$| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
Bonjour
Où sont tes LOLO et LOLA ? dans quelle colonne? supposons A>>>
Sub lolo2()
For Each C In Range("a1:a10")
If Right(C & i, 4) = "lolo" Then
C.Rows.EntireRow.Delete
End If
Next
End Sub
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"steph b" a écrit dans le message de groupe de discussion :
4dd12001$0$30755$ba4acef3@reader.news.orange.fr...
lorsque j'execute la macro qui marche super bien, j'ai une liste de
répertoires
avec cette liste:
si le denier mot de chaque ligne constituée
par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
il me supprime la ligne entiere en remontant sans
laisser de ligne vide.
est ce plus clair?
"MichD" <michdenis@hotmail.com> a écrit dans le message de news:
iqqt51$vrd$1@speranza.aioe.org...
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
Bonjour
Où sont tes LOLO et LOLA ? dans quelle colonne? supposons A>>>
Sub lolo2()
For Each C In Range("a1:a10")
If Right(C & i, 4) = "lolo" Then
C.Rows.EntireRow.Delete
End If
Next
End Sub
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"steph b" a écrit dans le message de groupe de discussion :
4dd12001$0$30755$
lorsque j'execute la macro qui marche super bien, j'ai une liste de
répertoires
avec cette liste:
si le denier mot de chaque ligne constituée
par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
il me supprime la ligne entiere en remontant sans
laisser de ligne vide.
est ce plus clair?
"MichD" a écrit dans le message de news:
iqqt51$vrd$| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
merci michel le code marche sur bien..
c est genial
j'aimerais ensuite car en fait il me donne vraiment tous les repertoire s
(avec le terme expression ) faire un tri
par exemple si le denier mot de la liste constituée par ta macro est "LOGI"
ou "LOGA" ou "LOGO" alors il me supprime la ligne entiere en remontant sans
laisser de ligne vide.
merci d avance
merci michel le code marche sur bien..
c est genial
j'aimerais ensuite car en fait il me donne vraiment tous les repertoire s
(avec le terme expression ) faire un tri
par exemple si le denier mot de la liste constituée par ta macro est "LOGI"
ou "LOGA" ou "LOGO" alors il me supprime la ligne entiere en remontant sans
laisser de ligne vide.
merci d avance
merci michel le code marche sur bien..
c est genial
j'aimerais ensuite car en fait il me donne vraiment tous les repertoire s
(avec le terme expression ) faire un tri
par exemple si le denier mot de la liste constituée par ta macro est "LOGI"
ou "LOGA" ou "LOGO" alors il me supprime la ligne entiere en remontant sans
laisser de ligne vide.
merci d avance
merci michel le code marche sur bien..
c est genial
j'aimerais ensuite car en fait il me donne vraiment tous les repertoires
(avec le terme expression ) faire un tri
par exemple si le denier mot de la liste constituée par ta macro est
"LOGI"
ou "LOGA" ou "LOGO" alors il me supprime la ligne entiere en remontant
sans
laisser de ligne vide.
merci d avance
merci michel le code marche sur bien..
c est genial
j'aimerais ensuite car en fait il me donne vraiment tous les repertoires
(avec le terme expression ) faire un tri
par exemple si le denier mot de la liste constituée par ta macro est
"LOGI"
ou "LOGA" ou "LOGO" alors il me supprime la ligne entiere en remontant
sans
laisser de ligne vide.
merci d avance
merci michel le code marche sur bien..
c est genial
j'aimerais ensuite car en fait il me donne vraiment tous les repertoires
(avec le terme expression ) faire un tri
par exemple si le denier mot de la liste constituée par ta macro est
"LOGI"
ou "LOGA" ou "LOGO" alors il me supprime la ligne entiere en remontant
sans
laisser de ligne vide.
merci d avance
J ai rien compris !!!!
désolé
J ai rien compris !!!!
désolé
J ai rien compris !!!!
désolé
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------
| par exemple si le denier mot de la liste constituée
| par ta macro est "LOGI" ou "LOGA" ou "LOGO" alors
| il me supprime la ligne entiere en remontant sans
| laisser de ligne vide.
Désolé, je ne comprends rien à ta question.
MichD
--------------------------------------------