comment écrire un nombre en toute lettre dans excel

Le
ma galinette
Je voudrais pouvoir taper un nombre dans une cellule, mais qu'il saffiche
directement en toute lettre. Est-ce que quelqu'un sait quelle formule
utiliser et surtout comment?
Merci d'avance.
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #6436581
Bonjour.
Il n'y a qu'une formule dans Excel qui le fasse :
BAHTTEXT
Malheureusement, c'est en Thaï.
Sinon, va sur www.excelabo.net et fais une recherche sur les mots clefs :
nombre lettre.
Tu trouveras une macro qui le fait. Si tu n'es pas familier avec ces
dernières, reviens.
Daniel
"ma galinette" message de news:
Je voudrais pouvoir taper un nombre dans une cellule, mais qu'il saffiche
directement en toute lettre. Est-ce que quelqu'un sait quelle formule
utiliser et surtout comment?
Merci d'avance.


Youky
Le #6436531
Salut Galinette,
J'ai repris la macro que j'avais faite et mis sur Excelabo, elle ne
répondait pas exactement à ton souhait donc voici comment faire
Copie toute la macro suivante
Click avec le bouton droit de la souris sur l'onglet conserné et choisit
visualiser le code, tu colles ça direct dans la fenetre blanche
A+ si besoin
Youky

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Dim a As Variant, gros As Variant
s = Target.Value
If Not IsNumeric(s) Then MsgBox "non valable": Exit Sub
a = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _
"huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze",
"seize", "dix sept", _
"dix huit", "dix neuf", "vingt", "vingt et un", "vingt deux", "vingt trois",
"vingt quatre", _
"vingt cinq", "vingt six", "vingt sept", "vingt huit", "vingt neuf",
"trente", "trente et un", _
"trente deux", "trente trois", "trente quatre", "trente cinq", "trente six",
"trente sept", _
"trente huit", "trente neuf", "quarante", "quarante et un", "quarante deux",
"quarante trois", _
"quarante quatre", "quarante cinq", "quarante six", "quarante sept",
"quarante huit", _
"quarante neuf", "cinquante", "cinquante et un", "cinquante deux",
"cinquante trois", _
"cinquante quatre", "cinquante cinq", "cinquante six", "cinquante sept",
"cinquante huit", _
"cinquante neuf", "soixante", "soixante et un", "soixante deux", "soixante
trois", _
"soixante quatre", "soixante cinq", "soixante six", "soixante sept",
"soixante huit", _
"soixante neuf", "soixante dix", "soixante et onze", "soixante douze",
"soixante treize", _
"soixante quatorze", "soixante quinze", "soixante seize", "soixante dix
sept", _
"soixante dix huit", "soixante dix neuf", "quatre-vingts", "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", _
"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")
gros = Array("", "billions", "milliards", "millions", "mille", "Euros",
"billion", _
"milliard", "million", "mille", "Euro")
sp = Space(1)
chaine = "00000000000000"
centime = Right(s * 100, 2)
s = Str(Int(s)): lg = Len(s) - 1: s = Right(s, lg): lg = Len(s)
If lg < 15 Then chaine = Mid(chaine, 1, (15 - lg)) Else chaine = ""
s = chaine + s
'billions au centaines
gp = 1
For k = 1 To 5
x = Mid(s, gp, 1): c = a(Val(x))
x = Mid(s, gp + 1, 2): d = a(Val(x))
If k = 5 Then
If t2 <> "" And c & d = "" Then mydz = "Euros" & sp: GoTo fin
If t <> "" And c = "" And d = "un" Then mydz = "un Euros" & sp: GoTo fin
If t <> "" And t2 = "" And c & d = "" Then mydz = "d'Euros" & sp: GoTo fin
If t & c & d = "" Then myct = "": mydz = "": GoTo fin
End If
If c & d = "" Then GoTo fin
If d = "" And c <> "" And c <> "un" Then mydz = c & sp & "cents " & gros(k)
& sp: GoTo fin
If d = "" And c = "un" Then mydz = "cent " & gros(k) & sp: GoTo fin
If d = "un" And c = "" Then myct = IIf(k = 4, gros(k) & sp, "un " & gros(k +
5) & sp): GoTo fin
If d <> "" And c = "un" Then mydz = "cent" & sp
If d <> "" And c <> "" And c <> "un" Then mydz = c & sp & "cent" + sp
myct = d & sp & gros(k) & sp
fin:
t2 = mydz & myct
t = t & mydz & myct
mydz = "": myct = ""
gp = gp + 3
Next
'pour les centimes, inversez l'apostophe selon
d = centime 'pour centimes en chiffres
'd = a(centime) 'pour centimes en lettres
If t <> "" Then myct = IIf(centime = 1, " centime", " centimes")
If t = "" Then myct = IIf(centime = 1, " centime d'Euro", " centimes
d'Euro")
If centime = 0 Then d = "": myct = ""
Application.EnableEvents = False
Target.Value = t & d & myct
Application.EnableEvents = True
End Sub
"ma galinette" message de news:
Je voudrais pouvoir taper un nombre dans une cellule, mais qu'il saffiche
directement en toute lettre. Est-ce que quelqu'un sait quelle formule
utiliser et surtout comment?
Merci d'avance.


Youky
Le #6437011
Oups!
J'avais pas indiqué que seul en colonne 2 soit B la macro est exécutée , si
différente changer If Target.Column<>??
ou encore pour écrire que dans 1 cellule soit B10 If
Target.address<>"$B$10"
Youky
ma galinette
Le #6437001
salut Youky,
Merci d'avoir pris le temps pour m'aider. Mais tu vas trouver que j'abuse.
Je suis vraiment une bille...
Quand tu me dis Click droit sur l'onglet concerné, tu parles de quoi?? quel
oglet? et aussi, la fenètre blanche c'est quoi?? lol
Merci de bien vouloir m'éclairer jusqu'au bout. je te serai très
reconnaissante.
Aussi est-ce que je copie tout ton texte de "private sub..." à '.... end
sub" ou bien je commence à "if target.column..." (je m'ai jamais utilisé de
macro au paravant)
Merci encore



"Youky" wrote:

Salut Galinette,
J'ai repris la macro que j'avais faite et mis sur Excelabo, elle ne
répondait pas exactement à ton souhait donc voici comment faire
Copie toute la macro suivante
Click avec le bouton droit de la souris sur l'onglet conserné et choisit
visualiser le code, tu colles ça direct dans la fenetre blanche
A+ si besoin
Youky

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Dim a As Variant, gros As Variant
s = Target.Value
If Not IsNumeric(s) Then MsgBox "non valable": Exit Sub
a = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _
"huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze",
"seize", "dix sept", _
"dix huit", "dix neuf", "vingt", "vingt et un", "vingt deux", "vingt trois",
"vingt quatre", _
"vingt cinq", "vingt six", "vingt sept", "vingt huit", "vingt neuf",
"trente", "trente et un", _
"trente deux", "trente trois", "trente quatre", "trente cinq", "trente six",
"trente sept", _
"trente huit", "trente neuf", "quarante", "quarante et un", "quarante deux",
"quarante trois", _
"quarante quatre", "quarante cinq", "quarante six", "quarante sept",
"quarante huit", _
"quarante neuf", "cinquante", "cinquante et un", "cinquante deux",
"cinquante trois", _
"cinquante quatre", "cinquante cinq", "cinquante six", "cinquante sept",
"cinquante huit", _
"cinquante neuf", "soixante", "soixante et un", "soixante deux", "soixante
trois", _
"soixante quatre", "soixante cinq", "soixante six", "soixante sept",
"soixante huit", _
"soixante neuf", "soixante dix", "soixante et onze", "soixante douze",
"soixante treize", _
"soixante quatorze", "soixante quinze", "soixante seize", "soixante dix
sept", _
"soixante dix huit", "soixante dix neuf", "quatre-vingts", "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", _
"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")
gros = Array("", "billions", "milliards", "millions", "mille", "Euros",
"billion", _
"milliard", "million", "mille", "Euro")
sp = Space(1)
chaine = "00000000000000"
centime = Right(s * 100, 2)
s = Str(Int(s)): lg = Len(s) - 1: s = Right(s, lg): lg = Len(s)
If lg < 15 Then chaine = Mid(chaine, 1, (15 - lg)) Else chaine = ""
s = chaine + s
'billions au centaines
gp = 1
For k = 1 To 5
x = Mid(s, gp, 1): c = a(Val(x))
x = Mid(s, gp + 1, 2): d = a(Val(x))
If k = 5 Then
If t2 <> "" And c & d = "" Then mydz = "Euros" & sp: GoTo fin
If t <> "" And c = "" And d = "un" Then mydz = "un Euros" & sp: GoTo fin
If t <> "" And t2 = "" And c & d = "" Then mydz = "d'Euros" & sp: GoTo fin
If t & c & d = "" Then myct = "": mydz = "": GoTo fin
End If
If c & d = "" Then GoTo fin
If d = "" And c <> "" And c <> "un" Then mydz = c & sp & "cents " & gros(k)
& sp: GoTo fin
If d = "" And c = "un" Then mydz = "cent " & gros(k) & sp: GoTo fin
If d = "un" And c = "" Then myct = IIf(k = 4, gros(k) & sp, "un " & gros(k +
5) & sp): GoTo fin
If d <> "" And c = "un" Then mydz = "cent" & sp
If d <> "" And c <> "" And c <> "un" Then mydz = c & sp & "cent" + sp
myct = d & sp & gros(k) & sp
fin:
t2 = mydz & myct
t = t & mydz & myct
mydz = "": myct = ""
gp = gp + 3
Next
'pour les centimes, inversez l'apostophe selon
d = centime 'pour centimes en chiffres
'd = a(centime) 'pour centimes en lettres
If t <> "" Then myct = IIf(centime = 1, " centime", " centimes")
If t = "" Then myct = IIf(centime = 1, " centime d'Euro", " centimes
d'Euro")
If centime = 0 Then d = "": myct = ""
Application.EnableEvents = False
Target.Value = t & d & myct
Application.EnableEvents = True
End Sub
"ma galinette" message de news:
Je voudrais pouvoir taper un nombre dans une cellule, mais qu'il saffiche
directement en toute lettre. Est-ce que quelqu'un sait quelle formule
utiliser et surtout comment?
Merci d'avance.







Modeste
Le #6436981
Bonsour® ma galinette avec ferveur ;o))) vous nous disiez :

Je voudrais pouvoir taper un nombre dans une cellule, mais qu'il
saffiche directement en toute lettre. Est-ce que quelqu'un sait
quelle formule utiliser et surtout comment?



;o)))
Question récurrente :
Pour un affichage direct dans la cellule de saisie, il faut utiliser un macro
événementielle .
en utilisant une fonction de traduction, une recherche Google en propose de
nombreuses....

Pour saisie dans une cellule et affichage dans une autre
voir utilisation d'une fonction personnalisée :
voir la FAQ MPFExcel : http://dj.joss.free.fr/faq.htm
http://dj.joss.free.fr/faq.htm#nblettre
http://excelabo.net/moteurs/compteclic.php?nom=bj-chiffres-en-lettres
http://xcell05.free.fr/fclicksql/fclick.php?1


pour le fun :
traduction chiffres en lettres avec une fonction livrée avec EXCEL
ºHTTEXT(A1)

et puis aussi prononciation en toutes lettres ;o)))
http://cjoint.com/?eElM0BS8dc





--
--
@+
;o)))

Publicité
Poster une réponse
Anonyme