Liste de fichiers dans Excel

Résolu/Fermé
Signaler
Messages postés
591
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
7 novembre 2021
-
Messages postés
7098
Date d'inscription
dimanche 8 avril 2007
Statut
Modérateur
Dernière intervention
10 juin 2021
-
Bonsoir à tous,

Je vais avoir à faire un travail dans lequel je vais devoir comparer les fichiers contenus dans un répertoire à une liste dans un classeur Excel.
Dans un répertoire je vais avoir environ 2000 photos, chacune ayant un nom différent de la forme suivante "319547654801.Jpeg". Tous les noms de fichiers auront la même forme.
Dans un classeur Excel, sur la feuil1, dans la colonne D je vais avoir la liste de toutes les photos sous la forme suivante "319547654801".Ce que je souhaiterais c'est récupérer, sur la même feuille et dans une autre colonne, ou sur une autre feuille, le nom de tous les fichiers photo et de les comparer pour être sûr d'avoir toutes les photos de la liste Excel.

Pouvez-vous m'aider ?
Cordialement
Mistral

3 réponses

Messages postés
7098
Date d'inscription
dimanche 8 avril 2007
Statut
Modérateur
Dernière intervention
10 juin 2021
1 298
Bonsoir,

Pour récupérer la liste de tes fichiers jpeg contenus dans un répertoire (que tu choisiras) dans la colonnes F (tu peux adapter si ce n'est pas là que tu souhaites l'avoir), crée un module VBA pour ton classeur et mets y le code suivant :

Sub ListerFichierJPEG()  

Dim Repertoire As String, Fichier As String  
Dim Ws As Worksheet  
Dim i As Integer  
   
Application.ScreenUpdating = False  
   
'Définit la Première feuille du classeur contenant cette macro  
'(pour recevoir les donnée extraites du répertoire).  
Set Ws = ThisWorkbook.Worksheets(1)  
   
'Définit le répertoire de recherche  
Repertoire = ChoixRepertoire & "\"  
'Spécifie la recherche pour le fichiers .jpeg  
Fichier = Dir(Repertoire & "*.jpeg")  
 i = 1  
'Boucle sur les fichiers du répertoire  
Do While Fichier <> ""  
            i = i + 1  
        'Récupère le nom des fichiers jpeg sans l'extension  
         Pos = InStr(1, Fichier, ".", 1)  
         Ws.Cells(i, 5) = Left(Fichier, Pos - 1)  
           
         Fichier = Dir  
Loop  
   
Application.ScreenUpdating = True  
MsgBox "Terminé"  
End Sub  


Function ChoixRepertoire()  
   Dim objShell As Object, objFolder As Object, oFolderItem As Object  
    Dim Chemin As String  
      
    Set objShell = CreateObject("Shell.Application")  
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)  
      
    On Error Resume Next  
    Set oFolderItem = objFolder.Items.Item  
    Chemin = oFolderItem.Path  
    ChoixRepertoire = Chemin  
End Function  



Bonne soirée
"Pour trouver une solution à ses problèmes, il faut s'en donner la peine."
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 560
bonjour Mistral_13200, aquarelle,

J'avais travaillé sur une proposition similaire mais un peu plus lentement :)

Voici le classeur test :

https://www.cjoint.com/?AKlx0ZqF7Fw
Messages postés
7098
Date d'inscription
dimanche 8 avril 2007
Statut
Modérateur
Dernière intervention
10 juin 2021
1 298
Bonsoir gbinforme,

Ma rapidité vient du fait que c'est une macro que j'utilise personnellement donc je n'avais qu'à changer l'extension et la colonne :)
Messages postés
591
Date d'inscription
mardi 5 août 2008
Statut
Membre
Dernière intervention
7 novembre 2021
4
Bonjour Aquarelle,
Bonjour Gbinforme,

Un grand merci à vous deux pour vos solutions qui fonctionne parfaitement.
J'ai fait un test sur une vingtaine de fichiers sans problème je vais tester ça sur un repertoire plus important.
Après cela j'adapterais la plus rapide des deux à mon cas car tous se trouvera dans un même répertoire et je sais récuperer son chemin pour l'utiliser dans mon code.

Merci à vous pour votre aide.
Cordialement.
Mistral
Messages postés
7098
Date d'inscription
dimanche 8 avril 2007
Statut
Modérateur
Dernière intervention
10 juin 2021
1 298
Bonjour,

De rien et bonne continuation :)