XL 2013 nombres en lettre projet formule ( sans vba)

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
je lance un projet pour le fun
créer une formule nombre en lettre( donc sans vba)

cahier des charges:
  1. pas de cellule intermédiaire
  2. utilisation de name accepté
  3. compatible 2007 à 2021
donc pour démarrer
il faudrait trouver deux formules utilisables dans un name pour sequencer le nombre entier et ses decimales par tranche de 3 chiffres
 

patricktoulon

XLDnaute Barbatruc
bon j'ai trouvé ma formule pour faire ma matrice de nombre à trois chiffre avec filtre .xml

la formule qui pourrait s'aparenter a sequence
dans un name nommé "Entier"
VB:
=FILTRE.XML("<a><b>"&SUBSTITUE(TEXTE(ENT(Feuil1!$A1);REPT(" 000";NBCAR(Feuil1!$A1)/3));" ";"</b><b>")&"</b></a>";"//b[.*0=0]")

j'arrive à exploiter correctement exemple
la formule =index(entier,indexitem))
Code:
=INDEX(entier;COLONNE(A1))
en etrant vers la droite j'ai bien mes segments de la chaine

je me demande plutot que d'avoir en dur "$A1" dans la formule il serait possible de lui envoyer la cellule ou la valeur en argument

des idées ?
 

Gégé-45550

XLDnaute Accro
bon j'ai trouvé ma formule pour faire ma matrice de nombre à trois chiffre avec filtre .xml

la formule qui pourrait s'aparenter a sequence
dans un name nommé "Entier"
VB:
=FILTRE.XML("<a><b>"&SUBSTITUE(TEXTE(ENT(Feuil1!$A1);REPT(" 000";NBCAR(Feuil1!$A1)/3));" ";"</b><b>")&"</b></a>";"//b[.*0=0]")

j'arrive à exploiter correctement exemple
la formule =index(entier,indexitem))
Code:
=INDEX(entier;COLONNE(A1))
en etrant vers la droite j'ai bien mes segments de la chaine

je me demande plutot que d'avoir en dur "$A1" dans la formule il serait possible de lui envoyer la cellule ou la valeur en argument

des idées ?
Bonsoir patricktoulon,
Ça, ça marche si on met A1 en D2 (par exemple)
VB:
=FILTRE.XML("<a><b>"&SUBSTITUE(TEXTE(ENT(INDIRECT(D2));REPT(" 000";NBCAR(INDIRECT(D2))/3));" ";"</b><b>")&"</b></a>";"//b[.*0=0]")
mais je ne suis pas sûr que ça fasse beaucoup avancer le schmilblick !
Amicalement,
 

laurent950

XLDnaute Accro
Bonjour @patricktoulon

Je viens de trouver un exemple :

Voila patrick ici

ici a la fin il y a un fichier avec pleins de formule
https://1drv.ms/x/s!At0QLxFdnuy-gUqZZ_1UkUY3OyqF?e=cYxWYQ

il y a un fichier excel avec différente formule
Cela fonctionne avec Excel (sans Word bien sur)
VB:
=NOMPROPRE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SI(NBCAR(ENT(A1))<=2;RECHERCHEV(STXT(ENT(A1);1;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A1))=3;RECHERCHEV(GAUCHE(ENT(A1);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A1);2;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A1))=4;RECHERCHEV(GAUCHE(ENT(A1);1)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A1);2;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A1);3;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A1))=5;RECHERCHEV(GAUCHE(ENT(A1);2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A1);3;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A1);4;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A1))=6;RECHERCHEV(GAUCHE(ENT(A1);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A1);2;2)*1;chiffre_100;2;0)&" mille  "&RECHERCHEV(STXT(ENT(A1);4;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A1);5;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A1))=7;RECHERCHEV(GAUCHE(ENT(A1);1)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A1);2;1)*1;chiffre_100;2;0)&" cent  "&RECHERCHEV(STXT(ENT(A1);3;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A1);5;1)*1;chiffre_100;2;0)&" cent "&"  "&RECHERCHEV(STXT(ENT(A1);6;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A1))=8;RECHERCHEV(GAUCHE(ENT(A1);2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A1);3;1)*1;chiffre_100;2;0)&" cent  "&RECHERCHEV(STXT(ENT(A1);4;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A1);6;1)*1;chiffre_100;2;0)&" cent "&"  "&RECHERCHEV(STXT(ENT(A1);7;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A1))=9;RECHERCHEV(GAUCHE(ENT(A1);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A1);2;2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A1);4;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A1);5;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A1);7;1)*1;chiffre_100;2;0))&" cent "&RECHERCHEV(STXT(ENT(A1);8;2)*1;chiffre_100;2;0))))))));"zero cent ";);"un cent ";"cent ");"Zero mille";);"Zero";"");"un mille ";" mille ");"zero";);"un milions ";" un million ");"  mille ";" ")&" virgule "&RECHERCHEV(SIERREUR(STXT(A1+0,001;TROUVE(",";A1+0,001)+1;2)*1;0);chiffre_100;2;0))
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonsoir @Gégé-45550
Ça, ça marche si on met A1 en D2 (par exemple)
VB:
=FILTRE.XML("<a><b>"&SUBSTITUE(TEXTE(ENT(INDIRECT(D2));REPT(" 000";NBCAR(INDIRECT(D2))/3));" ";"</b><b>")&"</b></a>";"//b[.*0=0]")
mais je ne suis pas sûr que ça fasse beaucoup avancer le schmilblick !
Amicalement,
ben non je le fait dans le name justement pour diminuer les formules dans les cellules

@laurent950 je connais
avec wordla même chose en vba
VB:
'******************************************************************************************
'basé sur l'exemple de Staple1660 (Exceldownload) version date 19/05/2012
'https://www.excel-downloads.com/threads/xl-oleobject-word-par-vba-piloter-champs.184716/
'patricktoulon upgrade et "épurage";transformation en fonction  version date 23/03/2020
'******************************************************************************************
Function CHIFFRES_LETTRES(num$)
    Dim oWS As Worksheet, oOLEWd As OLEObject, et$, euro$
    'Dim Cts ,oWD As Document!!!!!!?????????
    Dim Cts, oWD As Object   '!!!!!! ne fonctionne pas en latebinding (sans référence activé)
    ' Dans VBE, Menu: Outils/Références:cochez: Microsoft Word XX.0 Object Library )!!!!!!!!!!!!!!!
     Set ID = ThisWorkbook.VBProject.References
    On Error Resume Next
    ID.AddFromGuid "{00020905-0000-0000-C000-000000000046}", 1, 1 ', 8, 4
    Err.Clear
    
re:
  Cts = Split(Replace(num, ".", ","), ",")
    euro = "EURO"
    If Val(Cts(0)) > 999999 And Val(Cts(0)) Mod 10 = 0 Then euro = "d'" & euro 'inutile on y arrive pas avec cet object
    If Val(Cts(0)) > 1 Then euro = euro & "s"
    If UBound(Cts) = 1 Then et = " et " Else et = ""
    Application.ScreenUpdating = False
    Set oWS = ActiveSheet
    With oWS.OLEObjects.Add(ClassType:="Word.Document.8", Link:=False, DisplayAsIcon:=False)
        .Object.Fields.Add Range:=.Object.Range, Type:=wdFieldQuote, Text:="=" & Cts(0) & "\*CARDTEXT"
        .Object.Range.Characters(Len(.Object.Range.Text)).InsertAfter " " & euro & et  'Eureka !
        If UBound(Cts) = 1 Then 'si decimales
            .Object.Fields.Add Range:=.Object.Range.Characters(Len(.Object.Range.Text)), Type:=wdFieldQuote, Text:="=" & Cts(1) & "\*CARDTEXT"
            .Object.Range.Characters(Len(.Object.Range.Text)).InsertAfter " CENTIMES."    'Alleluia !!!
        End If
        .Object.Fields.Update
        If UCase(.Object.Range.Text) Like "*EUROS ET  CENTIMES." Then GoTo re
        CHIFFRES_LETTRES = UCase(.Object.Range.Text)
        If Not .Object.Parent Is Nothing Then .Delete    'supression de l'oleobject word
    End With
End Function

Sub test()
    num$ = InputBox("Saisir un montant:" & Chr(13) & "Ex: 123,89", "Saisie", "999999.45")
    MsgBox CHIFFRES_LETTRES(num)
End Sub
le problème c'est qu'avec un objet word on est limité a 999 999
 

dysorthographie

XLDnaute Accro
Bonsoir
,je me suis aidé de ça
VB:
'********************************************************************************
'                      NOMBRE EN LETTRE version Francaise                       *
'auteur: patricktoulon sur exceldownload                                        *
'version 1.0 à 6.3 supprimées                                                   *
'version 7.0                                                                    *
'Date version 15 novembre 2020------------------------                          *
'refonte complete du moteur de convertion (simplifié dans un select case)       *
'Ajout  du moteur d'association a une mesure(monnaie ou autre)                  *
'merge des modeles nombre et monnaie en une seule fonction                      *
'sans association ou monnaie ou mesure concernée 3 chiffres après la virgule    *
'on va toujours jusqu'a 999 deciliards (9999.....) EN STRING!!!!!               *
'on va jusqu'au billion en formule et en long en VBA                            *
'because vba et excel abrege les nombre au delas!!!!                            *
 

Pièces jointes

  • NombreLettre.xlsx
    542.3 KB · Affichages: 17

laurent950

XLDnaute Accro
Bonsoir @patricktoulon

est ce que quelqu'un sait si il est possible d'nvoyer un argument a une formule dans un name?

Cible = Cellule nommée
Ont peut remplacer Cible Par "A1"

voici la formule ci-dessous.

VB:
=SI(ENT(Cible)=0;"ZERO ";SI(MOD(ENT(Cible/10^9);1000)>99;CHOISIR(MOD(ENT(Cible/10^9);1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(MOD(ENT(Cible/10^9);1000)>100;SI(MOD(MOD(ENT(Cible/10^9);1000);100)=0;"S";" "););)&CHOISIR(MOD(MOD(ENT(Cible/10^9);1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(MOD(ENT(Cible/10^9);1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(MOD(ENT(Cible/10^9);1000);100)<20;;SI(ET(OU(MOD(MOD(ENT(Cible/10^9);1000);10)<>0;MOD(MOD(ENT(Cible/10^9);1000);100)=70;MOD(MOD(ENT(Cible/10^9);1000);100)=90));SI(ET(MOD(MOD(ENT(Cible/10^9);1000);10)=1;MOD(MOD(ENT(Cible/10^9);1000);100)<80);" ET ";"-");))&CHOISIR(MOD(MOD(ENT(Cible/10^9);1000);100)-CHOISIR(MOD(MOD(ENT(Cible/10^9);1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&SI(MOD(ENT(Cible/10^9);1000)>0;" MILLIARD"&SI(MOD(ENT(Cible/10^9);1000)>1;"S";);)&SI(Cible>10^9;" ";)&SI(MOD(ENT(Cible/10^6);1000)>99;CHOISIR(MOD(ENT(Cible/10^6);1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(MOD(ENT(Cible/10^6);1000)>100;SI(MOD(MOD(ENT(Cible/10^6);1000);100)=0;"S";" "););)&CHOISIR(MOD(MOD(ENT(Cible/10^6);1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(MOD(ENT(Cible/10^6);1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(MOD(ENT(Cible/10^6);1000);100)<20;;SI(ET(OU(MOD(MOD(ENT(Cible/10^6);1000);10)<>0;MOD(MOD(ENT(Cible/10^6);1000);100)=70;MOD(MOD(ENT(Cible/10^6);1000);100)=90));SI(ET(MOD(MOD(ENT(Cible/10^6);1000);10)=1;MOD(MOD(ENT(Cible/10^6);1000);100)<80);" ET ";"-");))&CHOISIR(MOD(MOD(ENT(Cible/10^6);1000);100)-CHOISIR(MOD(MOD(ENT(Cible/10^6);1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&SI(MOD(ENT(Cible/10^6);1000)>0;" MILLION"&SI(MOD(ENT(Cible/10^6);1000)>1;"S";);)&SI(Cible>10^6;" ";)&SI(MOD(ENT(Cible/10^3);1000)>1;SI(MOD(ENT(Cible/10^3);1000)>99;CHOISIR(MOD(ENT(Cible/10^3);1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(MOD(ENT(Cible/10^3);1000)>100;SI(MOD(MOD(ENT(Cible/10^3);1000);100)=0;"S";" "););)&CHOISIR(MOD(MOD(ENT(Cible/10^3);1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(MOD(ENT(Cible/10^3);1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(MOD(ENT(Cible/10^3);1000);100)<20;;SI(ET(OU(MOD(MOD(ENT(Cible/10^3);1000);10)<>0;MOD(MOD(ENT(Cible/10^3);1000);100)=70;MOD(MOD(ENT(Cible/10^3);1000);100)=90));SI(ET(MOD(MOD(ENT(Cible/10^3);1000);10)=1;MOD(MOD(ENT(Cible/10^3);1000);100)<80);" ET ";"-");))&CHOISIR(MOD(MOD(ENT(Cible/10^3);1000);100)-CHOISIR(MOD(MOD(ENT(Cible/10^3);1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&" MILLE";SI(MOD(ENT(Cible/10^3);1000)=1;"MILLE";))&SI(Cible>10^3;" ";))&SI(ENT(Cible-ENT(Cible/1000)*1000)>0;SI(ENT(Cible-ENT(Cible/1000)*1000)>99;CHOISIR(ENT(Cible-ENT(Cible/1000)*1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(ENT(Cible-ENT(Cible/1000)*1000)>100;SI(MOD(ENT(Cible-ENT(Cible/1000)*1000);100)=0;"S";" "););)&CHOISIR(MOD(ENT(Cible-ENT(Cible/1000)*1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(ENT(Cible-ENT(Cible/1000)*1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(ENT(Cible-ENT(Cible/1000)*1000);100)<20;;SI(ET(OU(MOD(ENT(Cible-ENT(Cible/1000)*1000);10)<>0;MOD(ENT(Cible-ENT(Cible/1000)*1000);100)=70;MOD(ENT(Cible-ENT(Cible/1000)*1000);100)=90));SI(ET(MOD(ENT(Cible-ENT(Cible/1000)*1000);10)=1;MOD(ENT(Cible-ENT(Cible/1000)*1000);100)<80);" ET ";"-");))&CHOISIR(MOD(ENT(Cible-ENT(Cible/1000)*1000);100)-CHOISIR(MOD(ENT(Cible-ENT(Cible/1000)*1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF");)&SI(ENT(ENT(Cible-ENT(Cible/1000)*1000))>0;" ";)&"EURO"&SI(ENT(Cible)>1;"S";)&SI(ARRONDI((Cible-ENT(Cible))*100;2)>0;" "&SI(ARRONDI((Cible-ENT(Cible))*100;2)>99;CHOISIR(ARRONDI((Cible-ENT(Cible))*100;2)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(ARRONDI((Cible-ENT(Cible))*100;2)>100;SI(MOD(ARRONDI((Cible-ENT(Cible))*100;2);100)=0;"S";" "););)&CHOISIR(MOD(ARRONDI((Cible-ENT(Cible))*100;2)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(ARRONDI((Cible-ENT(Cible))*100;2);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(ARRONDI((Cible-ENT(Cible))*100;2);100)<20;;SI(ET(OU(MOD(ARRONDI((Cible-ENT(Cible))*100;2);10)<>0;MOD(ARRONDI((Cible-ENT(Cible))*100;2);100)=70;MOD(ARRONDI((Cible-ENT(Cible))*100;2);100)=90));SI(ET(MOD(ARRONDI((Cible-ENT(Cible))*100;2);10)=1;MOD(ARRONDI((Cible-ENT(Cible))*100;2);100)<80);" ET ";"-");))&CHOISIR(MOD(ARRONDI((Cible-ENT(Cible))*100;2);100)-CHOISIR(MOD(ARRONDI((Cible-ENT(Cible))*100;2)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&" CENTIME"&SI(ARRONDI((Cible-ENT(Cible))*100;2)>1;"S";);)
 

patricktoulon

XLDnaute Barbatruc
Bonsoir Laurent
non tu n'a pas compris c'est l'inverse
j'ai un name avec une formule
par exemple le name s'appelle "toto"
dans son referts je met =A1+5
dans b1 je met =toto

je voudrais faire en B1 " = toto(A1)"

il est nullement question de nommer une cellule ici
 

laurent950

XLDnaute Accro
Re @patricktoulon

Regarde cette formule fonctionne maintenant
Nombre a écrire en Cellule A1

Cette formule nombres en lettre projet formule ( sans vba) correspond bien a cela ?

VB:
=SI(ENT(A1)=0;"ZERO ";SI(MOD(ENT(A1/10^9);1000)>99;CHOISIR(MOD(ENT(A1/10^9);1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(MOD(ENT(A1/10^9);1000)>100;SI(MOD(MOD(ENT(A1/10^9);1000);100)=0;"S";" "););)&CHOISIR(MOD(MOD(ENT(A1/10^9);1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(MOD(ENT(A1/10^9);1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(MOD(ENT(A1/10^9);1000);100)<20;;SI(ET(OU(MOD(MOD(ENT(A1/10^9);1000);10)<>0;MOD(MOD(ENT(A1/10^9);1000);100)=70;MOD(MOD(ENT(A1/10^9);1000);100)=90));SI(ET(MOD(MOD(ENT(A1/10^9);1000);10)=1;MOD(MOD(ENT(A1/10^9);1000);100)<80);" ET ";"-");))&CHOISIR(MOD(MOD(ENT(A1/10^9);1000);100)-CHOISIR(MOD(MOD(ENT(A1/10^9);1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&SI(MOD(ENT(A1/10^9);1000)>0;" MILLIARD"&SI(MOD(ENT(A1/10^9);1000)>1;"S";);)&SI(A1>10^9;" ";)&SI(MOD(ENT(A1/10^6);1000)>99;CHOISIR(MOD(ENT(A1/10^6);1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(MOD(ENT(A1/10^6);1000)>100;SI(MOD(MOD(ENT(A1/10^6);1000);100)=0;"S";" "););)&CHOISIR(MOD(MOD(ENT(A1/10^6);1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(MOD(ENT(A1/10^6);1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(MOD(ENT(A1/10^6);1000);100)<20;;SI(ET(OU(MOD(MOD(ENT(A1/10^6);1000);10)<>0;MOD(MOD(ENT(A1/10^6);1000);100)=70;MOD(MOD(ENT(A1/10^6);1000);100)=90));SI(ET(MOD(MOD(ENT(A1/10^6);1000);10)=1;MOD(MOD(ENT(A1/10^6);1000);100)<80);" ET ";"-");))&CHOISIR(MOD(MOD(ENT(A1/10^6);1000);100)-CHOISIR(MOD(MOD(ENT(A1/10^6);1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&SI(MOD(ENT(A1/10^6);1000)>0;" MILLION"&SI(MOD(ENT(A1/10^6);1000)>1;"S";);)&SI(A1>10^6;" ";)&SI(MOD(ENT(A1/10^3);1000)>1;SI(MOD(ENT(A1/10^3);1000)>99;CHOISIR(MOD(ENT(A1/10^3);1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(MOD(ENT(A1/10^3);1000)>100;SI(MOD(MOD(ENT(A1/10^3);1000);100)=0;"S";" "););)&CHOISIR(MOD(MOD(ENT(A1/10^3);1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(MOD(ENT(A1/10^3);1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(MOD(ENT(A1/10^3);1000);100)<20;;SI(ET(OU(MOD(MOD(ENT(A1/10^3);1000);10)<>0;MOD(MOD(ENT(A1/10^3);1000);100)=70;MOD(MOD(ENT(A1/10^3);1000);100)=90));SI(ET(MOD(MOD(ENT(A1/10^3);1000);10)=1;MOD(MOD(ENT(A1/10^3);1000);100)<80);" ET ";"-");))&CHOISIR(MOD(MOD(ENT(A1/10^3);1000);100)-CHOISIR(MOD(MOD(ENT(A1/10^3);1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&" MILLE";SI(MOD(ENT(A1/10^3);1000)=1;"MILLE";))&SI(A1>10^3;" ";))&SI(ENT(A1-ENT(A1/1000)*1000)>0;SI(ENT(A1-ENT(A1/1000)*1000)>99;CHOISIR(ENT(A1-ENT(A1/1000)*1000)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(ENT(A1-ENT(A1/1000)*1000)>100;SI(MOD(ENT(A1-ENT(A1/1000)*1000);100)=0;"S";" "););)&CHOISIR(MOD(ENT(A1-ENT(A1/1000)*1000)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(ENT(A1-ENT(A1/1000)*1000);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(ENT(A1-ENT(A1/1000)*1000);100)<20;;SI(ET(OU(MOD(ENT(A1-ENT(A1/1000)*1000);10)<>0;MOD(ENT(A1-ENT(A1/1000)*1000);100)=70;MOD(ENT(A1-ENT(A1/1000)*1000);100)=90));SI(ET(MOD(ENT(A1-ENT(A1/1000)*1000);10)=1;MOD(ENT(A1-ENT(A1/1000)*1000);100)<80);" ET ";"-");))&CHOISIR(MOD(ENT(A1-ENT(A1/1000)*1000);100)-CHOISIR(MOD(ENT(A1-ENT(A1/1000)*1000)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF");)&SI(ENT(ENT(A1-ENT(A1/1000)*1000))>0;" ";)&"EURO"&SI(ENT(A1)>1;"S";)&SI(ARRONDI((A1-ENT(A1))*100;2)>0;" "&SI(ARRONDI((A1-ENT(A1))*100;2)>99;CHOISIR(ARRONDI((A1-ENT(A1))*100;2)/100;;"DEUX ";"TROIS ";"QUATRE ";"CINQ ";"SIX ";"SEPT ";"HUIT ";"NEUF ")&"CENT"&SI(ARRONDI((A1-ENT(A1))*100;2)>100;SI(MOD(ARRONDI((A1-ENT(A1))*100;2);100)=0;"S";" "););)&CHOISIR(MOD(ARRONDI((A1-ENT(A1))*100;2)/10;10)+1;;;"VINGT";"TRENTE";"QUARANTE";"CINQUANTE";"SOIXANTE";"SOIXANTE";"QUATRE-VINGT"&SI(MOD(ARRONDI((A1-ENT(A1))*100;2);10)=0;"S";);"QUATRE-VINGT")&SI(MOD(ARRONDI((A1-ENT(A1))*100;2);100)<20;;SI(ET(OU(MOD(ARRONDI((A1-ENT(A1))*100;2);10)<>0;MOD(ARRONDI((A1-ENT(A1))*100;2);100)=70;MOD(ARRONDI((A1-ENT(A1))*100;2);100)=90));SI(ET(MOD(ARRONDI((A1-ENT(A1))*100;2);10)=1;MOD(ARRONDI((A1-ENT(A1))*100;2);100)<80);" ET ";"-");))&CHOISIR(MOD(ARRONDI((A1-ENT(A1))*100;2);100)-CHOISIR(MOD(ARRONDI((A1-ENT(A1))*100;2)/10;10)+1;;;2;3;4;5;6;6;8;8)*10+1;;"UN";"DEUX";"TROIS";"QUATRE";"CINQ";"SIX";"SEPT";"HUIT";"NEUF";"DIX";"ONZE";"DOUZE";"TREIZE";"QUATORZE";"QUINZE";"SEIZE";"DIX-SEPT";"DIX-HUIT";"DIX-NEUF")&" CENTIME"&SI(ARRONDI((A1-ENT(A1))*100;2)>1;"S";);)
 

patricktoulon

XLDnaute Barbatruc
re
décidément tu ne comprends pas
tu ne dois pas connaitre
selectionne B1 et regarde la formule
ensuite regarde dans le name toto le refersto

ensuite selection B4 et regarde la formule
ensuite regarde le name
tu va voir le refersto change en fonction de la cellule selectionnée
 

Pièces jointes

  • test toto.xlsm
    8 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 339
Membres
103 192
dernier inscrit
Corpdacier