Comparaison taille de dossier

Bonjour à tous !

J'aurais besoin de créer une macro me permettant de comparer le volume de données présent dans deux sous dossier présent dans un dossier principal et que je dois reconnaître grâce à leur nom.

Étant un gros novice en vba je voulais savoir si c'était faisable et comment faire ? Merci d'avance pour votre aide !

Hello,

à tester :

Set fs = CreateObject("Scripting.FileSystemObject")
  msgbox fs.GetFolder("C:\...").Size

Bonjour,
Il y a une solution très simple avec Power Query et la fonction Folder.Files().
Celle-ci retourne l'ensemble des dossiers et sous-dossiers avec ses attributs (dont la taille).
Un peu plus d'éléments sont cependant demandés pour une réponse réellement adaptée.
Cdlt.

bonjour et merci pour vos réponses !

Pou rentrer donc plus dans les détails, Via des fenêtres messagesbox je choisirai le dossier contenant les données brutes et celui contenant les données numérisé. Une fois cela fait je voudrais qu'une comparaison des dossiers présent dans les deux sources soit faite et dans le cas où les noms de dossier sont identiques on compare le volume de données présent dans les deux (par ex si dans le dossier brut il y a 10go et dans le dossier numérisé il y en a 1 indiqué ces deux valeurs plus le ratio de 10%.

J'espere que ça correspond aux informations attendues :)

Cet exemple de macro en VBA vous montrera comment on peut, par récursivité, identifier tous les fichiers d'une arborescence en isolant :

- le nom du dossier où il se trouve ;
- son nom complet ;
- le nom de sa racine et celui de son extension ;
- sa date et son poids.
Je l'ai adapté pour qu'il sorte la taille totale des fichiers en Mo + octets.

A vous de l'adapter à votre besoin réel.

PS : il est très facile de mettre en place un filtre pour ne traiter, par exemple, que les fichiers PDF.

35recursivite.xlsm (23.79 Ko)

Merci beaucoup pour cet exemple c'est top !

Et si je souhaite récupérer uniquement la taille du dossier et non celui de chaque fichier ?

Vous ne gardez que la partie qui vous intéresse, soit :

Option Explicit

Public volume As Long

Sub ListFiles()
    Dim f As Object, fso As Object
    Dim dossier As String
    Dim wB As Workbook, wS As Worksheet
    Dim i As Integer, volMo As Long, volOct As Long

    Set wB = ActiveWorkbook
    Set wS = ActiveSheet
    Set fso = CreateObject("Scripting.FileSystemObject")

    volume = 0
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        If .SelectedItems.Count = 0 Then
            MsgBox "Abandon"
            End
        End If
        dossier = .SelectedItems(1)
    End With

    scanFichiers wS, fso, dossier

    volOct = volume Mod 1048576
    volMo = Int(volume / 1048576)
    MsgBox "Volume total des fichiers = " & volMo & " Mo - " & volOct & " octets"
End Sub

Private Sub scanFichiers(wS, fso, dossier)
    Dim f, fo, ficTaille As Long

    For Each f In fso.GetFolder(dossier).Files
        ficTaille = FileLen(dossier & "\" & f.Name)
        volume = volume + ficTaille
    Next 'f

    For Each fo In fso.GetFolder(dossier).subFolders
        scanFichiers wS, fso, dossier & "\" & fo.Name
    Next 'fo
End Sub
15recursivite2.xlsm (22.00 Ko)
Rechercher des sujets similaires à "comparaison taille dossier"