Macro pour ouvrir le dernier fichier texte généré...

Christian0258

XLDnaute Accro
Bonsoir à tout le forum,

Je souhaiterais votre aide pour une macro.
J'ai besoin d'ouvrir, rapidement, le dernier fichier TXT (créé par un logiciel ext).
J'utilise cette macro pour ouvrir un TXT bien précis, mais est-il possible de dire à la macro d'ouvrir le dernier fichier TXT généré ?

Sub OuvreTxtP()
Workbooks.OpenText Filename:="C:\Documents and Settings\UCPC_GCR\Mes documents\........txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 4))
End Sub

Merci pour votre aide,
Bien amicalement,
Christian
 

Pierrot93

XLDnaute Barbatruc
Re : Macro pour ouvrir le dernier fichier texte généré...

Re

modifies comme suit :

Code:
Option Explicit
Sub RechDerniersFichiers()
Dim MonRepertoire As String, fso As Object, fs As FileSearch
Dim montableau(), i As Integer, j As Integer, k As Integer, temp
[COLOR="red"][B]Dim monfichier As String[/B][/COLOR]
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch
fs.NewSearch
MonRepertoire = "C:\MesDocuments\Excel"
With fs
    .LookIn = MonRepertoire
    .Filename = "*.txt"
    If .Execute > 0 Then
    ReDim montableau(1 To .FoundFiles.Count, 1 To 2)
        For i = 1 To .FoundFiles.Count
            montableau(i, 1) = .FoundFiles(i)
            montableau(i, 2) = fso.GetFile(.FoundFiles(i)).DateLastModified
        Next i
    End If
End With

For i = LBound(montableau) To UBound(montableau)
    For j = LBound(montableau) To UBound(montableau)
        If montableau(i, 2) > montableau(j, 2) Then
            For k = LBound(montableau, 2) To UBound(montableau, 2)
                temp = montableau(i, k)
                montableau(i, k) = montableau(j, k)
                montableau(j, k) = temp
            Next k
        End If
    Next j
Next i
[B][COLOR="Red"]monfichier = montableau(1, 1)
Workbooks.OpenText monfichier[/COLOR][/B]
End Sub

peut être argument de la méthode "opentext" à rajouter, fonction de ton fichier.

@+
 

Christian0258

XLDnaute Accro
Re : Macro pour ouvrir le dernier fichier texte généré...

Bonjour à tout le forum,

Pierrot93, a fait la macro, ci-dessus qui ouvre le dremier fichier txt créé.

Peut-on rajouter à cette macro une cde pour qu'elle renomme le fichier txt ouvert avec le nom "DerniersMouvements". (le problème étant que le fichier ouvert ne porte jamais le même nom).

Merci à vous pour votre aide et merci à nouveau à Pierrot pour cette macro qui fonctionne parfaitement bien.

Bien amicalement,
Christian
 

Christian0258

XLDnaute Accro
Re : Macro pour ouvrir le dernier fichier texte généré...

Re, le forum, Skoobi,

Bonjour Skoobi et encore merci pour "tes aides".

Mais l'enregistreur macro m'enregistre le nom du fichier actuel mais la prochaine fois ce sera un autre nom et la macro plantera...non ?

à+
Christian
 

Dut

XLDnaute Nouveau
Re : Macro pour ouvrir le dernier fichier texte généré...

Pour ceux qui ont du mal à lire le code de Pierrot voici une version light avec commentaires... Merci encore Pierrot ! ;)

Code:
Public Sub RechDernierFichier()

Dim MonRepertoire As String
Dim fso As Object, fs As FileSearch
Dim montableau() As Variant
Dim i, j, maxi As Integer

'initialisation de la recherche de fichiers
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = Application.FileSearch
fs.NewSearch
MonRepertoire = "T:\DSO\DSO-Ressources\Activites\DSO-RR\pool\02 - Actus & budgets\Dotations\DimPool\Sources"

With fs
    .LookIn = MonRepertoire                 'définition de l'emplacemnt de recherhce
    .FileName = "EtatStockPool*.xls"        'définition du critère de recherche
    If .Execute > 0 Then                                'si on trouve un résultat
    ReDim montableau(1 To .FoundFiles.Count, 1 To 2)    'alors on crée un tableau 2 colonnes qui contiendra :
        For i = 1 To .FoundFiles.Count
            montableau(i, 1) = .FoundFiles(i)                                   'l'adresse du fichier trouvé
            montableau(i, 2) = fso.GetFile(.FoundFiles(i)).DateLastModified     'et la date de modification de celui-ci
        Next i
    End If
End With

maxi = 1
For i = LBound(montableau) To UBound(montableau)
        If montableau(i, 2) > montableau(maxi, 2) Then maxi = i     'on repère ensuite dans le tableau la ligne correspondant au fichier le plus récent
Next i

Workbooks.Open montableau(maxi, 1)      'et on ouvre celui-ci

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 299
Messages
2 086 996
Membres
103 423
dernier inscrit
Guyom GIL