Error #NAME avec une Macro function

Bonjour à tous,

J'ai un ami qui a un problème sur une de ses macro mais je n'ai pas réussi à l'aider donc je partage ici:

Le probleme est le suivant: " After exporting several sheets or just one sheet to PDF the macro function "spellnumber" gets error #NAME - Important to mention that while doing the exporting Acrobat PDFMaker needs to save the file before continuing, on which i click YES to proceed getting my sheets (which we use for documents) exported to PDF. Then after closing the Excel and reopening again the function works again, but this can be very annoying. how to fix this, what is causing this? Macro's are enabled" .

Je ne peux pas partager l'excel car il comporte des infos confidentiels mais l'objectif de la formule est de convertir un montant en lettre:

Option Explicit
Function SpellNumber(ByVal MyNumber, Optional MyCurrency As String = "")
    Dim Dollars, cents, Temp
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    Place(2) = " Thousand "
    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
    Dim str_amount, str_amounts
    Dim str_cent, str_cents
    Select Case UCase(MyCurrency)
    Case "EUR"
        str_amount = "Euro"
        str_amounts = "Euros"
        str_cent = "Cent"
        str_cents = "Cents"
    Case Else:
        str_amount = "Dollar"
        str_amounts = "Dollars"
        str_cent = "Cent"
        str_cents = "Cents"
    End Select
    Select Case Dollars
    Case ""
        Dollars = "Zero " & str_amounts
    Case "One"
        Dollars = "One " & str_amount
    Case Else
        Dollars = Dollars & " " & str_amounts
    End Select
    Select Case cents
    Case ""
        cents = " and Zero " & str_cents
    Case "One"
        cents = " and One " & str_cent
    Case Else
        cents = " and " & cents & " " & str_cents
    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)) & " Hundred "
    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 = "Ten"
        Case 11: Result = "Eleven"
        Case 12: Result = "Twelve"
        Case 13: Result = "Thirteen"
        Case 14: Result = "Fourteen"
        Case 15: Result = "Fifteen"
        Case 16: Result = "Sixteen"
        Case 17: Result = "Seventeen"
        Case 18: Result = "Eighteen"
        Case 19: Result = "Nineteen"
        Case Else
        End Select
    Else ' If value between 20-99...
        Select Case Val(Left(TensText, 1))
        Case 2: Result = "Twenty "
        Case 3: Result = "Thirty "
        Case 4: Result = "Forty "
        Case 5: Result = "Fifty "
        Case 6: Result = "Sixty "
        Case 7: Result = "Seventy "
        Case 8: Result = "Eighty "
        Case 9: Result = "Ninety "
        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 = "One"
    Case 2: GetDigit = "Two"
    Case 3: GetDigit = "Three"
    Case 4: GetDigit = "Four"
    Case 5: GetDigit = "Five"
    Case 6: GetDigit = "Six"
    Case 7: GetDigit = "Seven"
    Case 8: GetDigit = "Eight"
    Case 9: GetDigit = "Nine"
    Case Else: GetDigit = ""
    End Select
End Function

Bon après-midi à tous

Bonjour BILLY walsh

Pour moi ce n'est pas ce code qui pose problème, il ne fait que transformer un nombre en texte

#NAME veut dire qu'il ne reconnait pas la fonction

Sans le code entier, cela va être compliqué

A+

Bonjour, je suis un peu dérouté par cette fonction politique ... "Macron function"

Xmenpl bien vue c'est corrigé

Hahaha merci pour votre message. Le code ci-dessus est justement le code entier...

Re,

Je demandais ça, car comment est fait l'export en PDF

Car à l'export, je n'ai pas de problème

A+

Export en PDF en cliquant sur files - > Save as PDF.

Bonjour,

Donc nous ne pourrons pas t'aider plus toi et ton ami

Je n'ai pas ce problème lorsque je le fais de mon côté, j'ai également Acrobat PDFmaker

A+

Hello Bruno,

En faite après avoir exporte en PDF, toutes les macros de mon fichier ne fonctionne plus.

Ca doit un être un problème de setting.

Merci d'avoir regarde mon probleme et bonne semaine a vous tous.

PH

Re,

Je reviens sur ce que tu nous indique ici https://forum.excel-pratique.com/s/goto/1120807
Et j'ai peur d'avoir compris

Si ton ami fait vraiment Fichier -> Enregistrer sous PDF
Ton fichier Excel n'en n'est plus un, mais est devenu un fichier PDF

Il faut faire Fichier -> Exporter -> Créer un document PDF

A+

Rechercher des sujets similaires à "error name macro function"