Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transformer en lettres des montants en ? et en kg exprimés en chiffres.

3 réponses
Avatar
Daniel
Bonjour,

Je cherche une macro qui recopierait un montant exprimé en euros sous le
format 1.234,56 ? et le transformerait en toutes lettres. Résulat recherché
: Mille deux cent trente quatre euros et cinquante six cents (sans les
fautes d'accord et de trait d'union éventuellement manquants :-).

Je cherche, dans le même style, la manière de faire la même chose avec des
poids exprimés comme ceci : 1.234,560 kg. Résultat recherché : Mille deux
cent trentre quatre kilos et cinq cent soixante grammes (idem :-)

Merci d'avance pour vos conseils éclairés.

Daniel

3 réponses

Avatar
LargoWinch
Bonjour,

Je cherche une macro qui recopierait un montant exprimé en euros sous le
format 1.234,56 ? et le transformerait en toutes lettres. Résulat recherché
: Mille deux cent trente quatre euros et cinquante six cents (sans les
fautes d'accord et de trait d'union éventuellement manquants :-).

Je cherche, dans le même style, la manière de faire la même chose avec des
poids exprimés comme ceci : 1.234,560 kg. Résultat recherché : Mille deux
cent trentre quatre kilos et cinq cent soixante grammes (idem :-)

Merci d'avance pour vos conseils éclairés.

Daniel




Google, notre ami, a répondu à la question
http://www.google.fr/search?sourceid=navclient&hl=fr&ie=UTF-8&rls=GGLD,GGLD:2005-20,GGLD:fr&q=macro+excel+conversion+chiffre+lettre

et a entre autre rapporté ca :

http://www.commentcamarche.net/forum/affich-1566087-conversion-chiffres-en-lettres

Ajouté par Armojax (19/04/2005 à 07:59 GMT+2)
Bonjour,

Je propose également la fonction ci-dessous :
Elle admet deux paramètres supplémentaires :
- choix de la monnaie (euro par défaut)
- résultat en majuscules ou minuscules (majuscules par défaut)

Si A1 contient 23.56,
CHIFLETR(A1) : VINGT-TROIS EUROS ET CINQUANTE-SIX CENTIMES
CHIFLETR(A1;"dollar") : VINGT-TROIS DOLLARS ET CINQUANTE-SIX CENTIMES
CHIFLETR(A1;;FAUX) : vingt-trois euros et cinquante-six centimes

Voici le code :
Function CHIFLETR(Nombre, Optional Monnaie As String = "euro", Optional
Maju As Boolean = True)

' CETTE FONCTION TRADUIT EN LETTRES UN NOMBRE POSITIF INFERIEUR
' AU MILLIARD, AVEC DEUX DECIMALES

' Elle fait appel à la macro "Codage" ci-dessous,
' qui en est indissociable

Dim TrCent As Boolean
Dim CenTouRon As Boolean

Dim Entiers As Long
Dim Centimes As Long

Dim TrUnités As Integer
Dim TrMilles As Integer
Dim TrMlions As Integer

Dim QuUnités As Long
Dim QuMilles As Long
Dim QuMlions As Long

Dim Lib As String

If Nombre > 999999999.99 Then
CHIFLETR = ""
Exit Function
End If

Entiers = Int(Nombre)
Centimes = (Nombre - Entiers) * 100
TrUnités = Entiers Mod 1000
QuUnités = Entiers 1000
TrMilles = QuUnités Mod 1000
QuMilles = QuUnités 1000
TrMlions = QuMilles Mod 1000
QuMlions = QuMilles 1000

Lib = ""

CenTouRon = (Entiers Mod 100) = 0

If TrMlions <> 0 Then
Call Codage(TrMlions, Lib, CenTouRon, False)
If TrMlions = 1 Then
Lib = Lib & "million "
Else
Lib = Lib & "millions "
End If
End If

If TrMilles <> 0 Then
If TrMilles <> 1 Then
Call Codage(TrMilles, Lib, CenTouRon, False)
End If
Lib = Lib & "mille "
End If

If TrUnités <> 0 Then
Call Codage(TrUnités, Lib, CenTouRon, True)
End If

If Entiers >= 2 Then
Lib = Lib & Monnaie & "s "
ElseIf Entiers >= 1 Then
Lib = Lib & Monnaie & " "
Else
Lib = "zéro " & Monnaie & " "
End If
If Centimes <> 0 Then
Lib = Lib & "et "
Call Codage(Centimes, Lib, CenTouRon, False)
If Centimes = 1 Then
Lib = Lib & "centime "
Else
Lib = Lib & "centimes "
End If
End If

CHIFLETR = Lib

If Maju Then CHIFLETR = UCase(CHIFLETR)

End Function
Sub Codage(Tranche, Lib, CenTouRon, TrCent)

' CETTE MACRO EST INDISSOCIABLE DE LA FONCTION CHIFLETR
' CI-DESSUS, ET TRADUIT EN LETTRES UNE TRANCHE DE 3 CHIFFRES

Dim C As Byte, D As Byte, D1 As Byte, U As Byte
Dim T00 As Variant
Dim Tb0 As Variant, Tb1 As Variant, Tb2 As Variant, Tb3 As
Variant, Tb4 As Variant
Dim Tb5 As Variant, Tb6 As Variant, Tb7 As Variant, Tb8 As
Variant, Tb9 As Variant

T00 = Array("", "", "deux ", "trois ", "quatre ", "cinq ", "six ",
"sept ", "huit ", "neuf ")

Tb0 = Array("", "un ", "deux ", "trois ", "quatre ", "cinq ", "six
", "sept ", "huit ", "neuf ")
Tb1 = Array("dix ", "onze ", "douze ", "treize ", "quatorze ",
"quinze ", "seize ", "dix-sept ", "dix-huit ", "dix-neuf ")
Tb2 = Array("vingt ", "vingt-et-un ", "vingt-deux ", "vingt-trois
", "vingt-quatre ", "vingt-cinq ", "vingt-six ", "vingt-sept ",
"vingt-huit ", "vingt-neuf ")
Tb3 = Array("trente ", "trente-et-un ", "trente-deux ",
"trente-trois ", "trente-quatre ", "trente-cinq ", "trente-six ",
"trente-sept ", "trente-huit ", "trente-neuf ")
Tb4 = Array("quarante ", "quarante-et-un ", "quarante-deux ",
"quarante-trois ", "quarante-quatre ", "quarante-cinq ", "quarante-six
", "quarante-sept ", "quarante-huit ", "quarante-neuf ")
Tb5 = Array("cinquante ", "cinquante-et-un ", "cinquante-deux ",
"cinquante-trois ", "cinquante-quatre ", "cinquante-cinq ",
"cinquante-six ", "cinquante-sept ", "cinquante-huit ", "cinquante-neuf ")
Tb6 = Array("soixante ", "soixante-et-un ", "soixante-deux ",
"soixante-trois ", "soixante-quatre ", "soixante-cinq ", "soixante-six
", "soixante-sept ", "soixante-huit ", "soixante-neuf ")
Tb7 = Array("soixante-dix ", "soixante-et-onze ", "soixante-douze
", "soixante-treize ", "soixante-quatorze ", "soixante-quinze ",
"soixante-seize ", "soixante-dix-sept ", "soixante-dix-huit ",
"soixante-dix-neuf ")
Tb8 = Array("quatre-vingt ", "quatre-vingt-un ", "quatre-vingt-deux
", "quatre-vingt-trois ", "quatre-vingt-quatre ", "quatre-vingt-cinq ",
"quatre-vingt-six ", "quatre-vingt-sept ", "quatre-vingt-huit ",
"quatre-vingt-neuf ")
Tb9 = Array("quatre-vingt-dix ", "quatre-vingt-onze ",
"quatre-vingt-douze ", "quatre-vingt-treize ", "quatre-vingt-quatorze ",
"quatre-vingt-quinze ", "quatre-vingt-seize ", "quatre-vingt-dix-sept ",
"quatre-vingt-dix-huit ", "quatre-vingt-dix-neuf ")

C = Tranche 100
If C <> 0 Then
If TrCent And CenTouRon And C <> 1 Then
Lib = Lib & T00(C) & "cents "
Else
Lib = Lib & T00(C) & "cent "
End If
End If
D1 = Tranche Mod 100
D = D1 10
U = Tranche Mod 10

Select Case D
Case 0: Lib = Lib & Tb0(U)
Case 1: Lib = Lib & Tb1(U)
Case 2: Lib = Lib & Tb2(U)
Case 3: Lib = Lib & Tb3(U)
Case 4: Lib = Lib & Tb4(U)
Case 5: Lib = Lib & Tb5(U)
Case 6: Lib = Lib & Tb6(U)
Case 7: Lib = Lib & Tb7(U)
Case 8: Lib = Lib & Tb8(U)
Case 9: Lib = Lib & Tb9(U)
End Select

End Sub



Pas testé mais les commentaires sont éloquents

Avatar
Youky
Voir aussi ici
http://www.excelabo.net/moteurs/compteclic.php?nom=bj-chiffres-en-lettres
c'est simple et en suis l'auteur
Youky
"Daniel" <*enlever ceci° a écrit dans le message
de news: 45111cd7$0$32433$
Bonjour,

Je cherche une macro qui recopierait un montant exprimé en euros sous le
format 1.234,56 ? et le transformerait en toutes lettres. Résulat
recherché
: Mille deux cent trente quatre euros et cinquante six cents (sans les
fautes d'accord et de trait d'union éventuellement manquants :-).

Je cherche, dans le même style, la manière de faire la même chose avec des
poids exprimés comme ceci : 1.234,560 kg. Résultat recherché : Mille deux
cent trentre quatre kilos et cinq cent soixante grammes (idem :-)

Merci d'avance pour vos conseils éclairés.

Daniel




Avatar
LargoWinch
Voir aussi ici
http://www.excelabo.net/moteurs/compteclic.php?nom=bj-chiffres-en-lettres
c'est simple et en suis l'auteur
Youky


C'est vrai que le code est ici beaucoup plus léger. Bien joué ;)