IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

convertir chiffre en lettres [AC-2007]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut convertir chiffre en lettres
    Bonjour

    j'ai créé une facture avec access 2007 ( formulaire /sous formulaire)

    donc pour le total c'est bon, mais je dois convertir ce total en lettre.

    38000 === trente huit mille



    aidez moi SVP

    merci d'avance

  2. #2
    Invité
    Invité(e)

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,
    Quoique 90 s’écrit quatre-vingt-dix et non quatre-vingts-dix


    Correction brutale : modifier la dernière instruction de la « Function Nb2Mot$(Valeur$) »

    Nb2Mot$ = Résultat$ 
    par
     
    Nb2Mot$ = Replace(Résultat$, "quatre-vingts-dix", "quatre-vingt-dix") 


    Code corrigé en annexe.

    P.-S. Chez nous, on dit « nonante » : c'est plus simple !
    Fichiers attachés Fichiers attachés

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2017
    Messages : 5
    Par défaut
    merçi bouceaup ClaudeLELOUP

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    C'est surtout Gayot que tu dois remercier : j'ai seulement corrigé une faute d'orthographe !

  6. #6
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par GAYOT Voir le message
    Bonjour Gayot
    Je me permets de solliciter ton intervention sur le code convertissant des chiffres en lettres. Je l'ai recopié dans un module, puis dans un contrôle d'un formulaire j'ai inséré la formule suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =TraduireEntier(Nomdemoncontrôle àtraduire)
    et j'ai comme résultat ceci : #nom
    Est-ce que tu pourrais m'orienter dans l'utilisation de ton code qui me paraît très génial (notamment pour les factures)
    Merci d'avance.
    Cordialement

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonjour,

    1) TraduireEntier: une Sub ne renvoie rien elle exécute un code et c'est tout, elle ne peut donc pas être utilisée en tant que fonction dans un formulaire...
    Il te faudra créer ta propre fonction pour qu'elle te renvoie un résultat.

    2) on ne peut pas non plus utiliser le nom d'un contrôle comme argument d'une fonction dans sa propre source contrôle car cela crée une référence circulaire, on ne peut le faire que sur sortie du contrôle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Moncontrole_Exit(Cancel As Integer)
    Me.Moncontrole = MafonctionTraduireEntier(Me.Moncontrole)
    End Sub

  8. #8
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Re Tee_Grandbois
    Je te remercie ( une fois de plus) de venir à mon secours. Comme tu t'en doute, je ne suis pas un expert en VBA, d'où mes erreurs.
    J'ai utilisé en fait deux contrôles le premier est la source et le deuxième affiche le résultat du code.
    J'ai pensé faire ceci en rapport à un code de calcul de durée entre deux dates.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    '                                                                                                                           CALCUL DU TEMPS ENTRE DEUX DATES
            Function AMJ(DateDebut As Date, DateFin As Date) As String
     
            Dim NbAns As Long, NbMois As Long, NbJours As Long
     
     
     
     
     
            Dim Tmp As Date
                Tmp = DateSerial(Year(DateFin), Month(DateDebut), Day(DateDebut))
                NbAns = Year(DateFin) - Year(DateDebut) + (Tmp > DateFin)
                NbMois = Month(DateFin) - Month(DateDebut) - (12 * (Tmp > DateFin))
                NbJours = Day(DateFin) - Day(DateDebut)     '  [ Date Début, Date Fin [
                If NbJours < 0 Then
                    NbMois = NbMois - 1
                    NbJours = Day(DateSerial(Year(DateFin), Month(DateFin), 0)) + NbJours
                End If
                AMJ = NbAns & " a, " & NbMois & " m  et  " & NbJours & " j"
     
     
        End Function
    Pour utiliser ce code, j'ai crée un contrôle recevant le résultat de ce code et dans ce contrôle j'ai mis la formule suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =amj([datedebut];[datefin])
    et le résultat est sous la forme 1a, 8m et 10j
    C'est pour cela que j'ai travaillé de même.
    Donc si je veux utiliser ce code je dois utiliser le code que tu fournis dans le n° 2 de ta réponse.
    Une question subsiste pour moi, car tu dis qu'il ne peut être utiliser qu'à la SORTIE du contrôle. Si c'est un contrôle calculé ou l'utilisation de ce code dans un Etat.
    Merci encore de partager ta science.
    Cordialement

  9. #9
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonjour,
    Donc si je veux utiliser ce code je dois utiliser le code que tu fournis dans le n° 2 de ta réponse.
    Une question subsiste pour moi, car tu dis qu'il ne peut être utiliser qu'à la SORTIE du contrôle.
    ce n'est pas ce que j'ai dit.
    j'ai dit:
    on ne peut pas non plus utiliser le nom d'un contrôle comme argument d'une fonction dans sa propre source contrôle car cela crée une référence circulaire, on ne peut le faire que sur sortie du contrôle:
    donc ceci est permis pour le source contrôle:

    Nom : _1.JPG
Affichages : 4982
Taille : 26,2 Ko

    mais pas cela:

    Nom : _2.JPG
Affichages : 4859
Taille : 26,7 Ko

  10. #10
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Bonjour Tee_Grandbois
    En ce qui concerne le code AMJ tout fonctionne car j'avais procédé comme tu l'as fait.
    Mais quand j'essaye de faire de même avec TraduireEntire Cf photo n° 1 (sur Etat), j'ai la fenêtre photo n° 2 qui s'ouvre me demandant la valeur de TraduireEntier.
    Je ne saisis pas toutes les nuances.
    Voyant que TraduireEntier n'est pas reconnu, j'ai essayé de passer par Fonction et ouvrant le module2 où ce trouve le code TraduireEntier, je ne le vois, par contre en module1 je retrouve bien mon AMJ. Où est le blème......

    Cordialement
    Images attachées Images attachées   

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 527
    Billets dans le blog
    67
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    1) TraduireEntier: une Sub ne renvoie rien elle exécute un code et c'est tout, elle ne peut donc pas être utilisée en tant que fonction dans un formulaire...
    Il te faudra créer ta propre fonction pour qu'elle te renvoie un résultat.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  12. #12
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Bonjour USER
    Je te remercie de me rappeler les propos de Tee_Grandbois. Personnellement je ne suis pas un expert pour savoir créer une fonction car je ne saurais pas par où commencer.
    Merci néanmoins d'avoir pris le temps de répondre.
    Cordialement
    merci

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 527
    Billets dans le blog
    67
    Par défaut
    Pas de soucis

    Si vous avez créé une sub ou procédure, normalement vous devez avoir dans votre module quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub TraduireEntier(...)
    ...
    end sub
    Il faudrait que vous postiez ce code qu'on y regarde de plus près pour voir s'il y a moyen de renvoyer quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function TraduireEntier(...) as string
    ...
    TraduireEntier="blablabla"
    end Function
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  14. #14
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Re
    Merci de ta réponse ultra rapide.
    J'ai récupéré le code sur post # 2 de Gayot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://access.developpez.com/sources/?page=Conv#ChiffresEnLettres
    https://access.developpez.com/source...ffresEnLettres
    Il y a plusieurs codes à savoir si je dois tous les mettre ou est-ce que tu vas les voir sur le lien ci-dessus.
    Sinon j'ai créé un petit bout de fichier à toutes fin utiles, pour mieux me faire comprendre.
    Cordialement

    Voici les codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
     
     
     
     
    Dim mot$(25), Résultat$, N$
    Dim Virgule, B, K$, nombre$, longueur
    Dim cdu$, C$, D$, U$, Et, Tiret
     
     
    Sub Ajoute(MotSimple$)
    '--- ajoute un nouveau terme traduit à la chaine résultat
    If Résultat$ <> "" Then
    '--- vérifie s'il est nécessaire de coller le nouveau terme au
    '--- précédent dans le cas des "S" à rajouter, ou des tirets
    If Right$(Résultat$, 1) = "-" Or _
    MotSimple$ = "s" Or MotSimple$ = "-" Then
    Résultat$ = Résultat$ + MotSimple$
    '--- sinon, ajoute le terme après un espace
    Else
    Résultat$ = Résultat$ + " " + MotSimple$
    End If
    Else
    Résultat$ = MotSimple$
    End If
    End Sub
     
     
    Function Equivalent$(Valeur)
    '--- recherche le mot équivalent à une valeur numérique
    Select Case Valeur
    Case Is < 21
    Equivalent$ = mot$(Valeur)
    Case Else
    Equivalent$ = mot$(18 + (Valeur / 10))
    End Select
    End Function
     
     
    Function Nb2Mot$(Valeur$)
    Dim a$
    '--- initialisation du tableau contenant les mots interprétés
    mot$(1) = "un"
    mot$(2) = "deux"
    mot$(3) = "trois"
    mot$(4) = "quatre"
    mot$(5) = "cinq"
    mot$(6) = "six"
    mot$(7) = "sept"
    mot$(8) = "huit"
    mot$(9) = "neuf"
    mot$(10) = "dix"
    mot$(11) = "onze"
    mot$(12) = "douze"
    mot$(13) = "treize"
    mot$(14) = "quatorze"
    mot$(15) = "quinze"
    mot$(16) = "seize"
    mot$(20) = "vingt"
    mot$(21) = "trente"
    mot$(22) = "quarante"
    mot$(23) = "cinquante"
    mot$(24) = "soixante"
    '--- récupération de paramètre passé
    a$ = Valeur$ + " "
    '--- initialisation des variables de travail
    N$ = ""
    Virgule = 0
    Résultat$ = ""
    '--- pour toute la longueur de celui-ci
    For B = 1 To Len(a$)
    '--- on extrait chacun de ses caractères
    K$ = Mid$(a$, B, 1)
    Select Case K$
    '--- gère les montants négatifs
    Case "-"
    Ajoute "moins"
    '--- si ceux-ci sont numériques, on batit la chaine n$
    Case "0" To "9"
    N$ = N$ + K$
    '--- sinon, on teste si on est arrivé à une virgule
    Case Else
    If Virgule = 1 Then
    '--- les centimes sont comptés sur 2 digits, réajustés de
    '--- manière inverse aux euros, puisqu'on lit les unités
    '--- et dizaines de manière inversée (0,2? = 20c et
    '--- 0,02?=2c)
    N$ = Right$("000" + Left$(N$ + "000", 2), 2)
    If Val(N$) = 0 Then N$ = ""
    End If
    '--- on traduit le nombre stocké dans n$
    TraduireEntier N$
    '--- puis on détermine son unité en fonction de la présence
    '--- ou non d'une virgule
    If Virgule = 0 And Val(N$) > 0 Then
    Ajoute "euro"
    '--- et on accorde l'unité avec le nombre
    If Val(N$) > 1 Then Ajoute "s"
    ElseIf Virgule = 1 And Val(N$) > 0 Then
    Ajoute "centime"
    '--- en ajoutant un "s" si nécessaire
    If Val(N$) > 1 Then Ajoute "s"
    End If
    N$ = ""
    Select Case K$
    Case Chr$(13)
    B = B + 1
    Case Is < " "
    Case ",", "."
    Virgule = 1
    '--- si une valeur en euros est exprimée, et que le
    '--- nombre de centimes est suffisant pour être traité,
    '--- on lie les 2 par le mot "et"
    If Val(a$) <> 0 And _
    Val("0." + Mid$(a$, B + 1)) >= 0.01 Then Ajoute "et"
    Case Else
    End Select
    End Select
    Next
    Nb2Mot$ = Replace(Résultat$, "quatre-vingts-dix", "quatre-vingt-dix")
     
    End Function
     
    Sub TraduireEntier(NombreATraduire$)
    '--- convertit un nombre entier contenu dans une chaine de caractères
    '--- en son équivalent ordinal
    nombre$ = NombreATraduire$
    If nombre$ <> "" Then
    '--- si le nombre est 0, on ne perd pas de temps
    If Val(nombre$) = 0 Then
    Ajoute "zéro"
    Else
    '--- sinon, on convertit celui-ci en une chaine de caractères
    '--- de longueur multiple de 3, afin de pouvoir la lire par blocs
    '--- de 3 caractères
    nombre$ = Right$("000", -((Len(nombre$) Mod 3) <> 0) * (3 - (Len(nombre$) Mod 3))) _
             + nombre$
    For longueur = Len(nombre$) To 3 Step -3
    cdu$ = Left$(nombre$, 3)
    nombre$ = Right$(nombre$, longueur - 3)
    '--- on extrait ainsi des ensembles de 3 chiffres, de la
    '--- gauche vers la droite
    If cdu$ <> "000" Then
    '--- dont on tire une valeur de centaines, dizaines et
    '--- unités
    C$ = Left$(cdu$, 1)
    D$ = Mid$(cdu$, 2, 1)
    U$ = Right$(cdu$, 1)
    '--- on convertit les unités non muettes pour les
    '--- centaines
    If C$ >= "2" Then Ajoute Equivalent$(Val(C$))
    '--- et on traite les 1 muets
    If C$ >= "1" Then
    Ajoute "cent"
    '--- en appliquant les règles d'accords pour les
    '--- centaines
    If Val(nombre$) = 0 And D$ + U$ = "00" _
    And Len(Résultat$) > 4 Then Ajoute "s"
    End If
    '--- on analyse si le mot ET est nécessaire (21, 31,
    '--- 41 ...)
    Et = (D$ >= "2") And (U$ = "1")
    '--- ainsi que les tirets pour certains couples
    '--- dizaines-unités
    Tiret = ((D$ >= "2") And (U$ > "1") _
    Or (D$ >= "1" And U$ >= "7")) And Not Et
    '--- traitement des valeurs 80-99
    If D$ >= "8" Then
    Ajoute "quatre-vingt"
    Et = 0
    '--- retenue nécessaire pour 90 à 99
    If D$ = "8" Then D$ = "0" _
    Else D$ = "1": Tiret = True
    '--- et traitement des unités
    If U$ > "0" Then Tiret = True Else Ajoute "s"
    '--- sinon on traite les valeurs 70 à 79
    ElseIf D$ = "7" Then
    Ajoute "soixante"
    '--- avec une retenue pour les dizaines
    D$ = "1"
    If U$ <> "1" Then Tiret = True
    End If
    '--- valeurs entre 10 et 16
    If (D$ = "1") And (U$ <= "6") Then
    D$ = "0"
    U$ = "1" + U$
    End If
    '--- sinon, on gère toutes les autres dizaines
    If D$ >= "1" Then
    '--- gère les tirets pour les dizaines composées
    If Tiret And D$ = "1" _
    And Val(Right$(cdu$, 2)) > 19 Then
    Ajoute "-"
    End If
    '--- traduction de la dizaine...
    Ajoute Equivalent$(Val(D$ + "0"))
    '--- en accordant l'exception des vingtaines
    If D$ + U$ = "20" And C$ <> "0" Then Ajoute "s"
    End If
    '--- si le mot Et est nécessaire, on l'ajoute
    If Et Then Ajoute "et"
    '--- ainsi que le tiret, liant une dizaine et une
    '--- unité
    If Tiret Then Ajoute "-"
    '--- puis on traduit l'unité du nombre
    If Val(U$) >= 22 Or ((Val(U$) >= 1 And (Val(cdu$) > 1 Or longueur <> 6))) Then
        Ajoute Equivalent$(Val(U$))
    End If
    '--- enfin, la pondération du nombre est respectée,
    '--- en ajoutant le multiple nécessaire, et en
    '--- l'accordant s'il le faut
    Select Case longueur
    Case 6: Ajoute "mille"
    Case 9: Ajoute "million"
    If Val(cdu$) > 1 Then Ajoute "s"
    Case 12
    Ajoute "milliard"
    If Val(cdu$) > 1 Then Ajoute "s"
    Case Else
    End Select
    End If
    Next
    End If
    End If
    End Sub

  15. #15
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir User et lmc71,
    Citation Envoyé par User Voir le message
    Pas de soucis

    Si vous avez créé une sub ou procédure, normalement vous devez avoir dans votre module quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub TraduireEntier(...)
    ...
    end sub
    Il faudrait que vous postiez ce code qu'on y regarde de plus près pour voir s'il y a moyen de renvoyer quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function TraduireEntier(...) as string
    ...
    TraduireEntier="blablabla"
    end Function
    Cdlt,
    pas si simple à modifier car le code ne renvoie pas le nombre entier en lettres.
    par contre, il est possible avec nb2Mot() d'avoir un nombre entier converti en lettres en utilisant Fix():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nb2mot(fix(MonMontant))
    et si on veut enlever le mot " euro" ou " euros":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replace(replace(nb2mot(fix(MonMontant))," euros",""),"euro","")
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?replace(replace(nb2mot(fix(1234.56))," euros",""),"euro","")
    mille deux cent trente-quatre

  16. #16
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Re Tee_GrandBois
    Effectivement avec Fix le contrôle reçois le nombre en lettres, mais n'accepte pas les décimales.
    Je crois que je vais laisser tomber car cela vous prend votre temps et personnellement je ne sais pas récupérer.
    Cordialement

  17. #17
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    Effectivement avec Fix le contrôle reçois le nombre en lettres, mais n'accepte pas les décimales.
    je croyais que tu voulais récupérer uniquement la partie entière du montant
    dans ce cas, utilises nb2mot() sans le fix() cela te donnera le montant complet !
    il suffisait de bien lire le post

  18. #18
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Re
    Un grand merci. Tout fonctionne à merveille tant dans un formulaire que dans un Etat.
    Je me suis amusé et plus exactement de comprendre tous les codes utilisés pour arriver à faire cette traduction de chiffres en lettres, c'est inouï.
    Je vous félicite.
    Merci à tout le Forum et tous les intervenants. Vous êtes super.
    Cordialement

    PS: Je n'ai pas la possibilité de mettre affaire résolu ?

  19. #19
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonjour lmc71,
    PS: Je n'ai pas la possibilité de mettre affaire résolu ?
    malheureusement non: seul l'auteur du post, rifman2015, peut le faire (mis à part, peut être, un modérateur ...)

  20. #20
    Membre éclairé

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 373
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Merci pour l'info
    En effet, ce n'est pas moi qui ai créé cette discussion.
    Bon 8 mai
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. convertir chiffre en lettre arabe
    Par infomap dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/11/2011, 17h24
  2. oracle + convertir chiffres en lettres
    Par florine dans le forum SQL
    Réponses: 60
    Dernier message: 21/07/2011, 14h52
  3. convertir chiffre en lettre arabe
    Par infomap dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/04/2011, 19h39
  4. convertir chiffre en lettre arabe
    Par DzBadBoy dans le forum Langage
    Réponses: 13
    Dernier message: 21/09/2009, 21h46
  5. [VB]Convertir chiffres en lettres
    Par RichY dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/02/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo