Importer liste de fichiers dans un tableur ?

Arnaud_P Messages postés 3 Statut Membre -  
 Arnaud_P -
Bonjour,

J'ai cherché sur le forum mais je n'ai pas trouvé de réponse.

Dans le cadre de ma mission je dois comparer les fichiers dwg envoyé par les hopitaux et les fichers dwg reçu de notre prestataire ( ce sont les mêmes fichiers, il est juste intervenu dessus et les as renommés)

Exemple.

Hôpital.dwg > Moi > Prestataire > Moi.

Sauf qu'il y as environ 2000 à 3000 fichiers.......... :s

Est'il possible dans excel de créer une liste de tout les fichiers presents dans un dossier??? par une macro ou autre ?

Merci d'avance

Cordialement

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,
    regarde si cette macro peut t'aider

    Sub lancer_listing()
    Dim suff As String
    suff = InputBox("introduire lettres du suffixe des fichiers recherchés" _
                & vbLf & "(sans le point devant)")
     If suff = "" Then: Exit Sub
    lister_suivant_suffixe driver, suff
    End Sub
    
    
    Sub lister_suivant_suffixe(partition As String, suffixe As String)
    Dim fich As String, Chemin As String
    Dim lig As Long
    'fige le défilement de l'écran
    Application.ScreenUpdating = False
    
    'sélectionne le dossier des ".avi"
    Chemin = selectionner_dossier(partition)
    If Chemin = "" Then: Exit Sub
    ' et force dans le répertoire de travail
    ChDir Chemin
    
    'écrit le titre en A1 de la feuille active
    With Cells(1, 1)
        .Value = "liste des fichiers " & suffixe & " dans le dossier " & Chemin
        'facultatif gras italique bleu
        .Font.FontStyle = "Gras italique"
        .Font.ColorIndex = 11
    End With
    
    
    'filtre sur les fichiers du type du suffixe
    fich = Dir("*." & suffixe)
    lig = 2
    'recherche les fichiers correspondants au filtre de recherche
    While fich <> ""
        'écrit le nom du fichier dans la feuille active
        Cells(lig, 1) = Left(fich, Len(fich) - (Len(suffixe) + 1)) 'ecriture du nom du fichier sans le suffixe
        lig = lig + 1
         'affecte le fichier suivant (utilisation du joker " * " utilisé pour la def du 1° fichier)
        fich = Dir
      Wend
     If lig = 2 Then
        Cells(lig, 1) = "aucun fichier de type " & suffixe & " trouvé."
    End If
    ' ajuste la largeur de colonne
    Columns(1).AutoFit
    End Sub
    
    
    Function selectionner_dossier(racine As Variant)
    'd 'après @+thierry pour XLD francisé par Michel_M pour CCM
    Dim ObjShell As Object, ObjFolder As Object
    Dim Message As String
    Dim endroit As String
    
    Message = "Sélectionnez le dossier concerné."
    Set ObjShell = CreateObject("Shell.Application")
    Set ObjFolder = ObjShell.BrowseForFolder(&H0&, Message, 1, racine)
    
        On Error Resume Next 'Si on sort sans sélection
        endroit = ObjFolder.ParentFolder.ParseName(ObjFolder.Title).Path & ""
        selectionner_dossier = endroit
    End Function


    ci joint demo
    https://www.cjoint.com/?exoVZzsYyB
    0
  2. Arnaud_P Messages postés 3 Statut Membre
     
    Re, bonjour,

    Merci mais n'etant pas un pro des macros je lutte un peu ( je pensais que cela fonctionnais plus comme un lisp)

    Lorsque je la crée (copier coller le corp dans l'editeur VBA)

    Je l'enregistre, ferme et retourne dans excel.

    Je la lance via le raccourci que je lui ai attribuée, mais la VBA se réouvre et m'indique le message suivant "Erreur de compilation" Type d'argument Byref Incompatible.

    En surlignant en bleu : lister_suivant_suffixe driver, suff

    Et en jaune : Sub lancer_listing()

    Une idée ?

    Sinon j'ai trouver ceci => * Double-cliquer sur l'icône Poste de Travail
    * Cliquer sur Outils > Options des dossiers
    * Sélectionner l'onglet Types de fichiers
    * Une fenêtre s'ouvre. Cliquer sur Dossier dans les extensions puis sur Avancé.
    * Une nouvelle fenêtre apparaît. Cliquer sur Nouveau...
    * Dans le champ Action, inscrivez le nom de la commande qui apparaîtra dans le menu contextuel (Listing, Obtenir la liste, etc.)
    * Dans le champ Application utilisée pour exécuter cette action, copier la ligne de commande suivante :

    command.com /c tree /F /A > C:\Listing.txt
    * command.com /c tree /F /A (cette ligne de commande va lister le contenu du répertoire souhaité)
    * C:\Listing.txt (le fichier texte généré nommé Listing.txt se situera à la racine du disque dur)
    * Valider en cliquant sur OK.

    Moins performant je pense mais utile puisque cela genere un listing de l'ensemble d'un répertoire, ainsi que les sous dossiers et autre.

    Merci d'avance

    Arnaud
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      excuse-moi j'avais modifié qu'à moitié!!
      Const driver As String * 2 = "c:"
      Sub lancer_listing()
      Dim suff As String
      suff = InputBox("introduire lettres du suffixe des fichiers recherchés" _
                  & vbLf & "(sans le point devant)")
       If suff = "" Then: Exit Sub
      lister_suivant_suffixe driver, suff
      End Sub
      0
    2. Arnaud_P
       
      Merci bien :)

      Arnaud
      0