VBA: calculer la taille de fichier (en octets, ko, Mo et Go)



Dans cette article, vous trouverez les explications comment retrouver la taille de fichier via VBA. Cette fonctionnalité peut être utile pour afficher la taille de(s) fichier(s) à l'utilisateur, pour vérifier si un fichier est complète ou endommagé ou par exemple pour vérifier si l'espace de stockage est suffisamment grand que pour accueillir un fichier particulier…

Fonction VBA de base: FileLen()

VBA contient déjà à la base une fonction qui remplit cette fonction. Il s'agit de la fonction FileLen. Cette fonction utilise un argument – le chemin complet du fichier à vérifier – et retourne comme résultat la taille du fichier en octets.

L'utilisation de base ressemblera donc à ceci:

x = FileLen("C:\MonDossier\MonFichier.pdf")

Attention: si le fichier n'existe pas, la fonction retourne une erreur. Vous pouvez donc combiner cette fonction avec la vérification si le fichier existe. Vous obtiendrez alors un code VBA comme celui-ci:

Sub DeterminerTailleFichier()
'par Excel-Malin.com ( https://excel-malin.com )

If Len(Dir("C:\MonDossier\MonFichier.pdf")) > 0 Then
    MsgBox FileLen("C:\MonDossier\MonFichier.pdf")
Else
    MsgBox "fichier demandé n'existe pas..."
End If

End Sub

Comme la taille en octets n'est pas très utilisée, on peut facilement convertir le résultat en d'autres unités plus utilisées.

Taille de fichier en ko, Mo ou Go

Pour se faciliter le travail, on peut utiliser les fonctions VBA qui suivent.

'taille de fichier en octets
MsgBox Round(FileLen("C:\MonDossier\MonFichier.pdf"), 1)

'taille de fichier en kilooctets (ko)
MsgBox Round(FileLen("C:\MonDossier\MonFichier.pdf") / 1000, 1)

'taille de fichier en mégaoctets (Mo)
MsgBox Round(FileLen("C:\MonDossier\MonFichier.pdf") / 1000 ^ 2, 1)

'taille de fichier en gigaoctets (Go)
MsgBox Round(FileLen("C:\MonDossier\MonFichier.pdf") / 1000 ^ 3, 1)

 

Pour plus de flexibilité, on peut créer les fonctions suivantes qui utilisent le nom de fichier comme argument:

'taille de fichier en octets
Public Function VolumeFichier_o(Fichier As String)
VolumeFichier_o = Round(FileLen(Fichier), 1)
End Function

'taille de fichier en kilooctets (ko)
Public Function VolumeFichier_ko(Fichier As String)
VolumeFichier_ko = Round(FileLen(Fichier) / 1000, 1)
End Function

'taille de fichier en mégaoctets (Mo)
Public Function VolumeFichier_Mo(Fichier As String)
VolumeFichier_Mo = Round(FileLen(Fichier) / 1000 ^ 2, 1)
End Function

'taille de fichier en gigaoctets (Go)
Public Function VolumeFichier_Go(Fichier As String)
VolumeFichier_Go = Round(FileLen(Fichier) / 1000 ^ 3, 1)
End Function

Et si vous voulez afficher le résultat à l'utilisateur, il est peut-être souhaitable d'ajouter les unités au résultats. Attention, le résultat devient alors une chaîne de caractères (et n'est donc plus considéré comme un numéro) et vous ne pourrez pas l'utiliser pour des calculs ou comparaisons…

'taille de fichier en octets
Public Function VolumeFichier_o(Fichier As String)
VolumeFichier_o = Round(FileLen(Fichier), 1) & " o"
End Function

'taille de fichier en kilooctets (ko)
Public Function VolumeFichier_ko(Fichier As String)
VolumeFichier_ko = Round(FileLen(Fichier) / 1000, 1) & " ko"
End Function

'taille de fichier en mégaoctets (Mo)
Public Function VolumeFichier_Mo(Fichier As String)
VolumeFichier_Mo = Round(FileLen(Fichier) / 1000 ^ 2, 1) & " Mo"
End Function

'taille de fichier en gigaoctets (Go)
Public Function VolumeFichier_Go(Fichier As String)
VolumeFichier_Go = Round(FileLen(Fichier) / 1000 ^ 3, 1) & " Go"
End Function

Conclusion

Voilà, vous savez  maintenant comment retrouver la taille d'un fichier en VBA et la transformer en une unité de votre choix. Si vous voulez en savoir plus sur les conversion des unités informatiques, vous pouvez consulter la page de Wikipédia dédié à Octet.

 

4 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.