cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 oct. 2002 à 20:01
je ne connaîs aucune instruction qui puisse le faire... mais il est possible qu'elle existe.
Sinon, ce que tu peux faire, c'est effectuer la conversion toi-même par une instruction select case.
Ca risque être un peu long, mais c'est possible :
Tu devrais avoir environ une trentaine de "Case" possible :
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30
40,50,60,70,80,90,100,1000,1000000,1000000000
malcom78
Messages postés29Date d'inscriptionmardi 25 juin 2002StatutMembreDernière intervention31 mai 2003 18 oct. 2002 à 12:48
Merci pour ta réponse,
ouais j'avais pensé a faire des select case, mais ce que je vois pas. C'est comment je vais faire pour traiter les nombres comme 1234,11.
Euh je sais pas si tu vois ce que je veux dire mais si t'as bsn de + de renseignement dis le moi.
Merci
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 20 oct. 2002 à 20:41
En fait, le problème que tu as posé est assez interessant, et je crois que je vais publier une source la dessus ;-)
Par contre, je ne sais pas quand je vais pouvoir m'y atteler, vu que j'ai déjà 3 projets à faire...
cs_Pablo35
Messages postés1Date d'inscriptionlundi 8 décembre 2003StatutMembreDernière intervention11 décembre 2003 11 déc. 2003 à 19:01
Bonjour,
Mon souhait est d'apprendre manipuler VB, mais je n'ai pas le moyen d'avoir le logiciel à question pour m'exercer de temps à temps.
Je vous demande de me venir en aide, pour contact: kashindi@distributel.net
jpcipm
Messages postés1Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention17 novembre 2004 17 nov. 2004 à 22:39
Et bilingue en plus...
Adaptable à n'importe quelle autre langue en alphabet latin.
Option Explicit
Const Français = 1
Const Allemand = 2
Dim TableUnitésFR(0 To 19) As String
Dim TableDizainesFR(0 To 9) As String
Dim TableUnitésDE(0 To 19) As String
Dim TableDizainesDE(0 To 9) As String
Dim TablesInitialisées As Integer
'
'----------------------------------------------------------------------------
'
Static Sub InitTables()
End Sub
'
'----------------------------------------------------------------------------
'
Function EcrireEnLettre(Value As Variant, NomUnité As String, NomSousMultiple As String, Langue As Integer) As String
'
' Renvoie le texte en lettre d'un nombre
'
Dim Strings As String
Strings = " "
If IsNumeric(Value) _
Then
If Not TablesInitialisées _
Then
InitTables
End If
Select Case Langue
Case Français
Strings = EcrireEnLettreFrançais(Value, NomUnité, NomSousMultiple)
Case Allemand
Strings = EcrireEnLettreAllemand(Value, NomUnité, NomSousMultiple)
Case Else
End Select
End If
EcrireEnLettre = PremièreLettreMajuscule(Strings)
End Function
'
'----------------------------------------------------------------------------
'
Function EcrireEnLettreFrançais(Value As Variant, NomUnité As String, NomSousMultiple As String) As String
Dim Strings As String
Dim L_Valeur As Long
Dim Millions As Long
Dim Milliers As Long
Dim Unités As Long
Dim Décimales As Long
If Millions > 0 _
Then
Strings = Strings & EcrireNombre3ChFrançais(Millions) & " million"
If Millions > 1 _
Then
Strings = Strings & "s"
End If
End If
If Milliers > 0 _
Then
If Milliers > 1 _
Then
Strings = Strings & EcrireNombre3ChFrançais(Milliers) & " mille"
Else
Strings = Strings & " mille"
End If
End If
If Unités > 0 _
Then
Strings = Strings & EcrireNombre3ChFrançais(Unités)
End If
Strings = Trim(Strings)
If Right(Strings, 7) = "million" _
Or Right(Strings, 8) = "millions" _
Then
Strings = Strings & " de"
End If
If Right(Strings, 4) = "cent" _
Or Right(Strings, 12) = "quatre vingt" _
Then
Strings = Strings & "s"
End If
If Value >= 1 _
Then
Strings = Strings & " " & NomUnité
If Value >= 2 _
Then
Strings = Strings & "s"
End If
End If
If Right(Strings, 12) = "quatre vingt" _
Then
Strings = Strings & "s"
End If
Strings = Strings & " " & NomSousMultiple
If Décimales > 1 _
Then
Strings = Strings & "s"
End If
End If
EcrireEnLettreFrançais = Strings
Exit Function
'
'
'
gesterreur:
MsgBox "Erreur conversion " & Error$()
End Function
'
'----------------------------------------------------------------------------
'
Function EcrireNombre3ChFrançais(Value As Long) As String
Dim Strings As String
Dim L_Valeur As Integer
Dim Unités As Integer
Dim Centaines As Integer
Dim Dizaines As Integer
On Error GoTo gesterreur
Strings = ""
If Value >= 1000 _
Then
MsgBox "Valeur incorrecte, " & Str(Value)
Exit Function
End If
If Centaines > 0 _
Then
If Centaines > 1 _
Then
Strings = TableUnitésFR(Centaines)
End If
Strings = Strings & " cent"
End If
Select Case Dizaines
Case 0:
Strings = Strings & TableUnitésFR(Unités)
Case 1:
Strings = Strings & TableUnitésFR(10 + Unités)
Case 2, 3, 4, 5, 6, 7:
Strings = Strings & TableDizainesFR(Dizaines)
If Unités = 1 _
Then
Strings = Strings & " et"
End If
If Dizaines = 7 _
Then
Strings = Strings & TableUnitésFR(10 + Unités)
Else
Strings = Strings & TableUnitésFR(Unités)
End If
Case 8, 9:
Strings = Strings & TableDizainesFR(Dizaines)
If Dizaines = 9 _
Then
Strings = Strings & TableUnitésFR(10 + Unités)
Else
Strings = Strings & TableUnitésFR(Unités)
End If
End Select
EcrireNombre3ChFrançais = Strings
Exit Function
'
'
'
gesterreur:
MsgBox "Erreur dans EcrireNombre3ChFrançais " & Error$()
End Function
'
'----------------------------------------------------------------------------
'
Function PremièreLettreMajuscule(Strings As String) As String
Dim Lg As Integer
Dim PremièreLettre As String
Dim Reste As String
Lg = Len(Strings)
PremièreLettre = UCase(Left(Strings, 1))
Reste = Right(Strings, Lg - 1)
PremièreLettreMajuscule = PremièreLettre & Reste
End Function
'
'----------------------------------------------------------------------------
'
Function EcrireEnLettreAllemand(Value As Variant, NomUnité As String, NomSousMultiple As String) As String
Dim Strings As String
Dim L_Valeur As Long
Dim Millions As Long
Dim Milliers As Long
Dim Unités As Long
Dim Décimales As Long
If Millions > 0 _
Then
Strings = Strings & EcrireNombre3ChAllemand(Millions) & "million"
If Millions > 1 _
Then
Strings = Strings & "en"
End If
End If
If Milliers > 0 _
Then
If Milliers > 1 _
Then
Strings = Strings & EcrireNombre3ChAllemand(Milliers) & "tausend"
Else
Strings = Strings & "tausend"
End If
End If
If Unités > 0 _
Then
Strings = Strings & EcrireNombre3ChAllemand(Unités)
End If
Strings = Trim(Strings)
If Value >= 1 _
Then
Strings = Strings & " " & NomUnité & " "
End If
End Function
'
'----------------------------------------------------------------------------
'
Function EcrireNombre3ChAllemand(Value As Long) As String
Dim Strings As String
Dim L_Valeur As Integer
Dim Unités As Integer
Dim Centaines As Integer
Dim Dizaines As Integer
On Error GoTo gesterreur
Strings = ""
If Value >= 1000 _
Then
MsgBox "Valeur incorrecte, " & Str(Value)
Exit Function
End If