Taille fichier

Signaler
Messages postés
18
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
30 juin 2008
-
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
-
Sl, je voudrai savoir s'il existe un code pour pouvoir lire(connaitre) la taille d'un fichier

Merci

13 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
32
Salut,

Voir l'api GetFileSize
http://msdn.microsoft.com/en-us/library/aa364955.aspx

__________
  Kenji
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
32
Ou plutôt GetFileSizeEx
http://msdn.microsoft.com/en-us/library/aa364957(VS.85).aspx

__________
  Kenji
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
Messages postés
18
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
30 juin 2008

Merci pour les réponses

Charles Racaud  la fonction GetFileSizeEx  pourrait-elle fonctionner pour le VB d'Excel ?

BOOL WINAPI GetFileSizeEx(
__in HANDLE hFile,
__out PLARGE_INTEGER lpFileSize
);

Que veut dire WINAPI ?

merci
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
32
WinAPI, c'est l'api windows. Windows fonction grâce à une multitude d'api.
Voila un exemple :

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileW" ( _
  ByVal lpFileName As Long, ByVal dwDesiredAccess As Long, _
  ByVal dwShareMode As Long, lpSecurityAttributes As Any, _
  ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, _
  ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
  ByVal hObject As Long) As Long
Private Declare Function GetFileSizeEx Lib "kernel32" (ByVal hFile As Long, _
  lpFileSizeHigh As Currency) As Boolean

Private Const GENERIC_READ = &H80000000
Private Const FILE_SHARE_READ = &H1
Private Const OPEN_EXISTING = 3

Private Function GetFileSize(ByVal FileName As String) As Currency
  Dim hFile As Long
  hFile = CreateFile(StrPtr(FileName), GENERIC_READ, FILE_SHARE_READ, ByVal 0&, _
    OPEN_EXISTING, ByVal 0&, ByVal 0&)
  Call GetFileSizeEx(hFile, GetFileSize)
  Call CloseHandle(hFile)
  GetFileSize = GetFileSize * 10000
End Function
<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->
Coloration syntaxique vb/vba/vb.net

__________
  Kenji
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonjour,

Comme l'indique PCPT, il reste que FILELEN est tout même plus simple à mettre en oeuvre...
Voir cette source (presque la 1er sur VBF) : http://www.vbfrance.com/codes/TAILLE-FICHIER_42.aspx donnant la base...

Amicalement,
Us.
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
1
Bonsoir,

Juste un petit mot, tu n'es pas obligé de passer par les API... Elles fonctionnent très bien effectivement (question performance je ne sais pas du tout si les API sont supérieures...Mais si tu ne cherches pas à faire une boucle qui récupère la taille d'un grand nombre de fichiers, cela n'aura pas spécialement d'impact), mais tu peux aussi passer simplement par :



Dim tailleEnOctets As Long = _
My.Computer.FileSystem.GetFileInfo("C:\test.txt").Length

Par contre là, je suis sure que cela est plus performant que FILELEN(fichier).

Bye ++

_________________________________________________
On passe presque toute sa vie déguisé en adulte
Messages postés
18
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
30 juin 2008

Salut

Quand j'écris ce code et que je le compile
Sub essai()
Dim tailleEnOctets As Long
tailleEnOctets = My.Computer.FileSystem.GetFileInfo("C:\blablabla.txt").Length
End Sub

le programme bugg et me met erreur 424 "d'objet requis" sur la ligne :
 tailleEnOctets = My.Computer.FileSystem.GetFileInfo("C:\blablabla.txt").Length
merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
tu tentes de faire fonctionner du code .Net dans un environnement VBA...

concernant fileLen, il va bien pour des fichiers < 4Go
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
2 Go (Long) pardon ^^
Messages postés
18
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
30 juin 2008

J'ai également essayé ce code :

Dim Fichier As String
Dim Chemin As String
Dim Taille As Long
Dim FichierNom As String
Chemin = "C:\Documents and Settings\bevent\Bureau\Exploitation_database"
FichierNom = "GAVRAY_data10min_2008-06-26.txt"
Fichier = Dir$(Chemin & FichierNom)
Taille = 0
Do While Fichier <> ""
    Taille = Taille + FileLen(Chemin & Fichier)
    Fichier = Dir$
Loop
MsgBox (FichierNom & " : " & Taille & " octets")

Mais le Msgbox me dit que mon fichier à une taille de 0 octets :(
Messages postés
18
Date d'inscription
samedi 10 mai 2008
Statut
Membre
Dernière intervention
30 juin 2008

D'accord en faite il suffit tout simplement de taper cette ligne :

MsgBox FileLen("C:\Documents and Settings\bevent\Bureau\Exploitation_database\GAVRAY_data10min_2008-06-26.txt")

Merci Forum

+
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
1
Oups... Milles excuses, je n'avais vraiment pas fait attention au langage... Vi, j'étais bien à coté avec la ligne de code proposée ! Autant pour moi

Bonne soirée ++