Speelnumber, cent et mille...

Bonjour,

Dans l'utilisation de la fonction speelnumber, j'ai ce type de problème :
- lorsque je tape 100,00 €, la fonction me convertit le chiffre comme suit : UN CENT EUROS.
- pour 1000,00 €, ça me donne ce résultat : UN MILLE EUROS.

Comment faire pour ne pas avoir ce un avant mille et cent?

D'avance merci de vos réponses.

Axos.

7 réponses

  1. Oui, c'est du code VBA tel que diffusé par Microsoft sur son site. :)

    Qui plus est, en ce qui me concerne, il s'agit d'utiliser cette fonction dans le cadre de facturations, donc avec comme unités l'Euro et les centimes qui vont avec.
    0
    1. Contributeur
      Ah ! Parce qu'il s'agissait de code VBA ? Fallait le dire ...
      0
      1. Oui, la fonction speelnumber que j'utilise est celle proposée par Microsoft sur son site.

        Je vous copie ci-dessous le code que j'ai mis à jour :

        Option Explicit
        'Main Function
        Function SpellNumber(ByVal MyNumber)
        Dim Dollars, Cents, Temp
        Dim DecimalPlace, Count
        ReDim Place(9) As String
        Place(2) = " MILLE "
        Place(3) = " MILLION "
        Place(4) = " MILLIARD "
        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 EURO"
        Case "One"
        Dollars = "UN EURO"
        Case Else
        Dollars = Dollars & " EUROS"
        End Select
        Select Case Cents
        Case ""
        Cents = " ET ZERO CENTIME"
        Case "One"
        Cents = " ET UN CENTIME"
        Case Else
        Cents = " ET " & Cents & " CENTIMES"
        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.
        If Mid(MyNumber, 1, 1) <> "0" Then
        Result = GetDigit(Mid(MyNumber, 1, 1)) & " CENT "
        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

        ' 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 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"
        Case 16: Result = "SEIZE"
        Case 17: Result = "DIX SEPT"
        Case 18: Result = "DIX HUIT"
        Case 19: Result = "DIX NEUF"
        Case Else
        End Select
        Else ' If value between 20-99...
        Select Case Val(Left(TensText, 1))
        Case 2: Result = "VINGT "
        Case 3: Result = "TRENTE "
        Case 4: Result = "QUARANTE "
        Case 5: Result = "CINQUANTE "
        Case 6: Result = "SOIXANTE "
        Case 7: Result = "SOIXANTE DIX "
        Case 8: Result = "QUATRE VINGT "
        Case 9: Result = "QUATRE VINGT DIX "
        Case Else
        End Select
        Result = Result & GetDigit _
        (Right(TensText, 1)) ' Retrieve ones place.
        End If
        GetTens = Result
        End Function

        ' Converts a number from 1 to 9 into text.
        Function GetDigit(Digit)
        Select Case Val(Digit)
        Case 1: GetDigit = "UN"
        Case 2: GetDigit = "DEUX"
        Case 3: GetDigit = "TROIS"
        Case 4: GetDigit = "QUATRE"
        Case 5: GetDigit = "CINQ"
        Case 6: GetDigit = "SIX"
        Case 7: GetDigit = "SEPT"
        Case 8: GetDigit = "HUIT"
        Case 9: GetDigit = "NEUF"
        Case Else: GetDigit = ""
        End Select
        End Function

        Merci de m'expliquer comment remédier dans le code à mon problème.

        Axos.
        0
        1. Contributeur
          Heu ! vous parlez bien de la version anglaise d'Excel ?
          0
          1. Vous avez bien entrez : =SpellNumber(A1)

            Ou alors

            =SpellNumber(100,00)

            Sinon essayé :

            Vous pouvez utiliser la commande Coller une fonction pour entrer une fonction personnalisée dans une feuille de calcul.

            Pour utiliser Coller une fonction, procédez comme suit :
            Sélectionnez la cellule souhaitée.
            Cliquez sur Coller une fonction dans la barre d'outils Standard.
            Sous Catégorie de fonctions, cliquez sur Personnalisé.
            Sous Nom de la fonction, cliquez sur SpellNumber, puis sur OK.
            Entrez le nombre ou la référence de cellule que vous souhaitez, puis cliquez sur OK.
            Cliquez sur Terminer.
            0