[VBA] Ouverture d'un fichier exel
Résolu
evilfalcon
Messages postés
76
Statut
Membre
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
Bonjour,
J'ai trouvé un programme qui me permet d'ouvrir un fichier exel, et de récupérer des donner:
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
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:
- [VBA] Ouverture d'un fichier exel
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
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"
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
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
Oui, ce sera peut être plus simple.
A+