Soyez le premier à donner votre avis sur cette source.
Vue 3 493 fois - Téléchargée 247 fois
Public Function TailleFic(chemin As String) As String Dim valeur As Variant Dim unit As String 'taille du fichier en octets valeur = FileLen(chemin) ' conversion de la taille dans l'unité appropriée If valeur < 1000 Then unit = "octets" ElseIf valeur / 1024 < 1000 Then unit = "Ko" valeur = Left(valeur / 1024, 4) ElseIf valeur / 1024 ^ 2 < 1000 Then unit = "Mo" valeur = Left(valeur / 1024 ^ 2, 5) ElseIf valeur / 1024 ^ 3 < 1000 Then unit = "Go" valeur = Left(valeur / 1024 ^ 3, 4) End If TailleFic = valeur & " " & unit End Function
Function ConvertFileLength(ByVal length As Long, Optional ByVal maxdecimal As Integer = 2) As String
' Convertis la taille d'un fichier en octets sous forme d'une chaîne de caractères avec l'unité correspondante
Dim SizeString As String = Nothing If length > 1073741824 Or length 1073741824 Then SizeString length / 1073741824 & " Go" If length > 1048576 And length < 1073741824 Or length 1048576 Then SizeString length / 1048576 & " Mo" If length > 1024 And length < 1048576 Or length 1024 Then SizeString length / 1024 & " Ko"
If length < 1024 Then SizeString = length & " octets"
If SizeString.Contains(",") Then
Dim parts() = Split(SizeString, ",")
Dim parts_() = Split(parts(1), " ")
Dim decimals As Integer If maxdecimal 0 Then maxdecimal 1
If parts_(0).ToString.Length < 2 Then decimals = parts_(0).ToString If parts_(0).ToString.Length 3 Then decimals parts_(0).ToString.Remove(1, parts_(0).ToString.Length - 1)
If parts_(0).ToString.Length > 3 Then decimals = parts_(0).ToString.Remove(maxdecimal, parts_(0).ToString.Length - maxdecimal)
SizeString = parts(0) & "," & decimals & " " & parts_(1)
End If
Return SizeString
End Function
L'option maxdecimal évite d'avoir un nombre inconsidéré de décimales ^^
Il y a une petit différente !
Il sont passé où les 4,2 Go manquant ????
et vla-Da-DAM !!! çà affiche : -130365440 octets
sans commentaires ...
Pour toi voila la fonction que j'ai créer qui fiat la même chose que la tienne ! De plus elle gére plus unité (c pour le futur)
Voila ma source :
Function unite(taille As Long) As String
Dim tabunite
Dim i As Integer
tabunite = Array("o", "Ko", "Mo", "Go", "To", "Po", "Eo", "Zo", "Yo")
i = 0
Do While taille >= 1024 And i < 8
taille = taille / 1024
i = i + 1
Loop
unite = Round(taille, 2) & " " & tabunite(i)
End Function
@++
Optitech
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.