Chiffre en lettre fonction

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 946 fois - Téléchargée 38 fois

Contenu du snippet

Une petite fonction simlpe pour transformer un chiffre en lettre.
Exemple:

"15193" >> dix mille cent quatre vingt treize

Je me suis arreté au milliard et j'ai pas mis les pluriels pour cent, mille etc...

Je poste cette fonction car cela a été demandé sur l'irc.

Source / Exemple :


Function ChiffreToLettre(Chiffre As String) As String
Do Until Chiffre = ""
Select Case Int((Len(Chiffre) - 1) / 3)
Case 0: ext$ = ""
Case 1: ext$ = "Mille "
Case 2: ext$ = "Million "
Case 3: ext$ = "Milliard "
End Select
k = Len(Chiffre) Mod 3
If k = 0 Then k = 3
b$ = Left$(Chiffre, k)
For i = 1 To k
b1$ = Mid$(b$, i, 1)
    If (k - i + 1) <> 2 Then
        Select Case b1$
            Case "1": Result$ = Result$
                      If i <> 1 Or Len(b$) <> 3 Then
                        Result$ = Result$ + "Un "
                      End If
            Case "2": Result$ = Result$ + "Deux "
            Case "3": Result$ = Result$ + "Trois "
            Case "4": Result$ = Result$ + "Quatre "
            Case "5": Result$ = Result$ + "Cinq "
            Case "6": Result$ = Result$ + "Six "
            Case "7": Result$ = Result$ + "Sept "
            Case "8": Result$ = Result$ + "Huit "
            Case "9": Result$ = Result$ + "Neuf "
            Case "10": Result$ = Result$ + "Dix "
        End Select
    Else
        Select Case b1$
            Case "1": Result$ = Result$
                      Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "Onze "
                                            i = i + 1
                                    Case "2": Result$ = Result$ + "Douze "
                                            i = i + 1
                                    Case "3": Result$ = Result$ + "Treize "
                                            i = i + 1
                                    Case "4": Result$ = Result$ + "Quatorze "
                                            i = i + 1
                                    Case "5": Result$ = Result$ + "Quinze "
                                            i = i + 1
                                    Case "6": Result$ = Result$ + "Seize "
                                            i = i + 1
                                    Case Else: Result$ = Result$ + "Dix "
                      End Select
            Case "2": Result$ = Result$ + "Vingt "
                      Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "et "
                      End Select
            Case "3": Result$ = Result$ + "Trente "
                      Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "et "
                      End Select
            Case "4": Result$ = Result$ + "Quarate "
                      Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "et "
                      End Select
            Case "5": Result$ = Result$ + "Cinquante "
                      Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "et "
                      End Select
            Case "6": Result$ = Result$ + "Soixante "
                      Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "et "
                      End Select
            Case "7": Result$ = Result$
                    Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "Soixante et Onze "
                                            i = i + 1
                                    Case "2": Result$ = Result$ + "Soixante Douze "
                                            i = i + 1
                                    Case "3": Result$ = Result$ + "Soixante Treize "
                                            i = i + 1
                                    Case "4": Result$ = Result$ + "Soixante Quatorze "
                                            i = i + 1
                                    Case "5": Result$ = Result$ + "Soixante Quinze "
                                            i = i + 1
                                    Case "6": Result$ = Result$ + "Soixante Seize "
                                            i = i + 1
                                    Case Else: Result$ = Result$ + "Soixante dix"
                      End Select
            Case "8": Result$ = Result$ + "Quatre ving "
            Case "9": Result$ = Result$
                    Select Case (Mid$(b$, i + 1, 1))
                                    Case "1": Result$ = Result$ + "Quatre Vingt Onze "
                                            i = i + 1
                                    Case "2": Result$ = Result$ + "Quatre Vingt Douze "
                                            i = i + 1
                                    Case "3": Result$ = Result$ + "Quatre Vingt Treize "
                                            i = i + 1
                                    Case "4": Result$ = Result$ + "Quatre Vingt Quatorze "
                                            i = i + 1
                                    Case "5": Result$ = Result$ + "Quatre Vingt Quinze "
                                            i = i + 1
                                    Case "6": Result$ = Result$ + "Quatre Vingt Seize "
                                            i = i + 1
                                    Case Else: Result$ = Result$ + "Quatre Vingt Dix"
                      End Select
        End Select
    End If
If k = 3 And i = 1 Then Result$ = Result$ + "Cent "
Next i
Result$ = Result$ + ext$
Chiffre = Right$(Chiffre, Len(Chiffre) - k)
Loop
ChiffreToLettre = Result$
End Function

A voir également

Ajouter un commentaire

Commentaires

Messages postés
21
Date d'inscription
mardi 8 avril 2003
Statut
Membre
Dernière intervention
18 mai 2009

Juste un ptt complement pour eviter l'affichage de un mille au début de la conversion de chiffre c'est à dire avoir "Mille cinq cent" au lieu de "Un mille cinq cent" par exemple pour la conversion de "1500"

A mettre entre le loop et le ChiffreToLettre = Result$
"
If result$ Like "Un Milliar*" Then
result$ = result$
Else
If result$ Like "Un Millio*" Then
result$ = result$
Else
If result$ Like "Un Mil*" Then
result$ = Mid(result$, 4)
End If
End If
End If
"
et le tour est joué. en plus de petites correction d'orthographe ben je pense que c'est cool.........
Merci pour la function
Messages postés
675
Date d'inscription
samedi 31 mai 2003
Statut
Membre
Dernière intervention
26 mai 2013
1
Salut avez vous essayer de mettre une virgule ou un point dans vos chiffre
Sa marche pas
Messages postés
3
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
28 novembre 2003

Ne serai t-il pas possible de transformer ce code en fichier DLL afin de pouvoir l'insérer dans n'importe quelle application? En indiquant bien entendu le point d'entré de la DLL. Merci
Messages postés
1
Date d'inscription
mercredi 3 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2003

Bonjour,
Il y a un autre problème, un peu plus sérieux que le "un mille":
ce programme donne "Mille cent" pour "1000", "cent cinquante mille cent" pour "150000"
Pour y remédier, il faut ajouter la boucle suivante entre
Chiffre = Right$(Chiffre, Len(Chiffre) - k) et Loop (à la fin):
While Left$(Chiffre, 1) = "0"
Chiffre = Right$(Chiffre, Len(Chiffre) - 1)
Wend
Ainsi cela fonctionne.
Merci quand même pour ce code sympa.
Messages postés
73
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
23 février 2005

a : spproust : c'est ce que je chercher à faire "Un mil..." c'etait pas top

sinon ElDoktor sympa ton prog...
Afficher les 6 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.