Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/06/2006, 22h51   #1
Invité de passage
 
Inscription : juin 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 7
Points : 1
Points : 1
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
surfeuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2006, 07h27   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 852
Points : 16 852
Envoyer un message via Skype™ à bbil
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..)
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2006, 09h21   #3
Invité de passage
 
Inscription : juin 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 7
Points : 1
Points : 1
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
surfeuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2006, 22h34   #4
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
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 :
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 :
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 :
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 :
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
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 10h08   #5
Invité de passage
 
Inscription : juin 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 7
Points : 1
Points : 1
Merci pour ta réponse!!

Bonne journee!
surfeuse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h03.


 
 
 
 
Partenaires

Hébergement Web