Liste de fichiers dans Excel

Résolu
Mistral_13200 Messages postés 649 Statut Membre -  
aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   1 311
     
    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."
    0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    0
    1. aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   1 311
       
      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 :)
      0
  3. Mistral_13200 Messages postés 649 Statut Membre 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
    0
    1. aquarelle Messages postés 7181 Date d'inscription   Statut Modérateur Dernière intervention   1 311
       
      Bonjour,

      De rien et bonne continuation :)
      0