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 Listing des dossiers, des fichiers du dossier et de la date de dernière mise à jour des fichiers [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Macro Listing des dossiers, des fichiers du dossier et de la date de dernière mise à jour des fichiers
    Bonjour à tous !

    J'ai besoin de votre aide précieuse

    Je dois, dans le cadre de mon stage, effectuer une macro permettant de :
    - Lister sur Excel tous les fichiers enregistrés dans un certain dossier (déjà réussi à faire)
    - Afficher les dates de dernière mise à jour de ces fichiers
    - Afficher le nom du dossier dans lequel se trouve chaque fichier listés précédemment

    J'ai déjà réussi à effectuer le 1er tiret à l'aide la macro suivante :


    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 ListeFichiers()
    Application.ScreenUpdating = False
    Dim myPath As String, myFile As String
     
    myPath = "\\data\data\Finances-Gestion\Contrôle de Gestion\Stagefin\Stage Yann KLEIBER\Investissements et préprogrammes\"
    myFile = Dir(myPath & "\*.*")
     
    c = 1
    Do While myFile <> ""
        Cells(c, 2) = myFile
        myFile = Dir()
        c = c+1
    Loop
     
    End Sub

    Cela fonctionne très bien, j'ai la liste de tous les fichiers du dossier spécifié dans "myPath". Mais pour le reste je suis complètement perdu :/

    Pourriez-vous m'aider svp ?

    Je vous remercie

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour youyou68,

    Voici pour toi :
    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
    Option Explicit
     
    Sub ListeFichiers()
    'Application.ScreenUpdating = False
    Dim myPath As String, myFile As String
    Dim oRng As Range
    Dim c As Integer
     
    myPath = "C:\Users\...\Desktop\VBA"
    myFile = Dir(myPath & "\*.*")
     
    c = 0
    With Worksheets("Feuil1")
        Set oRng = .Range("A1")
        Do While myFile <> ""
            oRng.Offset(c, 0) = myFile
            oRng.Offset(c, 1) = FileDateTime(myPath & "\" & myFile)
            oRng.Offset(c, 2) = CurDir(myPath & "\" & myFile)
            myFile = Dir()
            c = c + 1
        Loop
    End With
     
    End Sub
    Par contre, je ne comprends pas du tout le dernier "tiret" comme tu dis puisque tu as le path de tes fichiers...
    Donc... je te propose une méthode CurDir mais... je ne sais pas trop.

    N'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 350
    Points
    34 350
    Par défaut
    Salut,

    un coup d'oeil dans la ne fait de mal a personne :
    http://excel.developpez.com/faq/?pag...riptingRuntime

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Wahou merci beaucoup Kimy_Ire ça fonctionne à merveille !!

    En fait pour le dernier tiret, j'aimerais juste que ça m'intègre le nom du dossier concerné pour chaque fichiers (car ça va nous permettre de créer une base de données avec tous les dossiers et tous les fichiers du disque, pour une analyse par la suite).
    Tu as compris ? :/ Je m'exprime peut être mal désolé..

    Encore merci !!
    Yann

  5. #5
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Non !

    Ce n'est pas ce que tu insères dans myPath ?

  6. #6
    Expert éminent sénior
    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
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, voir Liste des fichiers d'un dossier ( via les APIs avec recursion ou non ) qu'il faudra adapter à ton contexte ( mais c'est le plus rapide devant FSO et autre DIR )

    Il y a une version 32/64 bits : ici

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Il y a une version 32/64 bits : ici
    Merci pour la "reconnaissance", même si je n'ai pas fait grand chose.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Oui Kimy_Ire c'est ce que j'intègre dans myPath, et j'aimerais que s'affiche le nom du dossier, à savoir "Investissements et préprogramme" dans mon cas.

    Merci à tous pour vos réponses

    Je me suis mal expliqué :/

    En fait voilà le résultat que j'aimerais :

    Dossier : Fichiers : Date mise à jour :
    Investissements et préprogrammes Investissements1.xlsx 28/01/2015 18:30
    Travaux divers Suivi investissements.doc 14/12/2014 08:54
    etc...


    Donc dans myPath, il faudrait que je puisse intégrer tous les dossiers et non pas uniquement le dossier "Investissements et préprogrammes"..

  9. #9
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour youyou68,

    Exprime toi clairement. Je n'ai pas tes dossiers sous les yeux...
    Je ne comprends pas ce que tu veux dire.

    Dossier ? Oui... mais lesquels exactement ?

    Bref, précise clairement ce que tu veux.
    Comme d'hab'... Ce n'est pas à la communauté d'aller chercher des infos !

    Cordialement,
    Kimy (dans un bon jour, heureusement )

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Oui je suis désolé...

    J'ai 4 dossiers (Téléphonie, PMR, Travaux divers, Investissements et préprogrammes) enregistrés dans un répertoire (chemin d'accès : "\\data\data\Finances-Gestion\Contrôle de Gestion\Stagefin\Stage Yann KLEIBER\").

    J'aimerais que s'affiche sur Excel, les noms des 4 dossiers avec, pour chacun d'eux, les fichiers qui y sont enregistrés et leurs date de dernière mise à jour..

    Est-je été plus clair ?

    Merci de m'accorder de votre temps..

    Cordialement,
    Yann

  11. #11
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    youyou68,

    Ce que j'ai un peu de mal à comprendre, c'est le fait que tu parcours seulement un dossier.
    En l’occurrence, tu cherches dans la macro que tu as donner les fichiers dans "\\data\data\Finances-Gestion\Contrôle de Gestion\Stagefin\Stage Yann KLEIBER\Investissements et préprogrammes\".

    Donc la question est, parcours-tu les différents sous-dossier depuis le dossier parents où exécutes-tu plusieurs fois la macro ?

    Cordialement,
    Kimy

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Justement j'ai fait les modifications nécessaires pour pour prendre en compte tous les dossiers et pas seulement le dossier "Investissements et préprogrammes", mais cela ne fonctionne pas..

    Je vous ci-dessous met la macro que j'ai actuellement :

    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
    Sub ListeFichiers()
    'Application.ScreenUpdating = False
    Dim myPath As String, myPath2 As String, myFile As String
    Dim oRng As Range
    Dim c As Integer
     
    myPath = "\\data\data\Finances-Gestion\Contrôle de Gestion\Stagefin\Stage Yann KLEIBER\"
    myPath2 = myPath & "\* *"
    myFile = Dir(myPath2 & "\*.*")
     
    c = 0
    With Worksheets("Feuil1")
        Set oRng = .Range("A1")
        Do While myFile <> ""
            oRng.Offset(c, 0) = myPath2
            oRng.Offset(c, 1) = myFile
            oRng.Offset(c, 2) = FileDateTime(myPath & "\" & myFile)
            myFile = Dir()
            c = c + 1
        Loop
    End With
     
    End Sub

  13. #13
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    youyou68,

    Au lieu de te casser les dents sur quelque chose qui n'est pas à ta portée, peut-être aurais-tu dû simplement chercher sur le net.
    Beaucoup de personnes ont rencontré ce problème et des tutos très bien fait peuvent rapidement te servir et accéder à ton besoin.

    Ainsi voici le code, à adapter (parce que trop d'éléments) :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Option Explicit
     
    Sub test()
      ListFilesInFolder "C:\Users\...\Desktop\test", True
    End Sub
     
    Sub ListFilesInFolder(strFolderName As String, bIncludeSubfolders As Boolean)
      ' adapté de Ole P Erlandsen
      ' necessite d'activer la reference Microsoft Scripting RunTime
      Static FSO As FileSystemObject
      Dim oSourceFolder As Scripting.Folder
      Dim oSubFolder As Scripting.Folder
      Dim oFile As Scripting.File
      Static wksDest As Worksheet
      Static iRow As Long
      Static bNotFirstTime As Boolean
     
      If Not bNotFirstTime Then
        Set wksDest = Worksheets("Feuil1")
        Set FSO = CreateObject("Scripting.FileSystemObject")
        wksDest.Cells(1, 1) = "Parent folder"
        wksDest.Cells(1, 2) = "Full path"
        wksDest.Cells(1, 3) = "File name"
        wksDest.Cells(1, 4) = "Size"
        wksDest.Cells(1, 5) = "Type"
        wksDest.Cells(1, 6) = "Date created"
        wksDest.Cells(1, 7) = "Date last modified"
        wksDest.Cells(1, 8) = "Date last accessed"
        wksDest.Cells(1, 9) = "Attributes"
        wksDest.Cells(1, 10) = "Short path"
        wksDest.Cells(1, 11) = "Short name"
     
        iRow = 2
        bNotFirstTime = True
      End If
      Set oSourceFolder = FSO.GetFolder(strFolderName)
      For Each oFile In oSourceFolder.Files
        wksDest.Cells(iRow, 1) = oFile.ParentFolder.Path
        wksDest.Cells(iRow, 2) = oFile.Path
        wksDest.Cells(iRow, 3) = oFile.Name
        wksDest.Cells(iRow, 4) = oFile.Size
        wksDest.Cells(iRow, 5) = oFile.Type
        wksDest.Cells(iRow, 6) = oFile.DateCreated
        wksDest.Cells(iRow, 7) = oFile.DateLastModified
        wksDest.Cells(iRow, 8) = oFile.DateLastAccessed
        wksDest.Cells(iRow, 9) = oFile.Attributes
        wksDest.Cells(iRow, 10) = oFile.ShortPath
        wksDest.Cells(iRow, 11) = oFile.ShortName
     
        iRow = iRow + 1
      Next oFile
     
      For Each oSubFolder In oSourceFolder.SubFolders
        ' On peut mettre ici un traitement spécifique pour les dossiers
      Next oSubFolder
     
      If bIncludeSubfolders Then
        For Each oSubFolder In oSourceFolder.SubFolders
          ListFilesInFolder oSubFolder.Path, True
        Next oSubFolder
      End If
     
    End Sub
    Merci @AlainTech et son code sur ce post.

    Bref, n'hésite pas à revenir vers moi quand même !
    Je pense que ceci te permettra de faire ce que tu souhaites.

    Cordialement,
    Kimy

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup, après quelques modifications ça fonctionne parfaitement..

    J'avais également essayé de suivre le post mais sans réussite.

    Merci de m'avoir accordé de votre temps et d'avoir été patient avec moi :/

    Bonne journée !
    Cordialement,
    Yann

  15. #15
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Pas de prob'.
    Ravi d'avoir aider.

    Clôture la conversation avec et pour les réponses pertinentes, n'hésite pas à .

    Cordialement,
    Kimy

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/07/2007, 12h17
  2. mis à jour des tables access avec un dossier excel
    Par sweetty dans le forum Modélisation
    Réponses: 1
    Dernier message: 12/07/2007, 11h34
  3. Réponses: 2
    Dernier message: 21/04/2007, 21h19
  4. Mise à jour des fichiers syst lors d'une installation
    Par Asdorve dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 03/07/2006, 16h27
  5. [HTML] Problème mise à jour des fichiers en cache
    Par El Riiico dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/09/2005, 18h00

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