Soyez le premier à donner votre avis sur cette source.
Snippet vu 48 880 fois - Téléchargée 39 fois
Private Declare Function StrFormatByteSize Lib "shlwapi" Alias "StrFormatByteSizeA" (ByVal dw As Long, ByVal pszBuf As String, ByVal cchBuf As Long) As Long Private Sub form_load() Dim mem As String Dim lenmem As Long Const valeur_en_octes As Single = 9565656 'changez la valeur ici mem = Space$(32)'creer un buffer lenmem = Len(mem) If StrFormatByteSize(valeur_en_octes, mem, lenmem) <> 0 Then MsgBox Trim$(mem) End If End Sub
18 févr. 2006 à 16:45
Génial cet API ! Merci
10/10
18 févr. 2006 à 22:51
Voici le code:
Public Function StrFormatByteSize(ByVal dw As Long, Optional NumDigitsAfterDecimal As Long = 2) As String
Dim sValue As String
Select Case (dw \ 1024)
Case Is >= 1024000
sValue = CStr(Round(dw / (1024 ^ 3), NumDigitsAfterDecimal)) & " Go"
Case Is >= 1000
sValue = CStr(Round(dw / (1024 ^ 2), NumDigitsAfterDecimal)) & " Mo"
Case Is >= 1
sValue = CStr(Round(dw / 1024, NumDigitsAfterDecimal)) & " Ko"
Case Is = 0
sValue = CStr(Round(dw)) & " octets"
End Select
Let StrFormatByteSize = sValue
End Function
19 févr. 2006 à 09:07
Public Function sFormaterTailleOctets$(ByVal lTailleOctets&)
' Renvoyer une taille de fichier bien formatée dans une chaîne de caractère
' 1024 est la norme actuellement employée dans Windows,
' mais 1000 sera peut être un jour la norme
Dim sAffichage$ = sFormaterNumerique(lTailleOctets) & " octets"
Dim rNbKo! = CSng(Math.Round(lTailleOctets / 1024, 1))
If rNbKo > 0 Then sAffichage &= " (" & sFormaterNumerique(rNbKo) & " Ko"
Dim rNbMo! = CSng(Math.Round(lTailleOctets / (1024 * 1024), 1))
If rNbMo > 0 Then sAffichage &" " & sFormaterNumerique(rNbMo) & " Mo"
Dim rNbGo! = CSng(Math.Round(lTailleOctets / (1024 * 1024 * 1024), 1))
If rNbGo > 0 Then sAffichage &" " & sFormaterNumerique(rNbGo) & " Go"
If rNbKo > 0 Or rNbMo > 0 Or rNbGo > 0 Then sAffichage &= ")"
sFormaterTailleOctets = sAffichage
End Function
19 févr. 2006 à 09:08
Public Function sFormaterNumerique$(ByVal rVal!)
' Formater un numérique avec une précision d'une décimale
' Le format numérique standard est correct (séparation des milliers et plus),
' il suffit juste d'enlever la décimale inutile si 0
Dim nfi As Globalization.NumberFormatInfo = _
New Globalization.NumberFormatInfo
' Définition des spérateurs numériques
nfi.NumberGroupSeparator = " " ' Séparateur des milliers, millions...
nfi.NumberDecimalSeparator = "." ' Séparateur décimal
' 3 groupes pour milliard, million et millier
' (on pourrait en ajouter un 4ème pour les To : 1000 Go)
nfi.NumberGroupSizes = New Integer() {3, 3, 3}
nfi.NumberDecimalDigits = 1 ' 1 décimale de précision
sFormaterNumerique = rVal.ToString("n", nfi) ' n : numérique général
' Enlever la décimale si 0
sFormaterNumerique = sFormaterNumerique.Replace(".0", "")
End Function
19 févr. 2006 à 14:04
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.