OVH Cloud OVH Cloud

Function de conersion

11 réponses
Avatar
Toure Mamadou
Bonjour !
J'aimerai savoir s'il existe une fonction me permettant=20
de convertir une date =E9crite en chiffres en une date=20
=E9crite en lettre.
Ex:1968(Milles neuf cents soixante huit

1 réponse

1 2
Avatar
Patrice Henrio
Effectivement très intéressant, mais pas trivial à mon sens.
J'avoue que je n'aurai pas pensé à utiliser google pour cela.
"Jean-Marc" a écrit dans le message de
news:3fd359ea$0$3245$
"Jean-Marc" a écrit dans le message de
news:3fd3587b$0$3249$
> "Patrice Henrio" a écrit dans le
> message de news:
> > Sans parler des particularités dont je parlais ci-dessus :
"quatre-vingts"
> > et "quatre-vingt trois"
>
> Oui! Donc, programmtion plutôt triviale en soi, mais prévoir d'avoir son
> Grevisse à portée de main :-)

Et tant qu'on y est, le code pour faire ça, avec commentaires et tout.
http://www.vbfrance.com/code.aspx?IDw0

URL obtenue en 2 secondes d'un simple Google "conversion nombre lettres" ,
2eme lien ...


>
>
> >
> > "Jean-Marc" a écrit dans le message de
> > news:3fd2333a$0$5476$
> > > "ng" a écrit dans le message de
> > > news:
> > > > dizaine(7) = "septante"
> > > > dizaine(9) = "nonante"
> > > > Mouarf :-)
> > >
> > > Et oui, cette conversion est beaucoup plus simple à écire pour nos
amis
> > > belges, suisses et quebecois.
> > > Le problème est plus compliqué en français tel qu'on le parle en
france:
> > >
> > > septante-six => soixante seize
> > > septante-sept => soixante dix sept
> > >
> > > plus compliqué à écrire proprement, mais rien de bien méchant :-)
> > >
> > > >
> > > > "David" a écrit dans le message de news:
> > > > #
> > > > >
> > > > > Bonjour
> > > > >
> > > > > 1968 n'évoque pas pour moi
> > > > > une date mais un nombre;
> > > > > voici donc un sous-programme
> > > > > pour convertir un nombre en lettre.
> > > > > (avec euro et centimes)
> > > > >
> > > > >
> > > > > Function NBenLettres(nb)
> > > > > '
> > > > > 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 16 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) = "septante"
> > > > > dizaine(8) = "quatre-vingt"
> > > > > dizaine(9) = "nonante"
> > > > >
> > > > > '
> > > > > '*** Traitement du cas zéro franc
> > > > > If nb >= 1 Then
> > > > > résultat = ""
> > > > > Else
> > > > > résultat = "zéro"
> > > > > GoTo fintraitementfrancs
> > > > > End If
> > > > > '*** Traitement des millions
> > > > > varnum = Int(nb / 1000000)
> > > > > If varnum > 0 Then
> > > > > GoSub centaine_dizaine
> > > > > résultat = varlet + " million"
> > > > > If varlet <> "un" Then résultat = résultat + "s"
> > > > > End If
> > > > > '
> > > > > '*** Traitement des milliers
> > > > > varnum = Int(nb) Mod 1000000
> > > > > varnum = Int(varnum / 1000)
> > > > > If varnum > 0 Then
> > > > > GoSub centaine_dizaine
> > > > > If varlet <> "un" Then résultat = résultat + " " +
> > > > > varlet
> > > > > résultat = résultat + " mille"
> > > > > End If
> > > > > '
> > > > > '*** Traitement des centaines et dizaines
> > > > > varnum = Int(nb) Mod 1000
> > > > > If varnum > 0 Then
> > > > > GoSub centaine_dizaine
> > > > > résultat = résultat + " " + varlet
> > > > > End If
> > > > > résultat = LTrim(résultat)
> > > > > varlet = Right$(résultat, 4)
> > > > > '
> > > > > '*** Traitement du "s" final pour vingt et cent et
> > > > > du "de" pour million
> > > > > Select Case varlet
> > > > > Case "cent", "ingt"
> > > > > résultat = résultat + "s"
> > > > > Case "lion", "ions"
> > > > > résultat = résultat + " de"
> > > > > End Select
> > > > > fintraitementfrancs: '*** Etiquette de branchement
> > > > > pour le cas "zéro franc"
> > > > > '
> > > > > '*** Indication du terme franc
> > > > > résultat = résultat + " euro"
> > > > > If nb >= 2 Then résultat = résultat + "s"
> > > > > '
> > > > > '*** Traitement des centimes
> > > > > varnum = Int((nb - Int(nb)) * 100 + 0.5) '*** On
> > > > > additionne 0,5
> > > > > '*** afin de compenser
> > > > > '*** les erreurs de calcul
> > > > > '*** dues aux arrondis
> > > > > If varnum > 0 Then
> > > > > GoSub centaine_dizaine
> > > > > résultat = résultat + " et " + 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
> > > > > NBenLettres = résultat
> > > > > Exit Function
> > > > > '
> > > > > centaine_dizaine: '*** Sous-programme de
> > > > > conversion en lettres
> > > > > '*** des centaines et dizaines
> > > > > 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)
> > > > > Else '*** Autres cas
> > > > > varnumD = Int(varnum / 10) '*** chiffre des
> > > > > dizaines
> > > > > varnumU = varnum Mod 10 '*** chiffre des unités
> > > > > '''Select Case varnumD '*** génération des
> > > > > dizaines en lettres
> > > > >
> > > > > varlet = varlet + dizaine(varnumD)
> > > > > '''Case Is <= 5
> > > > > '''varlet = varlet + dizaine(varnumD)
> > > > > '''Case 6, 7
> > > > > '''varlet = varlet + dizaine(6)
> > > > > '''Case 8, 9
> > > > > '''varlet = varlet + dizaine(8)
> > > > > '''End Select
> > > > > '
> > > > > '*** traitement du séparateur des dizaines et
> > > > > unités
> > > > > If varnumU = 1 And varnumD < 8 Then
> > > > > varlet = varlet + " et "
> > > > > Else
> > > > > If varnumU <> 0 Then
> > > > > varlet = varlet + "-" '''Or varnumD = 7 Or varnumD
> > > > > = 9
> > > > > End If
> > > > > End If
> > > > > '*** génération des unités
> > > > > '''If varnumD = 7 Or varnumD = 9 Then varnumU > > > > > > varnumU + 10
> > > > > If varnumU <> 0 Then varlet = varlet +
> > > > > chiffre(varnumU)
> > > > > End If
> > > > > '
> > > > > '*** Suppression des espaces à gauche et retour
> > > > > varlet = RTrim(varlet)
> > > > > Return
> > > > > End Function
> > > > >
> > > > >
> > > > > a+
> > > > > Jean-Pol DAVID
> > > > > mailto:
> > > > > www.peintures-david.com
> > > > > ICQ 28394733
> > > > > --
> > > > > Quis ? Quid ? Ubi ? Quibus auxiliis ? Cur ?
> > > > > Quomodo ? Quando ?
> > > > >
> > > > > "Patrice Henrio"
> > > > > a écrit dans
> > > > > le message news:
> > > > > #0siL3$
> > > > > > En fait il s'agirait d'une fonction
> > > > > convertissant un nombre entier en
> > > > > > lettres. cela n'existe pas tout fait même si de
> > > > > nombreux programmeurs ont
> > > > > > déjà réalisé cela. En tout cas ce n'est pas
> > > > > simple, L'exemple que tu cites
> > > > > > en est un exemple car il comporte deux fautes.
> > > > > Une faute de frappe t'as fait
> > > > > > écrire "Mille" avec un "S". Mais surtout, le mot
> > > > > cent est invariable dans un
> > > > > > nombre sauf s'il n'est pas suivi d'autres
> > > > > chiffres : ainsi on écrit "Mille
> > > > > > neuf cents" mais "Mille neuf cent soixante
> > > > > huit".
> > > > > > De même on écrit "quatre-vingts" mais
> > > > > "quatre-vingt un".
> > > > > > Par contre "mille" est toujours invariable en
> > > > > tant que nombre.
> > > > > >
> > > > > > "Toure Mamadou" a écrit
> > > > > dans le message de
> > > > > > news:e2f501c3bbf8$8bac6340$
> > > > > > Bonjour !
> > > > > > J'aimerai savoir s'il existe une fonction me
> > > > > permettant
> > > > > > de convertir une date écrite en chiffres en une
> > > > > date
> > > > > > écrite en lettre.
> > > > > > Ex:1968(Milles neuf cents soixante huit
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




1 2