EXCEL 2003 conversion de chiffres en lettres

je souhaiterais savoir si sous excel, il existe une fonction ou bien une macro qui permet de convertir un nobre en chiffres en un nombre en lettre
merci de vos infos
a+ :bounce:

:stuck_out_tongue:
à ma connaissance cela n’existe pas (tout au moins dans excel 2000 celui que j’ai)
si ton besoin est imperatif et si tu as un peu de temps je peux etudier une fonction (dans ce cas donne moi les chiffres maxis à traiter et si les négatifs doivent etre envisagés)
:slight_smile:

ca ?
http://www.excelabo.net/xl/eurotrucs.php#chiffresenlettres
:smiley:
google power !!!

bonsoir
format --> cellule -->texte

DjiDji

non ce qu’il veut, si j’ai bien compris c’est au lieu de "12 " il veut “douze”

pourquoi faire simple quand on peut faire compliqué !
Ça ne m’était même pas venu a l’idée !
Moi, je voudrais le meme, mais en anglais (one, two, three, …)

DjiDji

Voici une fonction de John Walkenbach
(si tu veux une fonction qui traite aussi les chiffres après la virgule je peux te l’a donner)

Function EnLettres(cellule) As Variant

Dim Nbr As String
Dim LongueurTexte As Integer
Dim Temp As String
Dim Pos As Integer
Dim iCentaines As Integer
Dim iDizaines As Integer
Dim iUnités As Integer
Dim Unités(2 To 5) As String
Dim bTrouvé As Boolean
Dim Unité As Variant
Dim Dizaines As Variant
Dim Dizaine As Variant
Dim Négatif As Boolean

’ Est-ce un nombre ?
If Not IsNumeric(cellule) Then
EnLettres = CVErr(xlErrValue)
Exit Function
End If

’ Est-il négatif ?
If cellule < 0 Then
Négatif = True
cellule = Abs(cellule)
End If

Nbr = Format(cellule, "###0.00")
LongueurTexte = Len(Nbr) - 3

’ Est-il trop grand?
If LongueurTexte > 15 Then
EnLettres = CVErr(xlErrNum)
Exit Function
End If

Nbr = Left(Nbr, LongueurTexte)

Unité = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf")
Dizaines = Array("dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
Dizaine = Array("", "", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante-dix", "quatre-vingt", "quatre-vingt-dix")

Unités(2) = "mille"
Unités(3) = "million"
Unités(4) = "milliards"

Temp = ""

For Pos = 15 To 3 Step -3
    If LongueurTexte >= Pos - 2 Then
        bTrouvé = False
        If LongueurTexte >= Pos Then
            iCentaines = Asc(Mid$(Nbr, LongueurTexte - Pos + 1, 1)) - 48
            If iCentaines > 0 Then
                Temp = Temp &amp; " " &amp; Unité(iCentaines) &amp; " cent"
                bTrouvé = True
            End If
    End If
    iDizaines = 0
    iUnités = 0

    If LongueurTexte >= Pos - 1 Then
        iDizaines = Asc(Mid$(Nbr, LongueurTexte - Pos + 2, 1)) - 48
    End If

    If LongueurTexte >= Pos - 2 Then
        iUnités = Asc(Mid$(Nbr, LongueurTexte - Pos + 3, 1)) - 48
    End If

    If iDizaines = 1 Then
        Temp = Temp &amp; " " &amp; Dizaines(iUnités)
        bTrouvé = True
    Else
        If iDizaines >= 2 Then
            Temp = Temp &amp; " " &amp; Dizaine(iDizaines)
            bTrouvé = True
        End If
        If iUnités > 0 Then
            If iDizaines >= 2 Then
                Temp = Temp &amp; "-"
            Else
                Temp = Temp &amp; " "
            End If
            Temp = Temp &amp; Unité(iUnités)
            bTrouvé = True
        End If
    End If
    If bTrouvé And Pos > 3 Then
        Temp = Temp &amp; " " &amp; Unités(Pos \ 3)
    End If
End If
Next Pos

EnLettres = Trim(Temp)
If Négatif Then EnLettres = "moins " & EnLettres
End Function

merci pour vos conseils :stuck_out_tongue:
aux plaisirs

Oui s’il vous plaît je voudrais celle qui a les chiffres après le virgule.
Edité le 18/08/2011 à 23:38

Je voudrais avoir la conversion de chiffres en lettres avec de sous.

Merci

Sylvia