XL 2016 Convertir nombre en lettre

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re

Je ne veux rien exprimer de particulier
Je dis juste que le site semble prendre en compte la réforme
Et que la page Mode d'emploi est intéressante à lire.

Pour le reste, personnellement, je ne vois pas l’intérêt de faire dans un VBA ce que font rapidement moults convertisseurs sur le net.
Mais ce n'est là qu'un avis personnel. 😉
 
re
bonjour le fil
@youky(BJ) si ca t’intéresse
voici la mécanique éprouvette de base de ma fonction que tu trouvera dans les ressources
tu constatera que l'array des string est considérablement réduit
et je vais jusqu'au décilliard
VB:
Sub test()
    Nblettre ("321135628714356147139110015086418878")
End Sub
'
Function Nblettre(chaine As String) As String
    Dim t, dixx&, dix&, cxx&, u&
    Ul = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf", "cent ")
    Diz = Array("", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante-dix", "quatre-vingt", "quatre-vingt-dix", "cent")
    ms = Array("", " decilliard", " decillion", " nonilliard", " nonillion", " octillard", " octillion", " septilliard", " septillion", " sextilliard", " sextillion", " quintilliard ", " Quintillion", " quadrilliard", " quadrillion", " trilliard", " trillion", " Billiard", " billion", " milliard", " million", " mille", "")
    x = UBound(ms)
    chaine = "00" & chaine
    For I = Len(chaine) - 2 To 1 Step -3
        seg = Mid(chaine, I, 3)
        cxx = Left(seg, 1): dixx = Right(seg, 2): dix = Mid(seg, 2, 1): u = Right(seg, 1)
        If cxx = 1 Then cxx = 20: cc = "" Else cc = IIf(cxx > 0, "-cents ", "")
        If dix = 9 Or dix = 7 And u >= 1 Then dix = dix - 1: u = u + 10
        If dixx > 9 And dixx < 20 Then dix = 0: u = u + 10
        If dix >= 2 And dix <= 7 And (u = 1 Or u = 11) Then et = " et " Else et = IIf(dix <> 0, "-", " ")

        Texte = Application.Trim(Application.Trim(Ul(cxx) & cc & Diz(dix) & et & Ul(u)) & " " & ms(x) & " " & Texte)
        'debug segment
        Debug.Print Application.Trim(Ul(cxx) & cc & Diz(dix) & et & Ul(u)) & " (" & seg & ")  " & ms(x)
        x = x - 1
    Next
    'debug complet
    Debug.Print Texte
End Function
libre a chacun d’extérioriser les deux array déclinés sous diverses langues
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
133
Réponses
7
Affichages
188
  • Question Question
Microsoft 365 Lecture vocale USF
Réponses
5
Affichages
208
Retour