Formatage, nombre type francais, en type anglais.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 041 fois - Téléchargée 31 fois

Contenu du snippet

Ce code vous permet de tester si c'est du numérique, et de mettre des virgules tous les trois chiffres, comme les anglais.

Pour le réaliser, il faut créer un form avec un textbox1 et un button1.

Source / Exemple :


Public NombreTotal As Long
    'J'ai déclaré un tableau à 30 unités, si on en veut plus, il faut mettre plus que 30
    ' Logique ! ;-p
    Public TabChiffre(30) As String
    Public chiffre As Integer
    Public i, j As Integer
    Public k As Long
    Public puissance As Integer
    Public NombreChiffre As Integer
    Public GpeDeTrois As Integer
    Public string1 As String

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'on Test si la case est vide ou non
        If TextBox1.Text <> "" Then
            'on test si la case est du numérique
            If IsNumeric(TextBox1.Text) = True Then
                i = 0
                'on place le texte dans une variable
                NombreTotal = Mid(TextBox1.Text, 1)
                'on cherche le nombre total de chiffre
                NombreChiffre = Len(TextBox1.Text)
                j = NombreChiffre - 1
                puissance = NombreChiffre - 1
                k = 10 ^ puissance
                Do Until i = NombreChiffre
                    ' Le but est simple, il suffit de diviser chaque partie, (millier, centaine, dizaine, unité),
                    ' et de les isoler dans un tableau.
                    TabChiffre(j) = Int(NombreTotal / k)
                    NombreTotal = NombreTotal - (TabChiffre(j) * k)
                    j = j - 1
                    i = i + 1
                    k = k / 10
                Loop
                i = 0
                GpeDeTrois = 0
                TextBox1.Text = ""
                Do Until i = NombreChiffre
                    'une fois le tableau remplis, on remet en place
                    'le nouveau text du textbox1, en prenant garde, que
                    'tous les trois chiffre, il y ait une virgule.
                    If GpeDeTrois = 3 Then
                        string1 = TextBox1.Text
                        TextBox1.Text = "," & string1
                        GpeDeTrois = 0
                    Else
                        string1 = TextBox1.Text
                        TextBox1.Text = TabChiffre(i) & string1
                        GpeDeTrois = GpeDeTrois + 1
                        i = i + 1
                    End If
                Loop
            End If

        Else
            MsgBox("Inscrivez quelque chose")
        End If

    End Sub
End Class

A voir également

Ajouter un commentaire

Commentaires

Messages postés
16
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
23 juin 2006

En .Net, je ne sais pas si on peut appeler des API Windows, mais sinon, pour formatter un nombre selon un pays quelconque, il suffit d'utiliser GetNumberFormat :
Private Declare Function GetNumberFormat Lib "kernel32" Alias "GetNumberFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, ByVal lpFormat As Long, ByVal lpNumberStr As String, ByVal cchNumber As Long) As Long

Public Function EtrFormatNum(Valeur As Double, LCID As long) As String
'Procédure pour formatter Valeur selon un paramètre régional défini par LCID (1036 pour la france et 2057 pour l'anglais UK par exemple)
Dim lsize As Long, Chaine As String
'défini la taille du buffer de retour nécessaire
lsize = GetNumberFormat(LCID, 0, Trim(Str(Valeur)), 0, "", 0)
If lsize = 0 Then Error 5
'défini un buffer de taille suffisante et formatte
Chaine = String(lsize, 0)
lsize = GetNumberFormat(LCID, 0, Trim(Str(Valeur)), 0, Chaine, lsize)
EtrFormatNum = Left(Chaine, InStr(Chaine & Chr(0), Chr(0)) - 1)
End Function

J'espère que ceci peut vous aider à utiliser les API Windows (elles font plein de choses quand on leur demande gentiment)

DrJoe
Messages postés
4
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
23 mai 2004

Avec un antislash (\) avant les virgules...
Messages postés
4
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
23 mai 2004

Oups, j'ai oublié les virgules...
myString = format (myNb, "###,###,###,###,###")
Messages postés
4
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
23 mai 2004

Et la fonction format ???

myString = format (myNb, "### ### ### ### ###")
Messages postés
1115
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

Oki ;-)
Afficher les 10 commentaires

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.