Taille fichier

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

Merci

13 réponses

Utilisateur anonyme
29 juin 2008 à 01:11
Salut,

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

__________
  Kenji
0
Utilisateur anonyme
29 juin 2008 à 01:12
Ou plutôt GetFileSizeEx
http://msdn.microsoft.com/en-us/library/aa364957(VS.85).aspx

__________
  Kenji
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 juin 2008 à 01:13
0
NgXCherche Messages postés 18 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 30 juin 2008
29 juin 2008 à 01:29
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
29 juin 2008 à 11:13
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
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
29 juin 2008 à 17:42
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.
0
sturtrid Messages postés 133 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 13 juillet 2012 1
30 juin 2008 à 04:11
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
0
NgXCherche Messages postés 18 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 30 juin 2008
30 juin 2008 à 08:57
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 juin 2008 à 09:06
tu tentes de faire fonctionner du code .Net dans un environnement VBA...

concernant fileLen, il va bien pour des fichiers < 4Go
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 juin 2008 à 09:08
2 Go (Long) pardon ^^
0
NgXCherche Messages postés 18 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 30 juin 2008
30 juin 2008 à 09:14
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 :(
0
NgXCherche Messages postés 18 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 30 juin 2008
30 juin 2008 à 09:27
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

+
0
sturtrid Messages postés 133 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 13 juillet 2012 1
30 juin 2008 à 21:12
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 ++
0
Rejoignez-nous