Lister contenu dossier dans excel (VBA)
Neliville51
Messages postés
92
Date d'inscription
Statut
Membre
Dernière intervention
-
Neliville51 Messages postés 92 Date d'inscription Statut Membre Dernière intervention -
Neliville51 Messages postés 92 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
Voilà je suis débutant en VBA excel. Je voudrais savoir s'il existe un code qui permet de me lister le nom des fichiers contenu dans un dossier spécifique de mon disque dur selon des critères définis dans une feuille excel? Par exemple tous les fichiers ayant pour première lettre P ou I ou O etc...
Merci pour ceux ou celles qui savent et qui pourront m'éclairer.0
A bientôt
Voilà je suis débutant en VBA excel. Je voudrais savoir s'il existe un code qui permet de me lister le nom des fichiers contenu dans un dossier spécifique de mon disque dur selon des critères définis dans une feuille excel? Par exemple tous les fichiers ayant pour première lettre P ou I ou O etc...
Merci pour ceux ou celles qui savent et qui pourront m'éclairer.0
A bientôt
A voir également:
- Excel lister les fichiers d'un dossier et sous dossier
- Dossier appdata - Guide
- Liste déroulante excel - Guide
- Impossible de supprimer un dossier - Guide
- Mettre un mot de passe sur un dossier - Guide
- Word et excel gratuit - Guide
1 réponse
Bonjour,
Je n'ai pas compris si la liste des fichiers était sur une feuille Excel ou s'il fallait copier les noms des fichier dans une feuille Excel. Ici c'est la deuxième option que j'ai pris:
Nécessite d'activer la référence Microsoft Scripting Runtime
Menu > Outils > Références ... > cocher Microsoft Scripting Runtime
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Je n'ai pas compris si la liste des fichiers était sur une feuille Excel ou s'il fallait copier les noms des fichier dans une feuille Excel. Ici c'est la deuxième option que j'ai pris:
Nécessite d'activer la référence Microsoft Scripting Runtime
Menu > Outils > Références ... > cocher Microsoft Scripting Runtime
Sub ListeFichier() Dim oFso As FileSystemObject Dim oFolder As folder Set oFso = New FileSystemObject Set oFolder = fso.GetFolder("D:\Temp") 'Indiquer ici le chemin du repétoire à scanner scan oFolder End Sub Public Sub scan(ByVal dossier As folder) Dim oFile As file Dim oCollec As Collection Dim i As Long Dim lig As Long Dim nomFichier As String Set oCollec = New Collection lig = 2 'On parcours le répertoire pour récupérer tous les fichiers For Each oFile In dossier.Files oCollec.Add oFile Next 'Il est également possible de parcourir les sous dossiers 'Dim oSubFolder As Folder ' For Each oSubFolder In dossier.SubFolders ' scan oSubFolder ' Next For i = 1 To oCollec.Count nomFichier = ReturnFileName(oCollec(i)) If UCase(Mid(nomFichier, 1, 1)) = "A" Or UCase(Mid(nomFichier, 1, 1)) = "L" Or UCase(Mid(nomFichier, 1, 1)) = "M" Then Worksheets(1).Range("A" & lig).Value = nomFichier lig = lig + 1 End If Next i End Sub 'On Extrait le nom du fichier du chemin complet Public Function ReturnFileName(ByVal sChemin As String) As String If InStr(sChemin, "\") = 0 Or Right(sChemin, 1) = "\" Then ReturnFileName = "" Exit Function End If ReturnFileName = Mid(sChemin, InStrRev(sChemin, "\") + 1) End Function
;o)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
Merci pour cette réponse rapide.
J'ai donc essayé le code mais il y a une erreur de compilation à ce niveau et je n'arrive à la corriger.
A bientôt
Erreur de compilation
Type défini par l'utilisateur non défini
pour :
"Public Sub scan(ByVal dossier As Folder"
Au fait si j'ai bien compris la liste doit se faire dans la prmière feuille de mon classeur non?
Dans l'exemple, oui la liste commence à la ligne 2 de la colonne A de l'onglet "Feuil1".
Il suffit de modifier cette ligne pour l'adapter à ton classeur:
Worksheets(1).Range("A" & lig).Value = nomFichier
Set oFolder = fso.GetFolder("D:\Temp")
il faut mettre
Set oFolder = oFso.GetFolder("D:\Temp")
Ensuite il faut aussi modifier cette ligne :
En mettant à la place de "A", "L" et "M" les initiales que tu veux tester.
J'ai laissé celles que j'ai utilisé pour mon test.