Programmer en vb
Bonjour et bienvenue,

vous venez de vous inscrire et vous souhaitez avoir accès aux différents forum.
il vous suffit alors de poster une présentation sur le forum "Présentation" ou divers sujets
votre accès aux autres forums sera automatiquement autorisé.

A vos claviers :

Merci d'avoir pris le temps de lire.
Merci pour votre inscription.

L'équipe de Programmer-en-VB
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Statistiques
Nous avons 120 membres enregistrésL'utilisateur enregistré le plus récent est TutoariiNos membres ont posté un total de 6300 messagesdans 706 sujets
Recherche dans les forums

Utiliser cette méthode afin de trouver rapidement les discussions disponible sur notre forum.


Utiliser le bouton résolu

Dans votre message d'origine
cliquer sur le bouton



Ensuite tout en bas sur
Modifier le titre du sujet
cliquer sur le bouton

Résolu !!!

Ensuite changer l’icône du sujet par le bouton

Voilà pas plus compliqué que cela.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Partenaires

créer un forum



Annuaire referencement


Flux RSS

MSN 
Novembre 2018
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  

Calendrier


Partagez
Aller en bas
avatar
grisan29
Modérateur
Modérateur
Localisation : BRETAGNE Nord 29
Messages : 838
Date d'inscription : 25/07/2013
http://pascalcuisines.fr

transformer les chiffres en lettres

le Sam 22 Oct - 17:09
bonjour a tous et toutes
voici un code que j'utilise avec l'autorisation de Mr Patrick Toulon
et n'hésiter pas a lui donner des votes en cliquant sur le pouce vert et aussi me remercier par la même
et si vous avez des questions le forum est la pour vous répondre au mieux Excel.application
Dont voici les une copie des codes a mettre dans un module standard et la formule a mettre dans la cellule réceptrice

Code:
Option Explicit
Sub tes2()
    Debug.Print nBlettre_methode_globale(256354.2153, "euro", True)             ' euro
    Debug.Print nBlettre_methode_globale(10000000.2153, "euro", True)           ' euro
    'ndebug.Print Blettre_methode_globale(10000000.2153, "Dirham", True)       ' dirham
    'Debug.Print nBlettre_methode_globale(10000000.2153, "dollar", True)         ' dollar
    'Debug.Print Blettre_methode_globale(1.1, "Dirham", True)                           ' dirham
   Debug.Print nBlettre_methode_globale(12563.2365)                                     ' pas de monnaie
   Debug.Print nBlettre_methode_globale(1.01)                                                ' pas de monnaie
End Sub
Function nBlettre_methode_globale(nombres As String, Optional ByVal sstr As String = "virgule", Optional ByVal finance As Boolean = False)
    Dim en_dec(2), unit1, unit10, ms, cms As Long, decs As Long, ex As Long, ddd As String, centi As String, e As Long, i As Long, a As Long, dix As Long
    Dim nombre As String, u As String, c As String, ct As String, et As String, ss As String
    unit1 = Array("", " Un", " Deux", " Trois", " Quatre", " Cinq", " Six", " Sept", " Huit", " Neuf", " Dix", " Onze", " Douze", " treize", " Quatorze", " Quinze", " Seize", " Dix-Sept", " Dix-Huit", " Dix-Neuf", " cent", " zéro")
    unit10 = Array("", " dix", " vingt", " trente", " quarante", " cinquante", " soixante", " soixante-dix", " quatre-vingt", " quatre-vingt-dix", " cent")
    ms = Array("", " sextillion", " Quintillion", " Quatrillion", " Trillion", " Billiard", " Billion", " milliard", " million", " mille", ""): cms = UBound(ms)
    decs = 0: nombres = Replace(nombres, ".", ","): en_dec(0) = Split(nombres, ",")(0): If InStr(nombres, ",") > 0 Then en_dec(1) = Split(nombres, ",")(1): decs = 1    'on separe le decimal de l'entier
    If Len(en_dec(0)) Mod 3 <> 0 Then en_dec(0) = Application.Rept("0", 3 - Len(en_dec(0)) Mod 3) & en_dec(0)    'on formate l'entier a 3 chiffre par tranche
    If decs = 1 Then en_dec(1) = Right("00" & Round(Val("0." & en_dec(1)), 2) * 100, 3)  ' NOUVELLE METHODE POUR ADAPTER LE DECIMAL on formate a 3 chiffres
    ex = cms - (Len(en_dec(0)) / 3) + 1    ' index de point de depart des expressions dans l'array ms
    ddd = IIf(Val(en_dec(0)) > 999000 And Val(Right(en_dec(0), 6)) = 0, IIf("aAeEiIoOuUyY" Like "*" & Left(sstr, 1) & "*", " d' ", " de"), " ")
    centi = IIf(sstr <> "dollar", " centime", " cent")
    sstr = IIf(Val(en_dec(0)) > 1, sstr & "s", sstr)
    If decs = 1 Then centi = IIf(Val(en_dec(1)) > 1, centi & "s", centi)
    For e = 0 To decs
        For i = 1 To Len(en_dec(e)) Step 3
            a = ex + Round(i / 3)    'position actuelle de ms
            nombre = Mid(en_dec(e), i, 3)    ' la tranche
            dix = Mid(nombre, 2, 1): u = Right(nombre, 1): c = Left(nombre, 1): If c > 1 Then c = c: ct = unit1(20) & IIf(Val(dix & u) > 0, "", "s") Else: ct = "": If c = 1 Then c = 20
            If dix = 1 Or dix = 7 Or dix = 9 And Right(u, 1) > 0 Then dix = dix - 1: u = u + 10   'on corrige le 1,7,9
            If dix > 1 And dix <> 8 And Right(u, 1) = 1 Then et = " et" Else: If dix = 0 Or u = 0 Then et = "" Else et = "-"  ' on accorde de 1 a 99
 
            If u = 0 Then If dix = 8 Then If ms(a) = " mille" Then et = "" Else et = "s"     'le s a quatre-vingt tout seul
 
            If nombre = 0 And Len(en_dec(0)) = 3 Then u = 21: dix = 0    ' le zéro si l'entier vaut 0 tout simplement
            If nombre = 0 And i <> 1 Then a = 0
            If nombre = 1 And i = 1 And a = cms - 1 Then u = 0
            If e = 0 And nombre > 1 And a < cms - 1 Then ss = "s" Else ss = ""
            nBlettre_methode_globale = nBlettre_methode_globale & Replace(unit1(c) & ct & unit10(dix) & et & unit1(u), "- ", "-") & IIf(e = 0, ms(a), "") & ss
        Next i
        If finance = False Then
            nBlettre_methode_globale = nBlettre_methode_globale & IIf(e = 0 And decs = 1, " virgule ", "")
        Else
            nBlettre_methode_globale = nBlettre_methode_globale & IIf(e = 0 And decs = 1, ddd & " " & sstr & " et ", IIf(decs = 0, " " & sstr, "")) & IIf(e = 1, centi, "")
        End If
    Next e
End Function


et la formule où vous pouvez changer la cellule réceptrice voir même si elle nommé y mettre son nom

Code:
=SI(A13=0;" ";nBlettre_methode_globale((A13);"euro";1))

essayer et vous verrez  pour l'adapter a vos besoins, et pour ceux qui n'arrive pas a l'adapter voici un fichier exemple en .xlsm

_________________
Pascal
http://vbaddict.altervista.org/Fichier_upload/grisan29/13.php

Comment mettre votre sujet en résolu.
 
Dans votre message d'origine

cliquer sur le bouton



Ensuite tout en bas sur 
Modifier le titre du sujet 
cliquer sur le bouton 

Résolu !!!

avatar
patricktoulon
Messages : 1
Date d'inscription : 23/10/2016

Re: transformer les chiffres en lettres

le Dim 23 Oct - 12:59
Bonjour Pascal

c'est bien le dernier exemple que tu a pris ?car dans les premiers il y avait des erreurs d'orthographe
avatar
AdminPVB
Admin
Admin
Localisation : France Nord 59
Messages : 2072
Date d'inscription : 24/05/2013
http://programmer-en-vb.forumactif.org

Re: transformer les chiffres en lettres

le Dim 23 Oct - 14:00
Bonjour Patricktoulon
Bienvenue sur le forum et merci pour le superbe code
A bientôt

_________________
Avatar


Bienvenue sur

Dans votre message d'origine cliquer sur le bouton

Tout en bas sur Modifier le titre du sujet cliquer sur le bouton : Résolu !!!
Changer l’icône du sujet par le bouton

Tout simplement.


Merci pour votre présence ou passage sur le site de programmer-en-vb

Celui qui croit tout connaitre, ne connait sans doute pas grand chose,chacun apporte son savoir, mais on a tous tout à apprendre ....  

study

avatar
grisan29
Modérateur
Modérateur
Localisation : BRETAGNE Nord 29
Messages : 838
Date d'inscription : 25/07/2013
http://pascalcuisines.fr

Re: transformer les chiffres en lettres

le Dim 23 Oct - 18:20
bonjour adminPVB, ParickToulon et le forum

je confirme que c'est bien le dernier code que j'ai mis dans le post
d'ailleurs je l'ai extrait du classeur que j'utilise dans lequel il fonctionne très bien

_________________
Pascal
http://vbaddict.altervista.org/Fichier_upload/grisan29/13.php

Comment mettre votre sujet en résolu.
 
Dans votre message d'origine

cliquer sur le bouton



Ensuite tout en bas sur 
Modifier le titre du sujet 
cliquer sur le bouton 

Résolu !!!

Contenu sponsorisé

Re: transformer les chiffres en lettres

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum