IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro : Taille répertoire à partir de son chemin


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Par défaut Macro : Taille répertoire à partir de son chemin
    Bonjour,

    J'ai un fichier Excel qui contient une seule feuille nommée "Rep", elle contient 2 Colonnes :
    • Colonne 1 : contient le chemin complet vers un répertoire
    • Colonne 2 : après exécution d'une la macro doit contenir la taille totale du répertoire de la colonne 1

    Je ne suis pas un fan de excel ni de VBA, veuillez m'aider svp à créer cette macro qui remplit la colonne 2 avec la taille du répertoire dans le chemin complet et dans la colonne 1.

    Très amicalement,

    ---
    HAMDAOUI Mohamed Amine
    Ingénieur Produit - YMO

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salam, cela devrait te convenir

  3. #3
    Membre éprouvé Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Par défaut
    Votre fichier est très intéressant, est ma donné l'idée de la façon avec laquelle je peux résoudre le problème! J'ai essayé de le modifier avec mes connaissances basique en VBA ! Mais j'ai quelques problèmes et difficultés (compilation) pour arriver à mon but.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub Tst()
        Dim i As Long
        Dim FSO As Scripting.FileSystemObject
        Dim Dossier As Scripting.Folder
     
        Set FSO = New Scripting.FileSystemObject
     
        For i = 1 To 10
            Set Dossier = FSO.GetFolder(Feuil1.Cells(iRow, 1))
            Feuil1.Cells(iRow, 2).Value = Dossier.Size
        Next
     
        Set Dossier = Nothing
        Set FSO = Nothing
    End Sub
    Mon but est plus simple : j'ai les chemins complets (dans la première colonne) vers les dossiers dont je veux connaitre la taille ==> Une fois je clique sur le bouton la macro remplie automatiquement la deuxième colonne.

    PS : dans mon code j'ai supposé qu'il y a 10 colonnes! à améliorer dans le futur.

    Cordialement,

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, dans ce cas un conseil tout de même vérifier l'existence du dossier
    et sous VBE dans Outils/References Cocher Microsoft Scripting Runtime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Sub Tst2()
    Dim iRow As Long, LastRow As Long, sChemin As String
    Dim FSO As Scripting.FileSystemObject
    Dim Dossier As Scripting.Folder
     
        LastRow = ShDatas.Range("A" & Rows.Count).End(xlUp).Row
        ShDatas.Columns("B:B").Clear
     
        Application.ScreenUpdating = False
     
        Set FSO = New Scripting.FileSystemObject
     
        For iRow = 1 To LastRow
            sChemin = ShDatas.Cells(iRow, 1)
            If ExistenceDossier(sChemin) = True Then
                Set Dossier = FSO.GetFolder(sChemin)
                ShDatas.Cells(iRow, 2) = Dossier.Size
            End If
        Next iRow
     
        Application.ScreenUpdating = True
     
        Set Dossier = Nothing
        Set FSO = Nothing
    End Sub
     
    Private Function ExistenceDossier(NomDossier As String) As Boolean
        ExistenceDossier = Dir(NomDossier, vbDirectory) <> "" And Len(NomDossier) > 0
    End Function
    sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Tst3()
    Dim iRow As Long, LastRow As Long, sChemin As String
    Dim FSO As Object
    Dim Dossier As Object
     
        LastRow = ShDatas.Range("A" & Rows.Count).End(xlUp).Row
        ShDatas.Columns("B:B").Clear
     
        Application.ScreenUpdating = False
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
     
        For iRow = 1 To LastRow
            sChemin = ShDatas.Cells(iRow, 1)
            If ExistenceDossier(sChemin) = True Then
                Set Dossier = FSO.GetFolder(sChemin)
                ShDatas.Cells(iRow, 2) = Dossier.Size
            End If
            Application.StatusBar = iRow
        Next iRow
     
        Application.ScreenUpdating = True
     
        Set Dossier = Nothing
        Set FSO = Nothing
    End Sub
     
    Private Function ExistenceDossier(NomDossier As String) As Boolean
        ExistenceDossier = Dir(NomDossier, vbDirectory) <> "" And Len(NomDossier) > 0
    End Function

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le même
    Valider Microsoft Scripting Runtime -> dans l'éditeur VB -> Outils -> References
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub TailleRep()
    Dim Rep As String, Chemin As String, fso
    Dim LeRep As Scripting.Folder
        Set fso = CreateObject("Scripting.FileSystemObject")
        Chemin = "D:\"
        Rep = Dir(Chemin, vbDirectory)
        Do While Len(Rep) > 0
            If (GetAttr(Chemin & Rep) And vbDirectory) = vbDirectory Then
                i = i + 1
                Cells(i, 1) = Chemin & Rep
                Set LeRep = fso.GetFolder(Cells(i, 1).Value)
                Cells(i, 2) = LeRep.Size
            End If
            Rep = Dir()
        Loop
    End Sub

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/02/2013, 13h20
  2. Récupérer le nom d'un fichier à partir de son chemin
    Par Jiraiya42 dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2007, 11h38
  3. Réponses: 1
    Dernier message: 06/12/2006, 15h24
  4. Parcourir un répertoire et stocker son chemin complet
    Par Paloma dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/10/2006, 12h29
  5. Ouvrir un dossier à partir de son chemin
    Par Mr.Gus dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo