[VBA] Ouverture d'un fichier exel

Résolu/Fermé
evilfalcon Messages postés 58 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 10 novembre 2015 - 17 févr. 2015 à 12:10
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 17 févr. 2015 à 14:09
Bonjour,

J'ai trouvé un programme qui me permet d'ouvrir un fichier exel, et de récupérer des donner:

Sub ImporterDonneesSansOuvrir()
Dim Chemin As String, Fichier As String
Chemin = "C:\Pijaku\Ne_fait_rien_de_ses_journées\CCM\"
Fichier = "source.xls"
ThisWorkbook.Names.Add "plage", _
RefersTo:="='" & Chemin & "[" & Fichier & "]Feuil1'!$A$1:$F$10"
With Sheets("Feuil2")
.[A1:F10] = "=plage"
.[A1:F10].Copy
Sheets("Feuil1").Range("A1").PasteSpecial xlPasteValues
.[A1:F10].Clear
End With
End Sub


Mon problème est que je voudrais récupéré des données dans des fichiers qui se nomment :
- 2014.12.01,00.18.xls (date, puis heure d'enregistrement).
- 2014.12.01,00.55.xls
...
Ils sont trier par leur heure de création. Par contre, ils ne suivent aucune logique, le fichier n'est pas enregistrer tous les 37 minutes mais par leur taille. (Quand il arrive à 450 ko, le fichier est créer).

Je voudrais savoir s'il existe une fonction qui ouvre les fichiers dans l'ordre présent dans un dossier.

Merci par avance
Cordialement
Evilfalcon
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
17 févr. 2015 à 12:30
Bonjour,

Trouvée pour vous ICI, cette fonction liste les fichiers par ordre décroissant de date de création. En commentaires dans le code comment les lister par ordre croissant...
Nécessite d'activer la référence "Microsoft Scripting RunTime"
Option Explicit
Option Base 1


Sub triDecroissant_Fichiers_DateDreation()
    Dim Fichier As String, Chemin As String
    '
    'Nécessite d'activer la référence "Microsoft Scripting RunTime"
    '
    Dim Fso As Scripting.FileSystemObject
    Dim FileItem As Scripting.File
    Dim Tableau()
    Dim m As Integer, i As Integer
    Dim z As Byte, Valeur As Byte
    Dim Cible As Variant
       
    '---liste les fichiers du répertoire ---
    Chemin = "C:\Documents and Settings\mimi\dossier\excel"
    Fichier = Dir(Chemin & "\*.*")
    'pour filtrer sur un type de fichiers (par exemple xls)
    'Fichier = Dir(Chemin & "\*.xls")
    
    'Boucle sur les fichiers
    Do
        
        m = m + 1
        ReDim Preserve Tableau(2, m)
        Tableau(1, m) = Fichier
                       
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set FileItem = Fso.GetFile(Chemin & "\" & Fichier)
                    
        'Récupère la date de création
        Tableau(2, m) = Left(FileItem.DateCreated, 10)
        'Pour récupérer la date de dernière modification
        'Tableau(2, m) = Left(FileItem.DateLastModified, 10)
        'Pour récupérer la taille du fichier
        'Tableau(2, m) = Left(FileItem.Size, 10)
        
        Fichier = Dir
    Loop Until Fichier = ""
    
    
    '---Trie les fichiers par ordre décroissant de création ---
    Do
        Valeur = 0
        For i = 1 To m - 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
         
         
    '--- Transfère les données dans la feuille de calcul ---
    For i = 1 To m
        Cells(i, 1) = Tableau(1, i)
        Cells(i, 2) = Tableau(2, i)
    Next i
    
    'Pour transférer par ordre croissant:
    'For i = m To 1 Step -1
        'Cells(m - i + 1, 1) = Tableau(1, i)
        'Cells(m - i + 1, 2) = Tableau(2, i)
    'Next i
    
    'Ajuste la taille des colonnes
    Columns("A:B").AutoFit
End Sub

0
evilfalcon Messages postés 58 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 10 novembre 2015
17 févr. 2015 à 14:02
merci!
Comme je suis pas un pro du VBA, je vais d'abord créer un onglet avec les noms, puis en ouvrir les fichiers en fonction des noms.

Cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751 > evilfalcon Messages postés 58 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 10 novembre 2015
17 févr. 2015 à 14:09
Comme tu veux.
Oui, ce sera peut être plus simple.
A+
0