Conversion chiffres en lettres

cs_habiboula Messages postés 2 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 25 juin 2006 - 25 juin 2006 à 15:53
fouadvnet Messages postés 2 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 18 mai 2010 - 14 févr. 2009 à 12:43
Bonjour
J'ai besoin d'aide SVP..;
J'ai fait du publipostage avec Word et j'ai besoin d'un module ou une macro qui me permettrait de convertir les chiffres en lettres !!! ex: 2450,00 euros (Deux mille quatre cents euros)
Merci de m'expliquer comment intégrer cette macro ou ce module pour que ça s'effectue automatiquement sous word ou excel
Merci infiniment
J'attends votre collaboration
                     Habib
A voir également:

6 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
25 juin 2006 à 18:31
C'est pas les sources qui manquent....
http://www.vbfrance.com/recherche.aspx?r=conversion+lettre&tr=source&dotnet=2

Merci de faire des recherches sources et forum avant de poster.

++
1
lebarn Messages postés 124 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 31 mai 2008
25 juin 2006 à 16:52
     Bonjour, as-tu rédigé la macro ? Si, oui, je pense que tu devrais lui assigner une touche de raccourci et l'utiliser sur chacun de tes documents. Ou bien l'intégrer à ton document modèle afin qu'il transforme automatiquement les nombres en lettres.

     Sinon, ben, si tu que je te la rédige, dis-le.

@+,
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
25 juin 2006 à 17:42
Salut,

il me semble avoir vu des sources faisant ce type de conversion. Regarde dans le moteur de recherche, télécharge la source et intègre là à ton document.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
cs_habiboula Messages postés 2 Date d'inscription dimanche 25 juin 2006 Statut Membre Dernière intervention 25 juin 2006
25 juin 2006 à 22:04
Bonjour!
Merci de prendre la peine de m'aider...
Effectivement je ne sais pas rédiger une macro.. je vous serais reconnaissant si vous pouvez la rédiger pour moi et m'expliquer comment l'intégrer dans le document
Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
26 juin 2006 à 08:28
Met ça dans un Module :

<ol><li>
Public
Function
MontantEnLettre(Montant) As
String
</li><li><samp>' Objectif: convertir des montants en lettre selon les règles orthographiques en vigueur</samp></li><li><samp>' au maroc . Par exemple pour un chèque bancaire</samp></li><li><samp>' Version valable pour un maximum de 999'999'999.99</samp></li><li>
Dim
varnum, varnumD, varnumD1, varnumU, varlet, résultat, bytcent As Byte
</li><li><samp>'varnum : pour stocker les parties du nombre que l'on va découper</samp></li><li><samp>'varlet : pour stocker la conversion en lettres d'une partie du nombre</samp></li><li><samp>'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres</samp></li><li><samp>'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres</samp></li><li><samp>'résultat: pour stocker les résultats intermédiaires des différentes étapes</samp></li><li>
Static
chiffre(1 To 19) <samp>'*** tableau contenant le nom des 19 premiers</samp></li><li><samp>'nombres en lettres</samp></li><li>chiffre(1) <var>"un"</var></li><li>chiffre(2) <var>"deux"</var></li><li>chiffre(3) = <var>"trois"</var></li><li>chiffre(4) = <var>"quatre"</var></li><li>chiffre(5) = <var>"cinq"</var></li><li>chiffre(6) = <var>"six"</var></li><li>chiffre(7) = <var>"sept"</var></li><li>chiffre(8) = <var>"huit"</var></li><li>chiffre(9) = <var>"neuf"</var></li><li>chiffre(10) = <var>"dix"</var></li><li>chiffre(11) = <var>"onze"</var></li><li>chiffre(12) = <var>"douze"</var></li><li>chiffre(13) = <var>"treize"</var></li><li>chiffre(14) = <var>"quatorze"</var></li><li>chiffre(15) = <var>"quinze"</var></li><li>chiffre(16) = <var>"seize"</var></li><li>chiffre(17) = <var>"dix-sept"</var></li><li>chiffre(18) = <var>"dix-huit"</var></li><li>chiffre(19) = <var>"dix-neuf"</var></li><li>
Static
dizaine(1 To 9) <samp>'*** tableau contenant les noms des dizaines</samp></li><li>dizaine(1) = <var>"dix"</var></li><li>dizaine(2) = <var>"vingt"</var></li><li>dizaine(3) = <var>"trente"</var></li><li>dizaine(4) = <var>"quarante"</var></li><li>dizaine(5) = <var>"cinquante"</var></li><li>dizaine(6) = <var>"soixante"</var></li><li>dizaine(7) = <var>"soixante"</var></li><li>dizaine(8) = <var>"quatre-vingt"</var></li><li>dizaine(9) = <var>"quatre-vingt"</var></li><li><samp>'*** Le traitement des milliards n'est pas pris en compte</samp></li><li>
If
Montant > 999999999.99
Then
</li><li>   
MsgBox
<var>"Les milliards ne sont pas traités par ce programme @ @"</var>, vbCritical, <var>"Conversion Montant en Lettres"</var></li><li>   
Exit
Function
</li><li>
End
If
</li><li><samp>'*** Traitement du cas zéro</samp></li><li>
If
Montant >= 1
Then
</li><li>   résultat = <var>""</var></li><li>
Else
</li><li>   résultat = <var>"zéro"</var></li><li>
GoTo
FinTraitement
</li><li>
End
If
</li><li><samp>'*** Traitement des millions</samp></li><li>varnum =
Int
(Montant / 1000000)
</li><li>
If
varnum > 0
Then
</li><li>   
GoSub
CentaineDizaine
</li><li>   résultat varlet + <var>" million"</var></li><li>   
If
varlet <> <var>"un"</var>
Then
résultat
résultat + <var>"s"</var></li><li>
End
If
</li><li><samp>'*** Traitement des milliers</samp></li><li>varnum =
Int
(Montant) Mod 1000000
</li><li>varnum =
Int
(varnum / 1000)
</li><li>
If
varnum > 0
Then
</li><li>   
GoSub
CentaineDizaine
</li><li>   
If
varlet <> <var>"un"</var>
Then
</li><li>      résultat = résultat + <var>" "</var> + varlet
</li><li>      résultat résultat & <var>" mille"</var></li><li>   
Else
</li><li>      résultat
<var>"mille"</var></li><li>   
End
If
</li><li>
End
If
</li><li><samp>'*** Traitement des centaines et dizaines</samp></li><li>varnum =
Int
(Montant) Mod 1000
</li><li>
If
varnum > 0
Then
</li><li>   
GoSub
CentaineDizaine
</li><li>   résultat = résultat + <var>" "</var> + varlet
</li><li>
End
If
</li><li>résultat =
LTrim
(résultat)
</li><li>varlet =
Right
$(résultat, 4)
</li><li><samp>'*** Traitement du "s" final pour mille, cent et du "de" pour million</samp></li><li>
Select
Case
varlet
</li><li>   
Case
<var>"ille"</var></li><li>      
If
Montant <> 1000
Then
résultat résultat + <var>"s"</var></li><li>    
Case
<var>"cent"</var></li><li>        
If
bytcent <> 1
Then
résultat
résultat + <var>"s"</var></li><li>    
Case
<var>"lion"</var>, <var>"ions"</var></li><li>      résultat = résultat + <var>" de"</var></li><li>
End
Select
</li><li></li><li>FinTraitement:
</li><li><samp>'*** Indication du terme devise</samp></li><li>   résultat = résultat + <var>"Dh"</var></li><li>   
If
Montant >= 2
Then
résultat = résultat + <var>"s"</var></li><li><samp>'*** Traitement des centimes</samp></li><li>   varnum =
Int
((Montant -
Int
(Montant)) * 100 + 0.5) <samp>'*** On additionne 0,5 afin de compenser</samp></li><li>                                                      <samp>'*** les erreurs de calcul dues aux arrondis</samp></li><li>   
If
varnum > 0
Then
</li><li>      
GoSub
CentaineDizaine
</li><li>      résultat résultat + <var>" et "</var> + varlet + <var>" centime"</var></li><li>      
If
varnum > 1
Then
résultat
résultat + <var>"s"</var></li><li>   
End
If
</li><li><samp>'*** Conversion 1ère lettre en majuscule</samp></li><li>   résultat =
UCase
(
Left
(résultat, 1)) +
Right
(résultat,
Len
(résultat) - 1)
</li><li><samp>'*** Renvoie du résultat de la fonction et fin de la fonction</samp></li><li>   MontantEnLettre = résultat
</li><li>
Exit
Function
</li><li>CentaineDizaine:
</li><li>   varlet = <var>""</var></li><li><samp>'*** Traitement des centaines</samp></li><li>   
If
varnum >= 100
Then
</li><li>      varlet = chiffre(
Int
(varnum / 100))
</li><li>      varnum = varnum Mod 100
</li><li>      
If
varlet <var>"un"</var>
Then
</li><li>         varlet
<var>"cent "</var></li><li>         bytcent = 1
</li><li>      
Else
</li><li>         varlet = varlet + <var>" cent "</var></li><li>      
End
If
</li><li>   
End
If
</li><li><samp>'*** Traitement des dizaines</samp></li><li>   
If
varnum <= 19
Then
<samp>'*** Cas où la dizaine est <20</samp></li><li>      
If
varnum > 0
Then
</li><li>         varlet = varlet + chiffre(varnum)
</li><li>      
End
If
</li><li>   
Else
</li><li>      varnumD
Int
(varnum / 10) <samp>'*** chiffre des dizaines</samp></li><li>      varnumU
varnum Mod 10 <samp>'*** chiffre des unités</samp></li><li><samp>'*** génération des dizaines en lettres</samp></li><li>      varlet = varlet + dizaine(varnumD)
</li><li></li><li>  
If
varnumD 7 Or varnumD 9
Then
</li><li>     varnumD1 = varnum - (varnumD - 1) * 10
</li><li>     varlet = varlet + <var>" "</var> + chiffre(varnumD1)
</li><li>
End
If
</li><li><samp>'*** traitement du séparateur des dizaines et unités</samp></li><li>      
If
varnumU 1
Then
</li><li>         varlet
varlet + <var>" et "</var></li><li>      
End
If
</li><li>   
End
If
</li><li>   
</li><li><samp>'*** génération des unités</samp></li><li>   
If
varnumU <> 0
Then
</li><li>   
If
varnumD 7 Or varnumD 9
Then
</li><li>   varlet = varlet
</li><li>   
Else
</li><li>    varlet = varlet + chiffre(varnumU)
</li><li>   
End
If
</li><li>   
End
If
</li><li><samp>'*** Suppression des espaces à gauche et retour</samp></li><li>   varlet =
RTrim
(varlet)
</li><li>   
Return
</li><li>
End
Function
</li></ol>Merci à WAHIDAbdelilah pour le code.

Ensuite insère un UserForm (UserForm1) :

Tu crées 1 bouton (CommandButton1) et 2 TextBox (TextBox1 & TextBox2)

Private Sub CommandButton1_Click()
   Dim Montant As Long
   Montant = TextBox1.Value
   TextBox2.Text = MontantEnLettre(Montant)
End Sub

En gros, saisie le nombre dans la première TextBox et quand tu cliques sur le bouton, le résultat s'affiche dans la 2eme TextBox
















@++
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>  Mortalino 

Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement
0
fouadvnet Messages postés 2 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 18 mai 2010
14 févr. 2009 à 12:43
slt j'ai un probléme je veux integrer le code de convertire un montant calculer dans   un crystalreport en lettre automatiquement sans ecrire le montant
 
0
Rejoignez-nous