Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme 75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme 75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme 75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
bonsoir.
tu trouveras les procédures sur le site de jessy pour le français , le belge
et l'allemand
http://access.jessy.free.fr/htm/Number/ConvertNbLettres.htm
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme 75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
bonsoir.
tu trouveras les procédures sur le site de jessy pour le français , le belge
et l'allemand
http://access.jessy.free.fr/htm/Number/ConvertNbLettres.htm
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" <Cyrille@discussions.microsoft.com> a écrit dans le message de
news: BBDA8E72-9A0F-4FE3-8BC6-A13EBD91D5A8@microsoft.com...
Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme 75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
bonsoir.
tu trouveras les procédures sur le site de jessy pour le français , le belge
et l'allemand
http://access.jessy.free.fr/htm/Number/ConvertNbLettres.htm
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme 75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
encore merci, ca marche, j'ai pas compris à quoi sert "Devise As String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
encore merci, ca marche, j'ai pas compris à quoi sert "Devise As String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
encore merci, ca marche, j'ai pas compris à quoi sert "Devise As String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
bonsoir.
tu trouveras les procédures sur le site de jessy pour le français , le
belge
et l'allemand
http://access.jessy.free.fr/htm/Number/ConvertNbLettres.htm
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme
75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) -
1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
bonsoir.
tu trouveras les procédures sur le site de jessy pour le français , le
belge
et l'allemand
http://access.jessy.free.fr/htm/Number/ConvertNbLettres.htm
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" <Cyrille@discussions.microsoft.com> a écrit dans le message de
news: BBDA8E72-9A0F-4FE3-8BC6-A13EBD91D5A8@microsoft.com...
Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme
75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) -
1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
bonsoir.
tu trouveras les procédures sur le site de jessy pour le français , le
belge
et l'allemand
http://access.jessy.free.fr/htm/Number/ConvertNbLettres.htm
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:Bonjour à tous
comment convertir un nombre en euros en lettres en sachant que j'ai déjà
un
programme mais il se trompe quand il faut ecrire des chiffres comme
75,72
?
il ecrit soixante-dix-cinq euros et soixante-dix-deux centimes
est ce que quelqu'un en a un sans cette erreur ou sinon je joins le code
de
ce programme
Merci d'avance
------------voici le code
Public Function MontantEnLettre(Montant) As String
' Objectif: convertir des montants en lettre selon les règles
orthographiques en vigueur
' en France(Suisse romande). Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, Résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes
étapes
Static Chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
Chiffre(1) = "un"
Chiffre(2) = "deux"
Chiffre(3) = "trois"
Chiffre(4) = "quatre"
Chiffre(5) = "cinq"
Chiffre(6) = "six"
Chiffre(7) = "sept"
Chiffre(8) = "huit"
Chiffre(9) = "neuf"
Chiffre(10) = "dix"
Chiffre(11) = "onze"
Chiffre(12) = "douze"
Chiffre(13) = "treize"
Chiffre(14) = "quatorze"
Chiffre(15) = "quinze"
Chiffre(16) = "seize"
Chiffre(17) = "dix-sept"
Chiffre(18) = "dix-huit"
Chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "soixante-dix"
dizaine(8) = "quatre-vingt"
dizaine(9) = "quatre-vingt-dix"
'dizaine(7) = "septante"
'dizaine(8) = "huitante"
'dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
Résultat = ""
Else
Résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = varlet + " million"
If varlet <> "un" Then Résultat = Résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
Résultat = Résultat + " " + varlet
Résultat = Résultat & " mille"
Else
Résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
Résultat = Résultat + " " + varlet
End If
Résultat = LTrim(Résultat)
varlet = Right$(Résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
Résultat = Résultat + "s"
Case "cent"
Résultat = Résultat + "s"
Case "lion", "ions"
Résultat = Résultat + " de"
End Select
FinTraitement:
'*** Indication du terme Euro
Résultat = Résultat + " Euro"
If Montant >= 2 Then Résultat = Résultat + "s" & vbCrLf
'*** Traitement des centimes
varnumD = 0
varnumU = 0
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne
0,5
afin de compenser
'*** les erreurs de
calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
' Résultat = Résultat + " et " + varlet + " centime"
Résultat = Résultat + " " + varlet + " centime"
If varnum > 1 Then Résultat = Résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
Résultat = UCase(Left(Résultat, 1)) + Right(Résultat, Len(Résultat) -
1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = Résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = Chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + Chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + Chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
Raymond,
Le belge ;O) Ca me fait sourire... En ce moment je parle belge ou
français
?
Guy
Raymond,
Le belge ;O) Ca me fait sourire... En ce moment je parle belge ou
français
?
Guy
Raymond,
Le belge ;O) Ca me fait sourire... En ce moment je parle belge ou
français
?
Guy
L'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:encore merci, ca marche, j'ai pas compris à quoi sert "Devise As String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
L'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" <Cyrille@discussions.microsoft.com> a écrit dans le message de
news: 89EDD68A-B381-4EA5-9098-83D9B3AC855F@microsoft.com...
encore merci, ca marche, j'ai pas compris à quoi sert "Devise As String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
L'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:encore merci, ca marche, j'ai pas compris à quoi sert "Devise As String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
depuis que j'ai utilisé cette fonction, toutes les valeurs qui devraient
etre
en lettre sont écrites zéro euroL'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la
suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:encore merci, ca marche, j'ai pas compris à quoi sert "Devise As
String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je
ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
depuis que j'ai utilisé cette fonction, toutes les valeurs qui devraient
etre
en lettre sont écrites zéro euro
L'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la
suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" <Cyrille@discussions.microsoft.com> a écrit dans le message de
news: 89EDD68A-B381-4EA5-9098-83D9B3AC855F@microsoft.com...
encore merci, ca marche, j'ai pas compris à quoi sert "Devise As
String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je
ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
depuis que j'ai utilisé cette fonction, toutes les valeurs qui devraient
etre
en lettre sont écrites zéro euroL'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la
suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Cyrille" a écrit dans le message de
news:encore merci, ca marche, j'ai pas compris à quoi sert "Devise As
String"
dans
la déclaration de la fonction
Public Function ConvertNbLettres(Nb, Devise As String) As String
parce qu'après il faut bien créer une fonction après changement mais je
ne
sais pas comment ecrire
Me.Lettres= ConvertNbLettres(.........)
depuis que j'ai utilisé cette fonction, toutes les valeurs qui devraient
etre
en lettre sont écrites zéro euroL'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la
suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
depuis que j'ai utilisé cette fonction, toutes les valeurs qui devraient
etre
en lettre sont écrites zéro euro
L'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la
suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum
depuis que j'ai utilisé cette fonction, toutes les valeurs qui devraient
etre
en lettre sont écrites zéro euroL'argument "Nb" correspond au nombre à convertir et l'argument "Devise"
correspond au nom de la devise monétaire que l'on souhaite mettre à la
suite
du nombre
exemple:
<Variablestring> = ConvertNbLettres(1600000.50, "Euro")
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum