Partager via

Changer devise sur une formule de changement de chiffre en lettre

Anonyme
2021-01-07T17:54:20+00:00

bonjour ou bonsoir,

j ai trouvé la formule de conversion de chiffre en lettre sur une facture, mais le problème reste dans la devise elle me sort soit l euro ou le dollar. alors que moi, je cherche le dirham marocain. j ai beau cherché et je n ai pas trouvé la méthode pour y accéder.

svp si vous avez la réponse je vous en suis très reconnaissant.

et merci d avance

cordialement

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

8 réponses

  1. DanielCo 107.7K Points de réputation
    2021-01-11T13:32:31+00:00

    Bonjour,

    On va faire autrement. Clique sur le lien ci-dessous et enregistre le fichier sur ton ordi.

    Dans Excel, clique sur l'onglet développeur, Compléments et désactive "Nblettre". Valide.

    Ouvre dans Excel le fichier que tu viens de mettre sur ton ordi. Clique sur "Enregistrer sous". Ne change pas le nom. Dans le type, indique "Macro complémentaire Excel (*.xlam)". Conserve le chemin indiqué.

    Clique sur l'onglet développeur, Compléments et Coche "Nblettredrm". Valide.

    Daniel

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2021-01-10T16:53:17+00:00

    C'est ce que je voulais savoir. Voici le code modifié. Si tu ne sais pas le mettre en place, dis-le moi. :

    Public Function ConvNumberLetter(Nombre As Double, Optional Devise As Byte = 0, _

                                        Optional Langue As Byte = 0) As String

        Dim dblEnt As Variant, byDec As Byte

        Dim bNegatif As Boolean

        Dim strDev As String, strCentimes As String

        If Nombre < 0 Then

            bNegatif = True

            Nombre = Abs(Nombre)

        End If

        dblEnt = Int(Nombre)

        byDec = CInt((Nombre - dblEnt) * 100)

        If byDec = 0 Then

            If dblEnt > 999999999999999# Then

                ConvNumberLetter = "#TropGrand"

                Exit Function

            End If

        Else

            If dblEnt > 9999999999999.99 Then

                ConvNumberLetter = "#TropGrand"

                Exit Function

            End If

        End If

        Select Case Devise

            Case 0

                If byDec > 0 Then strDev = " virgule"

            Case 1

                strDev = " Euro"

                If byDec > 0 Then strCentimes = strCentimes & " Cents"

            Case 2

                strDev = " Dollar"

                If byDec > 0 Then strCentimes = strCentimes & " Cent"

            Case 3

                strDev = " dirham"

                If byDec > 0 Then strCentimes = strCentimes & " centimes"

        End Select

        If dblEnt > 1 And Devise <> 0 Then strDev = strDev & "s"

        ConvNumberLetter = UCase(ConvNumEnt(CDbl(dblEnt), Langue) & strDev & " " & _

            ConvNumDizaine(byDec, Langue) & strCentimes)

    End Function

    Private Function ConvNumEnt(Nombre As Double, Langue As Byte)

        Dim byNum As Byte, iTmp As Variant, dblReste As Double

        Dim strTmp As String

        iTmp = Nombre - (Int(Nombre / 1000) * 1000)

        ConvNumEnt = ConvNumCent(CInt(iTmp), Langue)

        dblReste = Int(Nombre / 1000)

        iTmp = dblReste - (Int(dblReste / 1000) * 1000)

        strTmp = ConvNumCent(CInt(iTmp), Langue)

        Select Case iTmp

            Case 0

            Case 1

                strTmp = "mille "

            Case Else

                strTmp = strTmp & " mille "

        End Select

        ConvNumEnt = strTmp & ConvNumEnt

        dblReste = Int(dblReste / 1000)

        iTmp = dblReste - (Int(dblReste / 1000) * 1000)

        strTmp = ConvNumCent(CInt(iTmp), Langue)

        Select Case iTmp

            Case 0

            Case 1

                strTmp = strTmp & " million "

            Case Else

                strTmp = strTmp & " millions "

        End Select

        ConvNumEnt = strTmp & ConvNumEnt

        dblReste = Int(dblReste / 1000)

        iTmp = dblReste - (Int(dblReste / 1000) * 1000)

        strTmp = ConvNumCent(CInt(iTmp), Langue)

        Select Case iTmp

            Case 0

            Case 1

                strTmp = strTmp & " milliard "

            Case Else

                strTmp = strTmp & " milliards "

        End Select

        ConvNumEnt = strTmp & ConvNumEnt

        dblReste = Int(dblReste / 1000)

        iTmp = dblReste - (Int(dblReste / 1000) * 1000)

        strTmp = ConvNumCent(CInt(iTmp), Langue)

        Select Case iTmp

            Case 0

            Case 1

                strTmp = strTmp & " billion "

            Case Else

                strTmp = strTmp & " billions "

        End Select

        ConvNumEnt = strTmp & ConvNumEnt

    End Function

    Private Function ConvNumDizaine(Nombre As Byte, Langue As Byte) As String

        Dim TabUnit As Variant, TabDiz As Variant

        Dim byUnit As Byte, byDiz As Byte

        Dim strLiaison As String

        TabUnit = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _

            "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", _

            "seize", "dix-sept", "dix-huit", "dix-neuf")

        TabDiz = Array("", "", "vingt", "trente", "quarante", "cinquante", _

            "soixante", "soixante", "quatre-vingt", "quatre-vingt")

        If Langue = 1 Then

            TabDiz(7) = "septante"

            TabDiz(9) = "nonante"

        ElseIf Langue = 2 Then

            TabDiz(7) = "septante"

            TabDiz(8) = "huitante"

            TabDiz(9) = "nonante"

        End If

        byDiz = Int(Nombre / 10)

        byUnit = Nombre - (byDiz * 10)

        strLiaison = "-"

        If byUnit = 1 Then strLiaison = " et "

        Select Case byDiz

            Case 0

                strLiaison = ""

            Case 1

                byUnit = byUnit + 10

                strLiaison = ""

            Case 7

                If Langue = 0 Then byUnit = byUnit + 10

            Case 8

                If Langue <> 2 Then strLiaison = "-"

            Case 9

                If Langue = 0 Then

                    byUnit = byUnit + 10

                    strLiaison = "-"

                End If

        End Select

        ConvNumDizaine = TabDiz(byDiz)

        If byDiz = 8 And Langue <> 2 And byUnit = 0 Then ConvNumDizaine = ConvNumDizaine & "s"

        If TabUnit(byUnit) <> "" Then

            ConvNumDizaine = ConvNumDizaine & strLiaison & TabUnit(byUnit)

        Else

            ConvNumDizaine = ConvNumDizaine

        End If

    End Function

    Private Function ConvNumCent(Nombre As Integer, Langue As Byte) As String

        Dim TabUnit As Variant

        Dim byCent As Byte, byReste As Byte

        Dim strReste As String

        TabUnit = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _

            "huit", "neuf", "dix")

        byCent = Int(Nombre / 100)

        byReste = Nombre - (byCent * 100)

        strReste = ConvNumDizaine(byReste, Langue)

        Select Case byCent

            Case 0

                ConvNumCent = strReste

            Case 1

                If byReste = 0 Then

                    ConvNumCent = "cent"

                Else

                    ConvNumCent = "cent " & strReste

                End If

            Case Else

                If byReste = 0 Then

                    ConvNumCent = TabUnit(byCent) & " cents"

                Else

                    ConvNumCent = TabUnit(byCent) & " cent " & strReste

                End If

        End Select

    End Function

    Daniel

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire
  3. Anonyme
    2021-01-10T16:35:57+00:00

    Rebonjour,

    Je suis désolé, mais malheureusement je n ai pas compris votre 1 ère question du division du dirhams.

    Pour la majuscule oui.

    par  exemple, je veux que le montant de ma facture soit comme ceci:

    235,67 DHS

    DEUX CENT TRENTE CINQ DIRHAMS ET SOIXANTE SEPT CENTIMES.

     Merci pour votre collaboration 

    NABIL

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire
  4. Anonyme
    2021-01-10T13:09:25+00:00

    Bonjour,

    merci pour votre intérêt .

    j utilise une macro complémentaire (ConvNumberLettre) .

    le problème reste dans la devise, il me sort tout le temps soit l euro ou le dollar , alors ce qu' il me faut c est le dirham marocain que je  arrive pas à l introduire dans le montant.

    merci d avance de votre collaboration.

    salutations

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2021-01-07T18:17:12+00:00

    Bonjour,

    Qu'est-ce que tu utilises pour la conversion ? Une formule Excel ou une macro complémentaire ?

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire