Probleme avec la fonction OR

Salut , je suis nouveau sur ce forum et j'ai un petit probleme avec une fonction de VBA .

Pour faire une histoire courte .. J'ai prit un editeur de cheque anglais et je les traduit en francais mais les nombre francais et anglais ne sont pas prononcer de la meme facon. Donc avant la commande etait If Val(Left(TensText, 1)) = 1 Then et tous allais super bien . Mais maintenant avec la commande que j'ai modifier sa va bien a 95%.

Avez vous un subtitue a 1 Or 7 Or 9 ?? Merci

' Converts a number from 10 to 99 into text.

Function GetTens(TensText)

Dim Result As String

Result = "" ' Null out the temporary function value.

If Val(Left(TensText, 1)) = 1 Or 7 And 9 Then ' If value between 10-19...

Select Case Val(TensText)

Case 10: Result = "Dix"

Case 11: Result = "Onze"

Case 12: Result = "Douze"

Case 13: Result = "Treize"

Case 14: Result = "Quatorze"

Case 15: Result = "Quinze"

........

Bonjour,

Je te propose deux solutions :

Utiliser une liste Array

Dim nombre As Variant
Dim i as Byte

nombre = Array(1, 7, 9)
For i = 0 To UBound(nombre)
    If Val(Left(TensText, 1)) = nombre(i) Then
        Select case ...

        End Select
        Exit For
    End If
Next i

Si tu souhaites éviter l'Array, mettre le résultat de ton calcul dans une variable avant de la tester

Dim x as byte

x = Val(Left(TensText, 1))
If x = 1 Or x = 7 Or x = 9 Then

Merci Beaucoup j'ai essayer la deuxieme solution et cela fonction tres bien !

Une autre petite question ... avec cette fonction sur le cheque sa imprime UN CENT , DEUX CENTS .... Es-ce possible de modifier pour qu'il soit ecrit CENT seulement sans le UN devant ?

' Converts a number from 100-999 into text

Function GetHundreds(ByVal MyNumber)

Dim Result As String

If Val(MyNumber) = 0 Then Exit Function

MyNumber = Right("000" & MyNumber, 3)

' Convert the hundreds place.

If Mid(MyNumber, 1, 1) <> "0" Then

Result = GetDigit(Mid(MyNumber, 1, 1)) & " Cents "

End If

' Convert the tens and ones place.

If Mid(MyNumber, 2, 1) <> "0" Then

Result = Result & GetTens(Mid(MyNumber, 2))

Else

Result = Result & GetDigit(Mid(MyNumber, 3))

End If

GetHundreds = Result

End Function

Comme çà par exemple ?

' Convert the hundreds place.
Dim hundred As Byte

hundred = Left(MyNumber, 1)
Select Case hundred
Case 0
Case 1: Result = " Cent "
Case Else: Result = hundred & " Cents "
End Select

Oui avec une petite modif cela fonctionne tres bien voici la modif

Dim hundred As Byte

' Convert the hundreds place.

hundred = Left(MyNumber, 1)

If hundred <> "0" Then

Select Case hundred

Case 1: Result = " Cent "

Case Else: Result = GetDigit(Mid(MyNumber, 1, 1)) & " Cents "

End Select

End If

MERCI Beaucoup de votre temps et rapidité.

Mathieu

Encore le meme probleme mais avec les MILLEs maintenant . J'aimerais que un ne s'affiche pas devant MILLE .. mais devant milion et le reste oui

 Function SpellNumber(ByVal MyNumber)
          Dim Dollars, Cents, Temp
          Dim DecimalPlace, Count
          ReDim Place(9) As String
          Place(2) = " Mille "
          Place(3) = " Million "
          Place(4) = " Billion "
          Place(5) = " Trillion "
          ' String representation of amount.
          MyNumber = Trim(Str(MyNumber))
          ' Position of decimal place 0 if none.
          DecimalPlace = InStr(MyNumber, ".")
          ' Convert cents and set MyNumber to dollar amount.
          If DecimalPlace > 0 Then
              Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _
                        "00", 2))
              MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
          End If
          Count = 1
          Do While MyNumber <> ""
              Temp = GetHundreds(Right(MyNumber, 3))
              If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
              If Len(MyNumber) > 3 Then
                  MyNumber = Left(MyNumber, Len(MyNumber) - 3)
              Else
                  MyNumber = ""
              End If
              Count = Count + 1
          Loop
          Select Case Dollars
              Case ""
                  Dollars = "Zero "
              Case "One"
                  Dollars = "Un "
               Case Else
                  Dollars = Dollars & " Dollars "
          End Select
          Select Case Cents
              Case ""
                  Cents = " et zero sous"
              Case "One"
                  Cents = " et un sous"
                    Case Else
                  Cents = "et " & Cents & " sous"
          End Select
          SpellNumber = Dollars & Cents
      End Function

      ' Converts a number from 100-999 into text
      Function GetHundreds(ByVal MyNumber)
          Dim Result As String
          If Val(MyNumber) = 0 Then Exit Function
          MyNumber = Right("000" & MyNumber, 3)

          ' Convert the hundreds place.

         Dim hundred As Byte

         hundred = Left(MyNumber, 1)
          If hundred <> "0" Then
            Select Case hundred
              Case 1: Result = " Cent "
              Case Else: Result = GetDigit(Mid(MyNumber, 1, 1)) & " Cents "
            End Select
          End If

          ' Convert the tens and ones place.
          If Mid(MyNumber, 2, 1) <> "0" Then
              Result = Result & GetTens(Mid(MyNumber, 2))
          Else
              Result = Result & GetDigit(Mid(MyNumber, 3))
          End If
          GetHundreds = Result
      End Function
Rechercher des sujets similaires à "probleme fonction"