Speelnumber, cent et mille...

Axos -  
tontong Messages postés 2575 Date d'inscription   Statut Membre Dernière intervention   -
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. Hywalle Messages postés 290 Statut Membre 62
     
    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
  2. Raymond PENTIER Messages postés 58216 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Heu ! vous parlez bien de la version anglaise d'Excel ?
    0
  3. Axos
     
    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
  4. Raymond PENTIER Messages postés 58216 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Ah ! Parce qu'il s'agissait de code VBA ? Fallait le dire ...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Axos
     
    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
  7. tontong Messages postés 2575 Date d'inscription   Statut Membre Dernière intervention   1 064
     
    Bonjour,
    Parmi les autres macros évoquées par ériiic il y a celle de Thierry Pourtier "Nbl macros" dans le zip :
    http://excel.veriti.net/modules/TDMDownloads/singlefile.php?lid=20

    Pour moi, avec un niveau Vba au ras des pâquerettes, j'ai trouvé le code "accessible" pour des adaptations et corrections orthographiques.
    0