Lister fichiers d'un répertoire

Bonjour à tous,

Comment récupérer sur une feuille excel les fichiers d'un répetoire. avec leur taille ?

https://www.excel-pratique.com/~files/doc/fichiers.xls

amicalement

Claude.

salut,

dans la ligne

a = [B4] & "\excel2008\forum"

essaies en rajoutant le \ a la fin...

A te lire,

Souri84

edit2: pour B4 également, soit tu mets c: dans ta case ou alors tu le rajoutes dans ton code :

a = [B4] & ":\excel2008\forum"

salut souri84,

Bon çà marche pour ce fichier. mais peut-on avoir en + la taille du fichier (c'est surtout çà

qui m'intéresse)

bien reçu pour le lexique, mais je plante peux-tu compléter l'explication ?

https://www.excel-pratique.com/~files/doc/codesSouri84_pour_Claude.xls

à te lire

Claude

Pour le poids du fichier:

Sub Poids_claude()
'déclaration variables
Dim Fichier As String
Dim adresse as String

'nom du fichier
Range("B1").select
Fichier =  [B1] 
Adresse = "ADRESSE\" & [B1]

'rechercher la taille du fichier
With CreateObject("Scripting.FileSystemObject")

'cellule de droite = poids du fichiers
ActiveCell.Offset(0,1).Value = .GetFile(Adresse).Size / 1024 & " Ko."

End With

End Sub

A te lire,

Souri84

Pour la macro de ce matin:

Sub cherche_fichiers()

    With Application.FileSearch
        .LookIn = "C:\Documents and Settings\FR018661\My Documents\Macros VBA + USF\"
        .Filename = "*.bas"
        .Execute
        Sheets("Feuil1").Select
        Range("A1").Select
        For i = 1 To .FoundFiles.Count
        Cells(i + 2, 1) = .FoundFiles(i)
        Next
    End With
End Sub

Voici ce que j'ai essayé chez moi et ça marche nickel...

Dis moi ce que tu ne comprends pas,

Souri84

re,

pour le poids, je verrais ce soir, pour la macro du lexique , je plante au .FileName = "*.xls"

Sub cherche_fichiers()

    With Application.FileSearch              '_utilisation de l'outil filsearch d'Excel
        .LookIn = "C:\excel2008\Forum\"                   '_recherche dans le repertoire
        .FileName = "*.xls"             '_nom et/ou type de fichier. Ex: "*.pdf"; ou "dudu.pdf"
        .Execute_                                    'executer la macro
        Sheets("CONF_NS").Select                    '_ 'les mettre les uns en dessous des autres
        For i = 1 To .FoundFiles.Count_
        Cells(i + 2, 1) = .FoundFiles(i)
        Next                                       '_passer au siuvant
    End With                                     '_fin du with
End Sub

Comprends pas pourquoi çà plante !!

je dois m'absenter, à tout à l'heure

amicalement

Claude.

Je ne peux pas t'aider, elle fonctionne nickel chez moi.... j'ai fait copier coller, j'ai ajouté un dossier se nommant comme le tien et elle fonctionne à la perfection...

re,

"erreur 5" (argument ou appel de procédure incorrect)

j'ai mis ce code dans module1

ne serai-ce pas une question de version ??

Bon je regarde pour le poids .

à+

Claude.

re,

pour le poids

"erreur 53" (fichier introuvable)

que faut-il écrire exactement en b1 ?

avec les 2 macros que tu m'as donner, il faudrait n'en faire qu'une seule (liste noms et poids)

sur quelle version les as-tu fait ?

Claude.

Bonsoir, Claude, souri84

une autre façon de lister les fichiers, et leur taille dans une feuille de calcul

Sub Fichiers_et_Taille()
Dim fso As Object, Dossier As Object
Dim LeDossier, Lig As Long
LeDossier = "C:\excel2008\Forum\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)

For Each file In Dossier.Files
    Lig = Lig + 1
    With Worksheets("Feuil1")
        .Cells(Lig, 1) = file.Name
        .Cells(Lig, 2) = file.Size / 1024 & " Ko"
    End With
Next
Set fso = Nothing
End Sub

Bonne soirée

Salut felix, souri84,

là, çà marche sans problème.

Question subsidiaire :

dans le répertoire "Forum", j'ai des sous-répertoires (ou dossiers) qui n'apparaissent pas

ici.

il manque sans doute une ligne de code , non ?

merci à tous les deux

Claude.

Salut le forum

Pour lister les sous-dossiers aussi ,

adapte strFolderName = "C:\Excel\" à ton répertoire.

Sub ListFilesInFolder()

  Dim fso As Object
  Dim oSourceFolder As Object
  Dim oSubFolder As Object
  Dim oFile As Object
  Dim oFolder As Object
  Dim strFolderName As String
  Dim i As Long

    Set fso = CreateObject("Scripting.FileSystemObject")

    Columns("A:C").ClearContents
    Cells(1, 1).Value = "Parent folder"
    Cells(1, 2).Value = "File name"
    Cells(1, 3).Value = "File size"

   strFolderName = "C:\Excel\"

    i = 2

  Set oSourceFolder = fso.GetFolder(strFolderName)

  For Each oFolder In oSourceFolder.SubFolders

            For Each oFile In oFolder.Files

            Cells(i, 1).Value = oFile.ParentFolder.Path
            Cells(i, 2).Value = oFile.Name
            Cells(i, 3).Value = oFile.Size

            i = i + 1

            Next oFile

    Next oFolder

    Columns("A:C").Columns.AutoFit
    Set fso = Nothing
    Set oSourceFolder = Nothing

End Sub

Mytå

Re-,

une autre façon, qui ressemble à la précédente, mais qui fait appel à 2 procédures

Il faut lancer la procédure "Décompte"

Dim Lig As Long
Sub Décompte()
Dim Poids As Double
Application.ScreenUpdating = False
Lig = 1
Fichiers_et_Taille "C:\excel2008\Forum\", Poids, True
End Sub

Sub Fichiers_et_Taille(LeDossier, Poids As Double, _
    Optional SousDossiers As Boolean = False)
Dim fso As Object, Dossier As Object
Dim sousRep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)

For Each file In Dossier.Files
    Lig = Lig + 1
    With Worksheets("Feuil1")
        .Cells(Lig, 1) = file.Name
        .Cells(Lig, 2) = file.Size / 1024 & " Ko"
    End With
Next
If SousDossiers Then
    For Each sousRep In Dossier.SubFolders
        Fichiers_et_Taille sousRep.Path, Poids
    Next sousRep
End If
Set fso = Nothing
End Sub

Remarque bien la déclaration de la variable Lig au dessus du code

Salut Mytå,

En fait, ce fil est lié avec celui de "bertinnicolas" (classement pour graver CD - DVD)

J'essaye d'utiliser ton super fichier "Gravure_CD_DVD"

Pour éviter des erreurs, il serait bon de modifier un des deux fichiers pour qu'ils

prennent en compte la même unité (Ko,Mo,ou Go)

https://www.excel-pratique.com/~files/doc/49Errfichiers.xls

peux-tu m'orienter

amicalement

Claude.

édit : j'ai oublié de renommer le fichier

Salut le forum

Claude pour ta solution, modifie la ligne

'1 Megabyte = 1048576 Bytes
Cells(i, 3).Value = oFile.Size / 1048576

1 Kilobyte = 1024 Bytes

1 Megabyte = 1048576 Bytes

1 Gigabyte = 1073741824 Bytes

Mytå

re,

J'ai modifié la ligne dans Sub ListFilesInFolder c'est OK.

fichier "Gravure CD&DVD"

dans mon exemple pré-cité, c'est nickel avec option 4700 Megs, il me faut 3 DVD

j'ai tester avec option 700 Megs, (les mêmes fichiers pour voir) et là il me prend les fichiers > que 700,

n'y a t-il pas un contrôle, normalement çà devrait pas les prendre !

a-tu fini la correction des formules, car moi, j'ai peut-être "merdouillé"

Sinon Chapeau, le fichier "Gravure CD&DVD"

encore merci

Claude.

Édition par Mytå, Claude je suis à travailler un algorithme plus rapide.

dubois a écrit :

re,

pour le poids

"erreur 53" (fichier introuvable)

que faut-il écrire exactement en b1 ?

avec les 2 macros que tu m'as donner, il faudrait n'en faire qu'une seule (liste noms et poids)

sur quelle version les as-tu fait ?

Claude.

en B1 il fallait écrire le nom du fichier avec son extension, par exemple: "dubois.xls"

Et en C1 ça mettait le poids du fichier

Myta (désolé Myta, je n'ai qu'un ordi portable sans carré numérique....) a mieux répondu à ta question, mais c'était pour le principe.

J'aurais du mettre les explications tout de suite mais je n'y ai pas pensé, désolé,

A+

Souri84

Pour la macro avec application.filesearch,

pour rechercher dans les sous dossiers rajouter la ligne

.searchsubfolders = True.

Ce qui donne:

Sub cherche_fichiers() 

    With Application.FileSearch 
        .LookIn = "C:\Documents and Settings\FR018661\My Documents\Macros VBA + USF\" 
        .searchsubfolders = True 
        .Filename = "*.bas" 
        .Execute 
        Sheets("Feuil1").Select 
        Range("A1").Select 
        For i = 1 To .FoundFiles.Count 
        Cells(i + 2, 1) = .FoundFiles(i) 
        Next 
    End With 
End Sub

A+

Souri84

Édition par Mytå, pour information FileSearch n'est plus disponible dans Office2007.

bonjour souri84,

cette fois, j'ai tous les éléments, çà marche

encore merci à tous

amicalement

Claude.

Salut le forum

Claude, dans ton profil tu cites :

Si tu es satisfait de la réponse, n'oublie pas de cocher "Résolu" dans la lucarne en bas à gauche.

Merci à toi, aussi de bien le mettre en application.

Mytå

Rechercher des sujets similaires à "lister fichiers repertoire"