Ouvrir le fichier le plus récent

  • Initiateur de la discussion Initiateur de la discussion Sun
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sun

Guest
Salut , Alors voila ce que j'aimerai réaliser :

Dans un dossier , contenant des sous-dossiers , j'ai un certain nombre de documents WORD.

j'aimerai pouvoir , grace à une macro , ouvrir celui dont la date de création est la plus récente.

j'ai deja + ou - compris comment recuperer la date de création d'un fichier et ouvrir un document Word. Mais inserer tout ca dans une boucle avec un nombre variable de fichiers , j'éprouve de grandes difficultés.

j'etais parti sur la piste du FileSearch et apres trier les Foundfiles par l'instruction .Datecreated , mettre tout les resultats dans une variable TYPE et trier tout ca mais apparemment la syntaxe n'est pas bonne, je sais meme pas si c possible de cette facon.

Toute Aide ou Info me serait précieuse.
Cordialement
Sun.
 
Bonjour Sun,

Une macro qui devrait t'aider à chercher dans le même répertoire que celui du fichier joint le fichier word le plus récent et le placer en cellule A1 avec sa date de création en cellule B1.
Pour Chercher dans un autre répertoire, il faut modifier le chemin.

Cordialement

Bernard [file name=FichierWord.zip size=7726]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/FichierWord.zip[/file]
 

Pièces jointes

Bernard ,

J'ai apprécié ta réponse. Le raisonnement est bon et m'aide beaucoup..ton exemple de macro a le merite d'etre simple et m'aide beaucoup à me familiariser avec cette syntaxe de malheur.

Il faut cependant que je puisse autoriser la recherche dans les Sous-dossiers et du coup afficher le chemin d'acces au lieu du nom.. mais grace à toi je me rapproche du but.
Merci beaucoup.

Pour le chemin d'acces au lieu du nom du fichier , Je remplace fichier.name par Fichier.path , mais ou suis-je sensé indiquer l'instruction qui doit ressembler à un truc du genre SearchSubfolder = true ?

Message édité par: Sun, à: 15/06/2006 14:45
 
bonsoir Sun , bonsoir cher Bernard

ci joint une adaptation à tester


Option Explicit
Option Base 1

Dim h As Integer
Dim Tableau2()



Sub lancementProcedure()
Dim Racine As String

Racine = 'C:\\\\\\\\Documents and Settings\\\\\\\\michel\\\\\\\\dossier'

ListeSousRepertoires Racine, True
MsgBox triDecroissant(Tableau2())

Erase Tableau2
h = 0
End Sub



Sub ListeSousRepertoires(nomDossier As String, optionSousRep As Boolean)
Dim Fso As Object, SourceFolder As Object, SubFolder As Object
Dim RepItem As Object
Dim Fichier As String
Dim FileItem As Object

Set Fso = CreateObject('Scripting.FileSystemObject')
Set SourceFolder = Fso.GetFolder(nomDossier)


Fichier = Dir(nomDossier & '\\\\\\\\*.doc')

Do Until Fichier = ''
h = h + 1
ReDim Preserve Tableau2(2, h)

Set Fso = CreateObject('Scripting.FileSystemObject')
Set FileItem = Fso.GetFile(nomDossier & '\\\\\\\\' & Fichier)

Tableau2(1, h) = FileItem
Tableau2(2, h) = FileItem.DateCreated

Fichier = Dir
Loop


If optionSousRep Then
For Each SubFolder In SourceFolder.subFolders
ListeSousRepertoires SubFolder.Path, optionSousRep
Next SubFolder
End If

End Sub



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 soirée
MichelXld

Message édité par: michelxld, à: 15/06/2006 18:13

Message édité par: michelxld, à: 16/06/2006 08:03
 
Bonjour Messieurs ,

Jolie Macro Michel.. J'ai honte de devoir dire ca mais apres quelques tests , j'ai pas moyen de la faire fonctionner..

j'ai erreur 91 'Variable Object ou variable de bloc With non définie ' sur l'instruction Set SourceFolder = Fso.GetFolder(nomDossier) ...j'ai du commettre une erreur de Novice que je suis quelquepart parceque je dois avouer que cette macro à fiere allure.

j'ai adapté le repertoire evidemment , trifouillé aux Bibliotheques d'objet..mais toujours cette maudite erreur.Je suis sur Excel 2002 SP2 avec VB 6.3 😱 j'ai Honte...

Encore Merci a vous deux pour votre participation et Bonne journée à vous tous.
 
Alors ca donne ca :

Sub Recherche()

Dim nombrefichiertrouvé As Integer
Dim Ctr As Variant
Dim chemin() As String
Dim Datecreation() As String

With Application.FileSearch
.NewSearch
.RefreshScopes
.LookIn = 'C:\\patati\\patata'
.Filename = '.doc'
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True
.Execute

nombrefichiertrouvé = .FoundFiles.Count
ReDim chemin(nombrefichiertrouvé)
ReDim Datecreation(nombrefichiertrouvé)

For Ctr = 1 To .FoundFiles.Count
chemin(Ctr) = .FoundFiles(Ctr)
Next

End With

Dim fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
Dim Fsc As Scripting.File

For Ctr = 1 To nombrefichiertrouvé
Set Fsc = fso.GetFile(chemin(Ctr))
Datecreation(Ctr) = Fsc.DateCreated
Next

Dim plusrecent As String

plusrecent = chemin(1)
For Ctr = 1 To nombrefichiertrouvé - 1

If Datecreation(Ctr + 1) > Datecreation(Ctr) Then
plusrecent = chemin(Ctr + 1)
End If
Next

Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Set wordApp = New Word.Application
With wordApp
.Visible = True
Set wordDoc = .Documents.Open(plusrecent, , False)
End With

End Sub



Merci Bernard et Michel pour vos exemples qui m'ont inspirés et motivés; et surtout aidé a comprendre comment utiliser les objets des bibliotheques.@+

Message édité par: Sun, à: 16/06/2006 13:30

Message édité par: Sun, à: 16/06/2006 13:51
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour