Transcrire un chiffre en texte (VBA, Xla et Formule)

Exemple, une cellule d'un tableau me donne 1018. Pouvoir traduire automatiquement ce chiffre en "Mille dix huit" dans une autre cellule. Exemple d'application, sur un chèque, écrire le montant en chiffres et en lettres.

J'ai vu sur un numéro de l'Ordinateur Individuel que cela existait, mais je ne peux malgré une longue recherche retrouver l'article.

Merci à qui peut m'aider.

Salut le forum

Bienvenue comme nouveau membre GIV

Une fonction personnalisée (Macro)

'*************************************************************
' Fonction de conversion chiffres en lettres
'*************************************************************
Public Function somlet2(ByVal argument As Double) As String

Dim lettres As Variant
Dim unites As Variant
Dim dizaines As Variant
Dim centaines As Variant

Dim unite As Integer
Dim dix As Integer
Dim cent As Integer

Dim groupes As Variant
Dim chaine As String
Dim ng, nc As Integer
Dim i, j, k As Integer
Dim xx As String

chaine = Trim(Str(argument))
nc = Len(chaine) ' Nbre de chiffres

lettres = Array("", "mille", "million", "milliard", "billion")
unites = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", "dix huit", "dix neuf")
dizaines = Array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante dix", "quatre vingt", "quatre vingt dix")
centaines = Array("", "cent", "deux cents", "trois cents", "quatre cents", "cinq cents", "six cents", "sept cents", "huit cents", "neuf cents")

If argument = 0 Then
somlet2 = ""
Else
If nc Mod 3 > 0 Then
ng = Int(nc / 3) + 1 ' Nbre de groupes
Else
ng = nc / 3
End If
ReDim groupes(ng - 1)
chaine = String(ng * 3 - nc, " ") & chaine
nc = Len(chaine)
j = 0
For i = nc To 1 Step -3
xx = Mid(chaine, i - 2, i)
groupes(j) = xx
j = j + 1
Next
chaine = ""
For j = 0 To UBound(groupes)
unite = Val(Mid(groupes(j), 3, 1))
dix = Val(Mid(groupes(j), 2, 1))
If dix = 1 Or dix = 7 Or dix = 9 Then
dix = dix - 1
unite = unite + 10
End If
cent = Val(Mid(groupes(j), 1, 1))
chaine = centaines(cent) & " " & dizaines(dix) & " " & unites(unite) & " " & lettres(j) & " " & chaine
Next
somlet2 = chaine
End If
End Function

Il existe plusieurs variantes fait une recherche avec Google

Mytå

GIV a écrit :

Exemple, une cellule d'un tableau me donne 1018. Pouvoir traduire automatiquement ce chiffre en "Mille dix huit" dans une autre cellule. Exemple d'application, sur un chèque, écrire le montant en chiffres et en lettres.

J'ai vu sur un numéro de l'Ordinateur Individuel que cela existait, mais je ne peux malgré une longue recherche retrouver l'article.

Merci à qui peut m'aider.

Bonsoir

Une autre solution a déjà été donnée plusieurs fois sur le Forum, en utilisant les Macros Complémentaires "Morefun" de Laurent Longres.

https://www.excel-pratique.com/forum/viewtopic.php?t=4109

Cordialement

Salut le forum

Une version sans macro de Thierry Pourtier : Le fichier

Mytå

P.S. Il ne reste qu'à faire son choix

Vraiment merci à tous pour la rapidité de vos réponses. Il faut maintenant que je la mette en place pour faire un mailing de reçus fiscaux demandant les sommes en chiffres et en lettres. J'aurais mieux fait de vous poser la question plus tôt car j'ai passé beaucoup de temps à rechercher dans ma documentation.

Merci encore

Bonjour Monsieur,

pourriez vous me guider dans la manière d'utiliser votre fonction?

Merci d'avance.

Lynda.

Rechercher des sujets similaires à "transcrire chiffre texte vba xla formule"