Conversion de Chiffre en Lettre

Djoe

XLDnaute Nouveau
Bonjour à tous.
et ben voila il y a quelque mois que j'ai commencé à utiliser les modules VBA (nbletter) d'excel que j'ai découvert dans votre forum et petit à petit j'ai réussi a la formulé selon mon besoin (3 chiffre après la virgule, monnaie et sous monnaie, langue etc).
et tout d'un coup j'ai perdu le module suite à une mauvaise manipulation ou je pense que c suite à l'installation de (morefunc) et que je n'ai pas pu entrer pour modifier celle qui concerne la (nbletter) il me demande mot de passe pour pouvoir modifier le contenu de (morefunc) alors j'ai retourné au départ et j'ai téléchargé une module que je pense de votre forum elle est bien sauf que j'ai un seul souci pour le moment et que j'aime bien que vous m'aidez à le résoudre voila 2 exemple:
  • le montant en chiffre étant: (46 479,900)
  • Voila le module qu'est ce qu'elle m'écrit: (Quarante-Six Mille Quatre Cent Soixante-Dix-Neuf Dinars Quatre-Vingt-Dix Millimes)
  • Correction:
    Quarante-Six Mille Quatre Cent Soixante-Dix-Neuf Dinars, Neuf Cent Millimes.
  • ou bien
    Quarante-Six Mille Quatre Cent Soixante-Dix-Neuf Dinars, 900 Millimes.
autres exemple
  • 3 394,500
  • Voila le module qu'est ce qu'elle m'écrit:
    (Trois Mille Trois Cent Quatre-Vingt-Quatorze Dinars Cinquante Millimes)
  • Correction:
    Trois Mille Trois Cent Quatre-Vingt-Quatorze Dinars, Cinq Cent Millimes.
  • ou bien
    Trois Mille Trois Cent Quatre-Vingt-Quatorze Dinars, 500 Millimes.
Merci d'avance et bonne journée à tout le monde

Djoe
 

Djoe

XLDnaute Nouveau
Roger vraiment je trouve pas les mots qui me servent pour vous remercier infiniment.
mais voila merci beaucoup et j’espère être en mesure de vous le rendre une fois.
je vais faire la 2eme façon et je vous donne les résultat plus tard.
ciao et bonne journée à tous.
 

Djoe

XLDnaute Nouveau
Salut tout le monde j’espère que vous allez tous bien
merci patron (Roger) pour votre précieuse collaboration le résultat est bonne et chaque fois je découvre une chose aujourd’hui j'ai arrivé a modifié les sous monnaies de toute lettre vers un chiffre. juste une chose y'a t'il une possibilité de faire la 1er lettre de chaque mot en majuscule et c tout.
Bon fin de journée
Bon weekend
et à lundi
bye
 

ROGER2327

XLDnaute Barbatruc
Re...

Bonjour tout le monde
Bonjour Maitre Roger
s'il vous plais 1er lettre de chaque mot en majuscule et c tout
Bonne journée et à bien tôt.
Djoe

Ce problème est réglé dans le classeur joint au message #11 : voir l'onglet Ce lien n'existe plus qui détaille les paramètres utilisables. Le septième paramètre permet diverses possibilités d'utilisation des majuscules. Je vous les rappelle dans le classeur joint.

Bonne nuit.


ℝOGER2327
#8329


Samedi 7 Absolu 144 (Saint Alambic, abstracteur - fête Suprême Quarte)
28 Fructidor An CCXXIV, 9,3166h - maïs
2016-W37-3T22:21:35Z
 

Pièces jointes

  • Nombres en lettres (septième paramètre).xlsm
    36.8 KB · Affichages: 98

ROGER2327

XLDnaute Barbatruc
Suite...

On a aussi :
Code:
=MAJUSCULE(Num_Alph($A$1;4;3))
=NOMPROPRE(Num_Alph($A$1;4;3))

Bonne journée.

ℝOGER2327
#8330


Dimanche 8 Absolu 144 (Absinthe, ci devant Saint Alfred - fête Suprême Tierce)
29 Fructidor An CCXXIV, 4,0684h - marron
2016-W37-4T09:45:51Z
 

ROGER2327

XLDnaute Barbatruc
Bonjour, auriez vous le même macro mais on retient le mot "virgule" au lieu de centimes SVP

Merci

Bon jour Spyro.

Drôle d'idée !

Il suffit de remplacer le mot «centime» par le mot «virgule» dans le code. Les trois lignes concernées par cette modification sont dans la fonction Num_Alph :​
VB:
  k = 1: r(k, 0) = Array(" euro", "s", "", "", p, " d'euro", " D'"): r(k, 1) = Array("", "", " centime", ""): r(k, 2) = Array("", "", "s", "")
  k = 4: r(k, 0) = Array(" dinar", "s", " tunisien", "s", p, " de dinar", " De"): r(k, 1) = Array("", "", " centime", " millime"): r(k, 2) = Array("", "", "s", "s")
  k = 5: r(k, 0) = Array(" dinar", "s", " algérien", "s", p, " de dinar", " De"): r(k, 1) = Array("", "", " centime", ""): r(k, 2) = Array("", "", "s", "")
xxx
Elles deviennent :​
VB:
  k = 1: r(k, 0) = Array(" euro", "s", "", "", p, " d'euro", " D'"): r(k, 1) = Array("", "", " virgule", ""): r(k, 2) = Array("", "", "s", "")
  k = 4: r(k, 0) = Array(" dinar", "s", " tunisien", "s", p, " de dinar", " De"): r(k, 1) = Array("", "", " virgule", " millime"): r(k, 2) = Array("", "", "s", "s")
  k = 5: r(k, 0) = Array(" dinar", "s", " algérien", "s", p, " de dinar", " De"): r(k, 1) = Array("", "", " virgule", ""): r(k, 2) = Array("", "", "s", "")

Bonne journée.


ℝOGER2327
#8336


Samedi 14 Absolu 144 (Saint Sophrotatos l’Arménien, pataphysicien - fête Suprême Quarte)
5ème Sanculottide An CCXXIV, 5,5598h - fête des Récompenses
2016-W38-3T13:20:36Z
 

Spyro

XLDnaute Nouveau
Merci pour ta réponse Roger

Au fait, ce que voulait c'est garder tes premières formules nombres en lettres avec le 7ème parametres avec la 1ere lettres en majuscules mais au lieu de "et"ou'centimes" a la fin "virgule" avant l'Unité ($)

exemples: 336 000,12 Dollar>Trois cent trente-six mille virgule douze Dollar

Et serait il possible d'avoir un fichier .xla et le code de commande comme ci dessus stp

Bonne Continuation!
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Suite...

Votre demande est plus simple que celle de Djoe. Vous pouvez essayer cette fonction à la place de Num_Alph :​
VB:
Function Num_Alph_V$(ByVal v, Optional h As Boolean = True)
'
'|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
'| Fonction créée le 5 Sanculottide CCXXIV / mercredi 21 septembre 2016 par ROGER2327 |
'|____________________________________________________________________________________|
'
'Remarque :  La fonction n'arrondit pas les données.
Dim a$, b$, d$, e$
Const y$ = "*000000", z$ = "zéro"
  If v <> "" And IsNumeric(v) Then
    a = Left$(v & ",", InStr(1, v & ",", ",") - 1)
    If Len(a) <> Len(v) Then b = Left$(Right$(v, Len(v) - InStr(1, v, ",")) & "00", 2) Else b = "0"
    d = NbLit3(0 & b, 0): If d = z Then b = "0"
    e = NbLit3(0 & a, 0)
    If 0 < b And b <= 9 Then d = z & " " & d
    If b <> 0 Then e = e & " virgule " & d Else If Replace(a, " ", "") Like y Then e = e & " de"
    e = e & " dollar" & IIf(v >= 2, "s", "")
    If h Then e = UCase(Left$(e, 1)) & Right$(e, Len(e) - 1)
    Num_Alph_V = e
  End If
End Function
Le seul paramètre optionnel conservé permet de mettre une majuscule (paramètre omis ou VRAI) ou une minuscule (paramètre FAUX) au début du texte.

Quant à transformer tout cela en «macro» complémentaire, encore faudrait-il que je fusse certain que le code est solide. Cela nécessite de très nombreux tests que je n'ai pas le courage d’entreprendre. Libre à vous de faire ce travail : le code est libre.​

Bonne soirée.

ℝOGER2327
#8337


Samedi 14 Absolu 144 (Saint Sophrotatos l’Arménien, pataphysicien - fête Suprême Quarte)
5ème Sanculottide An CCXXIV, 7,6616h - fête des Récompenses
2016-W38-3T18:23:17Z
 

ROGER2327

XLDnaute Barbatruc
Bonjour
(...)
Bonjour.​


(...)
Thanks Roger,
(...)
Moi pas comprendre.​

(...)
sinon excel me di qu 'il y a une erreur sur cette partie quand je fait alt+f11
(...)
Quand je disais
Vous pouvez essayer cette fonction à la place de Num_Alph
je ne sous-entendais pas qu'il fallait supprimer le reste du code et, notamment, NbLit3.
NbLit3 est une fonction appelée par Num_Alph et Num_Alph_V : Certainement n'avez-vous pas seulement remplacé la fonction Num_Alph par la fonction Num_Alph_V, mais aussi supprimé tout ou partie des fonctions annexes.
Je remets le code complet en pièce jointe (Nombres_en_lettres_ROGER2327.txt)​

(...)
Et stp pourrait tu m'expliquer avec un petit tuto comment exporter en macro une fois que j'ai tout vérifier
(...)
Pour exporter un module de code, voyez l'onglet «Instructions» du classeur joint (qui contient aussi le module Nombres_en_lettres_ROGER2327 et un rappel du message #14 indiquant la marche à suivre pour l'installer proprement dans un classeur).
Pour créer un «classeur de macros complémentaires», reportez-vous à la nombreuse littérature existant sur la toile. Voyez, par exemple, ici. Rédiger un «tuto» comme vous dites, dépasse mes compétences. J'en suis désolé.​

(...)
Have a nice day!
Moi pas comprendre.​

Ayez un beau jour !


ℝOGER2327
#8338


Dimanche 15 Absolu 144 (Ethernité - fête Suprême Tierce)
1[SUP]er[/SUP] Vendémiaire An CCXXV, 5,5050h - raisin
2016-W38-4T13:12:43Z
 

Pièces jointes

  • Nombres_en_lettres_ROGER2327.txt
    21.1 KB · Affichages: 59
  • Nombres en lettres (5).xlsm
    37.3 KB · Affichages: 80

Discussions similaires

Statistiques des forums

Discussions
315 131
Messages
2 116 574
Membres
112 792
dernier inscrit
Jean-Marc YOT