macro recherche dossier windows

  • Initiateur de la discussion Initiateur de la discussion julos08
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

julos08

Guest
Bonjour a tous,

Voila je cherche une macro qui analyserai mon disque dur et mafficherai dans une feuille excel tous les dossiers avec le mot clefs saisie auparavant.
Je mexplique.
Au demarrage de mon classeur une userform aparraitrai en me demandant de saisir un ou plusieur mots clefs.
Apres avoir saisie mes mots clefs il me chercherai sur le c: les dossiers et uniquement les dossiers contenant le ou les mots clefs dans son nom et me les afficherai dans une feuille excel.

D'avance merci

@++

Julos08
 
Hello
Je te joins vite fait une solution. Je dis vite fait parce qu'il faut penser aux erreurs du type : la rerchercher renvoie plus de 32267 résultats (overflow), le dossier n'est pas accessible en écriture, etc.
Il faut évidemment remplacer [BACKSLASH] par le signe approprié
En espérant que ça fonctionne chez toi

++


Code:
Dim fso As Object, fld As Object, iCounter As Integer, stComp

Sub StartScan()
    'coPath est le chemin du dossier dans lequel on effectue la recherche
    Const coPath = 'C:[BACKSLASH]Documents and Settings'
    stComp = vbNullString: iCounter = 0
    Do While Len(stComp) = 0
        stComp = InputBox('Entrez le nom à chercher')
    Loop
    stComp = '*' & LCase(stComp) & '*'
    Set fso = CreateObject('scripting.filesystemobject')
    Application.Cursor = xlWait
    Call ListFld(coPath)
    Application.Cursor = xlNormal
    MsgBox 'Recherche terminée !'
End Sub

Sub ListFld(stInput As String)
On Error Resume Next
    For Each fld In fso.getfolder(stInput).subfolders
        If LCase(fld.Name) Like stComp Then
            iCounter = iCounter + 1
            ActiveSheet.Range ('A' & iCounter)
            Range('A' & iCounter).Value = fld.Path
        End If
        Call ListFld(fld.Path)
        DoEvents
    Next fld
End Sub
 
Dsl pour la réponse multiple... 😱

stComp doit être déclarée As String
La ligne
Code:
 ActiveSheet.Range ('A' & iCounter)
est à enlever

(histoire de t'éviter de chercher pourquoi elle est là...)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
5
Affichages
1 K
Simon M
S
C
Réponses
3
Affichages
926
Carlich
C
G
Réponses
8
Affichages
842
G
Retour