Lister contenu dossier dans excel (VBA)
Neliville51
Messages postés
99
Statut
Membre
-
Neliville51 Messages postés 99 Statut Membre -
Neliville51 Messages postés 99 Statut Membre -
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
- 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
- Renommer tous les fichiers d'un dossier - 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.