Ceci est la version Vb du code présenté au post précédent.
Voici un code que je souhaitais partager de puis bien longtemps: il se charge d' opérer la conversion d'un montant représenté par un entier vers sa représentation en toutes lettres.
''' <summary> ''' Convertion d'un montant en toutes lettres ''' </summary> ''' <param name="value"></param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function Int2Lettres(ByVal value As Int32) As String 'en cas de besoin pour vérifier l'orthographe 'http://orthonet.sdv.fr/pages/lex_nombres.html Dim division As Int32 Dim reste As Int32 Dim sb As StringBuilder Try 'Test l'état null If value = 0 Then Return "zéro" 'Décomposition de la valeur en milliards, millions, milliers,... sb = New StringBuilder() 'milliard division = Math.DivRem(value, 1000000000, reste) If division > 0 Then Int2LettresBloc(sb, division) sb.Append(" milliard") If (division > 1) Then sb.Append("s") End If If (reste > 0) Then 'million value = reste division = Math.DivRem(value, 1000000, reste) If (division > 0) Then If (sb.Length > 0) Then sb.Append(" ") Int2LettresBloc(sb, division) sb.Append(" million") If (division > 1) Then sb.Append("s") End If If (reste > 0) Then 'milliers value = reste division = Math.DivRem(value, 1000, reste) If (division > 0) Then If (sb.Length > 0) Then sb.Append(" ") If (division = 1) Then sb.Append("mille") Else Int2LettresBloc(sb, division) sb.Append(" mille") End If End If If (reste > 0) Then 'reste If (sb.Length > 0) Then sb.Append(" ") Int2LettresBloc(sb, reste) End If End If End If Return sb.ToString() Catch ex As Exception Debug.WriteLine(ex.Message) Return String.Empty Finally sb = Nothing End Try End Function ''' <summary> ''' Retourne la conversion d'un bloc de 3 bloc ''' </summary> ''' <param name="sb"></param> ''' <param name="value"></param> ''' <remarks></remarks> Private Shared Sub Int2LettresBloc(ByVal sb As StringBuilder, ByVal value As Int32) Dim b_centaines As Boolean Dim division As Int32 Dim reste As Int32 Try division = Math.DivRem(value, 100, reste) 'Test si des centaines sont présentes If (division > 0) Then 'ajout des centaines à la sortie Select Case division Case 1 sb.Append("cent") Case Else Int2LettresBase(sb, division) sb.Append(" cent") End Select b_centaines = True Else b_centaines = False End If 'Test si il reste des éléments apres les centaines If (reste > 0) Then 'Introduction d'un espace si on a intégré des centaines If (b_centaines) Then sb.Append(" ") 'Calcul des dixaines et de leurs reste value = reste division = Math.DivRem(value, 10, reste) Select Case division Case 0, 1, 7, 9 Int2LettresBase(sb, value) Case Else Int2LettresBase(sb, division * 10) If (reste > 0) Then If (reste = 1) Then sb.Append(" et un") Else sb.Append("-") Int2LettresBase(sb, reste) End If End If End Select End If Catch ex As Exception Debug.WriteLine(ex.Message) End Try End Sub Private Shared Sub Int2LettresBase(ByVal sb As StringBuilder, ByVal value As Int32) Select Case value Case 0 : sb.Append("zéro") Case 1 : sb.Append("un") Case 2 : sb.Append("deux") Case 3 : sb.Append("trois") Case 4 : sb.Append("quatre") Case 5 : sb.Append("cinq") Case 6 : sb.Append("six") Case 7 : sb.Append("sept") Case 8 : sb.Append("huit") Case 9 : sb.Append("neuf") Case 10 : sb.Append("dix") Case 11 : sb.Append("onze") Case 12 : sb.Append("douze") Case 13 : sb.Append("treize") Case 14 : sb.Append("quatorze") Case 15 : sb.Append("quinze") Case 16 : sb.Append("seize") Case 17 : sb.Append("dix-sept") Case 18 : sb.Append("dix-huit") Case 19 : sb.Append("dix-neuf") Case 20 : sb.Append("vingt") Case 30 : sb.Append("trente") Case 40 : sb.Append("quarante") Case 50 : sb.Append("cinquante") Case 60 : sb.Append("soixante") Case 70 : sb.Append("soixante-dix") Case 71 : sb.Append("soixante et onze") Case 72 : sb.Append("soixante-douze") Case 73 : sb.Append("soixante-treize") Case 74 : sb.Append("soixante-quatorze") Case 75 : sb.Append("soixante-quinze") Case 76 : sb.Append("soixante-seize") Case 77 : sb.Append("soixante-dix-sept") Case 78 : sb.Append("soixante-dix-huit") Case 79 : sb.Append("soixante-dix-neuf") Case 80 : sb.Append("quatre-vingt") Case 90 : sb.Append("quatre-vingt-dix") Case 91 : sb.Append("quatre-vingt-onze") Case 92 : sb.Append("quatre-vingt-douze") Case 93 : sb.Append("quatre-vingt-treize") Case 94 : sb.Append("quatre-vingt-quatorze") Case 95 : sb.Append("quatre-vingt-quinze") Case 96 : sb.Append("quatre-vingt-seize") Case 97 : sb.Append("quatre-vingt-dix-sept") Case 98 : sb.Append("quatre-vingt-dix-huit") Case 99 : sb.Append("quatre-vingt-dix-neuf") Case 100 : sb.Append("cent") Case Else 'RAS End Select End Sub