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

VBA Discussion :

[VBA]: ouverture du répertoire le + récent pour ouvrir fichier le + récent


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [VBA]: ouverture du répertoire le + récent pour ouvrir fichier le + récent
    Bonsoir,

    je cherche à ouvrir le fichier le plus récent du répertoire le plus récent parmi un ensemble de répertoires.
    Une alternative pourrait consister en un tri par ordre alphabétique des répertoires pour ouvrir le dernier dossier de la liste triée. Une fois ce répertoire ouvert, il me faudrait alors sélectionner le fichier le plus récent.
    Comment faire?
    avez vous des pistes? pouvez vous maider?

    Merci bcp

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu cherche le répertoire le plus récent et pour cela tu utilise un tri alphanumérique ?

    ..

    cherche du coté de FileSearch.. puis parcours la liste de fihier choisi en mémorisant le nom et la date du plus récent .. ( celui dont la date est la + grande..)

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut c'est pas vraiment ca..
    en fait la fonction FileSearch permet de rechercher un fichier. Or ce que je cherche avant tout cest rechercher un répertoire parmi un ensemble de répertoires d'un dossier donné et connu.

    Cette recherche je cherche soit à la faire par date et donc ouvrir le dossier le plus récent, soit à la faire par ordre alphabétique et prendre le dernier dossier de la liste triée.

    (Après une fois ce dossier ouvert, il me faut ouvrir le fichier le plus récent; mais ca a priori cest OK jai trouvé comment faire ca)

    donc mon big pb la cest louverture du bon répertoire.. et jy arrive pas du tout; cest pour le boulot et la je suis completement coincee..
    aidez moi svp

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir


    Tu peux tester cette procedure pour rechercher le dernier dossier modifié , puis le dernier fichier modifié dans ce répertoire
    Attention , le temps de calcul peut etre tres long si le dossier racine contient beaucoup de sous dossiers
    Cet exemple ne gère pas un dossier récent qui ne contiendrait aucun fichier

    Il te restera à adapter une fonction de tri alphabetique



    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
    Option Explicit
    Option Base 1
     
    Dim h As Integer
    Dim Tableau2()
     
     
    Sub listeDossiersEtSousDossiers()
    Dim Racine As String, recentDir As String
     
    Racine = "C:\Documents and Settings\michel\dossier"
    ListeSousRepertoires Racine, True 'recherche le repertoire le + récent
     
        recentDir = triDecroissant(Tableau2())
        Erase Tableau2
        h = 0
     
        listeFichiers_dateModification recentDir
        MsgBox triDecroissant(Tableau2())
     
    Erase Tableau2
    h = 0
    End Sub

    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
    Sub ListeSousRepertoires(SourceFolderName As String, _
    IncludeSubfolders As Boolean) ' adapté de Ole P Erlandsen
    Dim Fso As Object, SourceFolder As Object, SubFolder As Object
    Dim RepItem As Object
     
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = Fso.GetFolder(SourceFolderName)
     
        h = h + 1
        ReDim Preserve Tableau2(2, h)
        Tableau2(1, h) = SourceFolder
        Tableau2(2, h) = SourceFolder.DateLastModified
     
        If IncludeSubfolders Then
            For Each SubFolder In SourceFolder.subFolders
            ListeSousRepertoires SubFolder.Path, IncludeSubfolders
            Next SubFolder
        End If
     
    End Sub

    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
    Sub listeFichiers_dateModification(Chemin As String)
    Dim Fichier As String
    Dim Fso As Object, FileItem As Object
     
    Fichier = Dir(Chemin & "\*.*")
     
    Do
        h = h + 1
        ReDim Preserve Tableau2(2, h)
     
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set FileItem = Fso.GetFile(Chemin & "\" & Fichier)
     
        Tableau2(1, h) = FileItem
        Tableau2(2, h) = FileItem.DateLastModified 'lastmodified
     
        Fichier = Dir
    Loop Until Fichier = ""
     
    End Sub

    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
    Function triDecroissant(Tableau()) As String
    Dim i As Integer
    Dim z As Byte, Valeur As Byte
    Dim Cible As Variant
     
    Do
        Valeur = 0
        For i = 1 To h - 1
            If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
                For z = 1 To 2
                    Cible = Tableau(z, i)
                    Tableau(z, i) = Tableau(z, i + 1)
                    Tableau(z, i + 1) = Cible
                Next z
            Valeur = 1
            End If
        Next i
    Loop While Valeur = 1
     
     
    '--- le plus récent ---
    triDecroissant = Tableau(1, 1)
    End Function



    bonne soiree
    michel

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse!!

    Bonne journee!

Discussions similaires

  1. Macro pour ouvrir fichier d'un répertoire en fonction de sa date
    Par Alasgard dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/04/2014, 18h17
  2. [XL-2007] Userform pour ouvrir fichier pdf dans excel
    Par signorepel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/06/2013, 10h57
  3. Réponses: 1
    Dernier message: 19/09/2011, 09h04
  4. Zone liste pour ouvrir fichier excel
    Par majothi dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/10/2008, 14h41
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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