Convertir un chiffre en lettres c'est maintenant possible grâce à la fonction LET d'Excel.
Convertir un chiffre en lettres
Pour convertir un nombre en mots, la solution passait toujours par la création d'une macro VBA très complexe. Certains sites, comme celui-ci, vous propose un exemple de code à utiliser mais selon les règles grammaticales des pays, le code devait toujours être adapté ; ce qui n'est pas facile et source d'erreurs.
Maintenant, avec Excel 365 et la nouvelle fonction LET, vous pouvez convertir un nombre en mots. La formule est très complexe et a nécessité beaucoup de temps pour son développement. Mais malgré cela, il y a certains points de la formule qui doivent être analysés avant de pouvoir l'utiliser.
Caractéristique de la formule
Avant de recopier la formule complète et de l'appliquer à votre classeur, il est important d'analyser certains points qui pourraient être cause de disfonctionnement.
Principe des matrices dans Excel
Excel 365 est la seule version qui sache interpréter les plages matricielles dynamiques (c'est -à-dire retourner le résultat dans plusieurs cellules). Une matrice de plusieurs valeurs s'écrit toujours entre accolades, mais une matrice peut s'écrire en ligne ou en colonne selon le type de séparateur que vous utilisez. Par exemple, en configuration française,
- le séparateur pour les colonnes c'est le point ( . )
- le séparateur pour les lignes c'est le point-virgule ( ; ).
Mais si votre système est configuré dans un autre pays, il est fort possible que le séparateur en ligne ne soit pas le point mais l'anti-slash (\) ou simplement la virgule (,) comme c'est le cas en configuration US. Cette configuration est liée aux paramètres de votre ordinateur.
Séparateur de décimales
L'une des complexités de l'écriture de cette formule c'est qu'elle est capable d'interpréter les chiffres avec décimales et les chiffres sans. L'astuce réside dans cette partie de la formule.
N; SUBSTITUE(TEXTE(A1; REPT(0;9)&",00" );",";"0")
Sans trop rentrer dans le détail de cette formule, ce qu'il faut constater c'est que nous avons 2 fois le symbole décimale virgule d'écrit.
- ,00.
- et le symbole de remplacement de la fonction SUBSTITUE à la fin ",";"0".
Si vous travaillez avec le séparateur de décimales point (.) il vous faudra remplacer ces 2 virgules par un point dans la fonction.
N; SUBSTITUE(TEXTE(A1; REPT(0;9)&".00" );".";"0")
Ecrire Euros/Centimes ou rien
Telle que la formule est écrite, elle va toujours rajouter Euros à la fin d'un nombre et centimes si le nombre comporte des décimales.
Denom; {" million ";" mille ";" Euros ";" Centimes"}
Maintenant, si vous ne souhaitez pas afficher les mots Euros et Centimes, il faut simplement effacer ces mots MAIS EN CONSERVANT les guillemets vides pour respecter le nombre d'occurrences dans la matrice.
Denom; {" million ";" mille ";"";""}
Formule pour convertir un nombre en lettres (France)
Pour combiner les différentes parties dans une seule et même formule, nous devons utiliser la fonction LET.
La formule complète est la suivante :
=LET(
Denom; {" million ";" mille ";" Euro ";" Centimes"};
Nums; {""."Un"."Deux"."Trois"."Quatre"."Cinq"."Six"."Sept"."Huit"."Neuf"};
Teens; {"Dix"."Onze"."Douze"."Treize"."Quatorze"."Quinze"."Seize"."Dix-sept"."Dix-huit"."Dix-neuf"};
Tens; {""."Dix"."Vingt"." Trente"." Quarante"."Cinquante"."Soixante"." Soixante"."Quatre-vingt"."Quatre-vingt"};
grp; {0;1;2;3};
LET(
N; SUBSTITUE( TEXTE( A1; REPT(0;9)&",00" );",";"0");
H; CNUM( STXT( N; 3*grp+1; 1) ); T; CNUM( STXT( N; 3*grp+2; 1) );
U; CNUM( STXT( N; 3*grp+3; 1) );
Htxt; SI( H; SI(H>1; INDEX( Nums; H+1 ) & " cent "; "cent " ); "");
Ttxt; SI( T>1; INDEX( Tens; T+1 ) & SI( U>0; " "; "" ); " " );
Utxt; SI((T+U); SI((T=1)+(T=7)+(T=9); INDEX(Teens;U+1 );INDEX(Nums;U+1)));
SUPPRESPACE(SUBSTITUE(NOMPROPRE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" )));"Un Mille";"Mille"))
))
P.S : 3 Excel MVP et 6 jours de développement pour obtenir ce résultat
Formule pour convertir un nombre en lettres (Belgique et Suisse)
Ces 2 pays n'utilisent pas soixante-dix et quatre-vingt-dix donc la formule doit être adaptée. Par contre, les Suisses n'utilisent pas non plus le quatre-vingt mais huitante ou octante. Il suffit juste de corriger cette information dans la formule suivante dans la ligne Tens.
=LET(
Denom, {" million ";" mille ";" Euro ";" Centimes"},
Nums, {"","Un","Deux","Trois","Quatre","Cinq","Six","Sept","Huit","Neuf"},
Teens, {"Dix","Onze","Douze","Treize","Quatorze","Quinze","Seize","Dix-sept","Dix-huit","Dix-neuf"},
Tens, {"","Dix","Vingt"," Trente"," Quarante","Cinquante","Soixante"," Septante","Quatre-vingt","Nonante"},
grp, {0;1;2;3},
LET(
N, SUBSTITUTE( TEXT( A1, REPT(0,9)&",00" ),",","0"),
H, VALUE( MID( N, 3*grp+1, 1) ), T, VALUE( MID( N, 3*grp+2, 1) ),
U, VALUE( MID( N, 3*grp+3, 1) ),
Htxt, IF( H, IF(H>1, INDEX( Nums, H+1 ) & " cent ", "cent " ), ""),
Ttxt, IF( T>1, INDEX( Tens, T+1 ) & IF( U>0, " ", "" ), " " ),
Utxt, IF((T+U), IF(T=1, INDEX(Teens,U+1 ),INDEX(Nums,U+1))),
TRIM(SUBSTITUTE(PROPER(CONCAT( IF( H+T+U, Htxt & Ttxt & Utxt & Denom, "" ))),"Un Mille","Mille"))
))
Articles liés
- Convertir chiffre romain avec Excel
- Comment Afficher les mois en Lettres dans Excel
- Comment ajouter le jour en lettre à vos dates ?
- Créer une fonction LAMBDA automatiquement dans Excel
- Vous trouverez des informations complémentaires sur la fonction LET sur le site de Microsoft.
Benoit
26/09/2024 @ 08:16
Bonjour,
merci pour ce travail, ultra pratique
Juste une question supplémentaire : comment faire pour la devise soit une variable (Euro, Dollars, Livre, ...) avec une cellule à correspondante plutôt que d'obliger l'utilisateur à rentrer dans la formule pour la modifier ?
Frédéric LE GUEN
29/09/2024 @ 11:52
Il faut bidouiller la formule en ajoutant un SI.CONDITIONS ou RECHERCHEX pour ajouter la devise à la fin
bachir
25/09/2024 @ 09:54
esq ça marche avec excel 2013?
Frédéric LE GUEN
29/09/2024 @ 11:52
Oui
axa
16/02/2024 @ 17:01
Bonjour,
Merci pour votre travail.
Cependant, où faut il saisir la formule et où faut il mettre le nombre que l'on souhaite transformer ?
Merci
Frédéric LE GUEN
17/02/2024 @ 06:20
Votre chiffre doit être en A1. Après, vous recopiez la formule où vous voulez
stefan
23/11/2023 @ 12:43
Bravo pour le travail et merci beaucoup pour les commentaires qui m'ont aider à comprendre.
Alain MATHIEU
27/09/2023 @ 09:45
Bonjour,
Il y a certains chiffres qui ne sont pas justes, sans que j'ai pu en identifier la raison.
Par exemple 31300 donne un résultat doublement faux : Trente Mille Trois Cent Faux Euros
(manque le millier, et ajout de FAUX à la fin ?)
Mais quel travail bien utile néanmoins, qui nécessite juste une vérification et correction éventuelle pour un ou deux chiffres.
BEN MAAMER AHMED
03/09/2023 @ 18:07
j'ai copier collé ,,, ne fonctionne pas ???
=LET(Denom; {" million ";" mille ";" dinars algérien ";" Centimes"};Nums; {""."Un"."Deux"."Trois"."Quatre"."Cinq"."Six"."Sept"."Huit"."Neuf"};Teens; {Dix"."Onze"."Douze"."Treize"."Quatorze"."Quinze"."Seize"."Dix-sept"."Dix-huit"."Dix-neuf"};Tens; {""."Dix"."Vingt"." Trente"." Quarante"."Cinquante"."Soixante"." Soixante"."Quatre-vingt"."Quatre-vingt"};
grp; {0;1;2;3};LET(N; SUBSTITUE( TEXTE( B12; REPT(0;9)&",00" );",";"0");H; CNUM( STXT( N; 3*grp+1; 1) ); T; CNUM( STXT( N; 3*grp+2; 1) );U; CNUM( STXT( N; 3*grp+3; 1) );Htxt; SI( H; SI(H>1; INDEX( Nums; H+1 ) & " cent "; "cent " ); "");
Ttxt; SI( T>1; INDEX( Tens; T+1 ) & SI( U>0; " "; "" ); " " );Utxt; SI((T+U); SI((T=1)+(T=7)+(T=9); INDEX(Teens;U+1 );INDEX(Nums;U+1)));SUPPRESPACE(SUBSTITUE(NOMPROPRE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" )));"Un Mille";"Mille"))))
Frédéric LE GUEN
04/09/2023 @ 08:21
Vous avez quelle version d'Excel?
FANIE
04/09/2023 @ 16:41
Bonjour,
Je vous remercie pour cette formule très utile.
Je souhaite supprimer les centimes mais lorsque je supprime le terme "Centimes" dans la formule en laissant les guillemets, les lettres correspondant aux centimes apparaissent toujours.
Pouvez-vous m'aider SVP ?
Merci par avance
FIONA
11/06/2023 @ 02:59
Pour ajouter du texte après la conversion en lettres (Catherine), il faut placer le texte en fin de formule :
SUPPRESPACE(SUBSTITUE(SUBSTITUE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" ));"un mille";"mille");"un millions";"un million"))
)) & "actions de catégorie A."
On peut aussi améliorer le texte avec :
)) & "action" & Si($A$1>1; "s ";" ") & "de catégorie A."
La formule est simpliste, j'aurais pu l'intégrer à la fin du premier LET, attention le (Alt+Entrée) n'est pas à saisir, ce sont les touches à taper :
grp; {0;1;2;3}; (Alt+Entrée)
Suptext; {" en actions de catégorie A."};
Puis en modifiant la dernière ligne :
CONCAT(SUPPRESPACE(SUBSTITUE(SUBSTITUE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" ));"un mille";"mille");"un millions";"un million")) & Suptext)
Il faut voir chaque ligne du LET comme un choix attribué à une variable nommée, par exemple : "nom-A;{"choix 0; choix 1; choix 2; ...};"
Puis un peu plus bas, une directive qui peut contenir une condition : "Utxt; Si( ($A$1>1; INDEX(nom-A; 2));"
Dans cet exemple, à l'exécution de la formule, la variable nommée "Utxt" contiendra "choix 1" du fait de la valeur "2" passée à INDEX.
C'est ce qui s'exécute dans chaque ligne du second LET.
A vous de jouer.
Frédéric LE GUEN
11/06/2023 @ 03:48
Merci beaucoup Fiona pour ce travail très appliqué 🙂
FIONA
11/06/2023 @ 01:58
Je suis arrivé par hasard sur ce post, et j'ai rencontré le même problème dans l'exécution de la formule. En fait, il faut ci-dessous supprimer chaque ligne vide et à la fin de la ligne précédente ajouter Alt+Entrée. Soit une formule de 15 lignes. Le nombre à convertir est placé en A1, la formule en B1 ou ailleurs. Pour modifier A1, allez à la 8 ème ligne (en-dessous du second "LET"), et modifier "$A$1". J'en ai profité pour corriger la dernière ligne en remplaçant "un millions" par "un million". Dernière info, le nombre est limité à 9 chiffres + 2 décimales formaté par le modèle >> REPT(0;9) & ",00". Bon courage :
=LET(
Denom; {" millions ";" mille ";" Euros ";" Centimes"};
Nums; {"";"un";"deux";"trois";"quatre";"cinq";"six";"sept";"huit";"neuf"};
Teens; {"dix";"onze";"douze";"treize";"quatorze";"quinze";"seize";"dix-sept";"dix-huit";"dix-neuf"};
Tens; {"";"dix";"vingt";" trente";" quarante";"cinquante";"soixante";" soixante";"quatre-vingt";"quatre-vingt"};
grp; {0;1;2;3};
LET(
N; SUBSTITUE( TEXTE( $A$1; REPT(0;9)&",00" );",";"0");
H; CNUM( STXT( N; 3*grp+1; 1) ); T; CNUM( STXT( N; 3*grp+2; 1) );
U; CNUM( STXT( N; 3*grp+3; 1) );
Htxt; SI( H; SI(H>1; INDEX( Nums; H+1 ) & " cent "; "cent " ); "");
Ttxt; SI( T>1; INDEX( Tens; T+1 ) & SI( U>0; "-"; "" ); " " );
Utxt; SI((T+U); SI((T=1)+(T=7)+(T=9); INDEX(Teens;U+1 );INDEX(Nums;U+1));"");
SUPPRESPACE(SUBSTITUE(SUBSTITUE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" ));"un mille";"mille");"un millions";"un million"))
))
Catherine
26/01/2023 @ 20:01
Bonjour,
J'ai utilisé la formule suivante afin que mes chiffres s'écrivent en lettre.
=SI(K9="Achats";LET(
Denom; {" million ";" mille ";" actions de catégorie A ";" "};
Nums; {""."un"."deux"."trois"."quatre"."cinq"."six"."sept"."huit"."neuf"};
Teens; {"dix"."onze"."douze"."treize"."quatorze"."quinze"."seize"."dix-sept"."dix-huit"."dix-neuf"};
Tens; {""."dix"."vingt"." trente"." quarante"."cinquante"."soixante"." soixante"."quatre-vingt"."quatre-vingt"};
grp; {0;1;2;3};
LET(
N; SUBSTITUE( TEXTE( I9; REPT(0;9)&",00" );",";"0");
H; CNUM( STXT( N; 3*grp+1; 1) ); T; CNUM( STXT( N; 3*grp+2; 1) );
U; CNUM( STXT( N; 3*grp+3; 1) );
Htxt; SI( H; SI(H>1; INDEX( Nums; H+1 ) & " cent "; "cent " ); "");
Ttxt; SI( T>1; INDEX( Tens; T+1 ) & SI( U>0; " "; "" ); " " );
Utxt; SI((T+U); SI((T=1)+(T=7)+(T=9); INDEX(Teens;U+1 );INDEX(Nums;U+1)));
SUPPRESPACE(SUBSTITUE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" ));"un mille";"mille"))
));)
Tout fonctionne, à l'exception d'une cellule. Elle devrait écrire cent actions de catégorie A, mais écrit plutôt cent FAUX actions de catégorie A.
Pouvez-vous m'aider à résoudre la problématique svp ?
Merci.
Catherine
26/01/2023 @ 20:06
Si le nombre est négatif, la formule devrait-elle être modifiée?
Merci encore
Frédéric LE GUEN
28/01/2023 @ 14:41
En principe oui (je n'ai jamais fait le test)
Rodolphe Gaillot
01/09/2023 @ 13:52
Salut, il faut modifié la ligne Utxt, il manque la condition si U>1 , ce qui donne :
Utxt; SI(U>1;SI((T+U); SI((T=1)+(T=7)+(T=9); INDEX(Teens;U+1 );INDEX(Nums;U+1)));"");
ETHAN
26/04/2024 @ 16:45
Merci pour cette formule, elle marche.
VIRGINIE LOBET
19/12/2022 @ 14:20
Bonjour
cette partie ne fonctionne pas pour moi. comment dois je proceder pour coller ces 2 fonctions au reste??
"puis de même, enchaîner (conversion de 2000 pour laquelle le mot Euros manque)
=SI(DROITE(E11;5)="mille";CONCAT(E11;" Euros");E11)
et enfin (conversion de 2000,20 pour laquelle le mot Euros manque)
=SI(ESTERREUR(CHERCHE("Euros";E12));CONCAT(GAUCHE(E12;CHERCHE("mille";E12)+4);" Euros et ";STXT(E12;CHERCHE("mille";E12)+6;999));E12)""
Merci beaucoup
VIRGINIE LOBET
30/01/2023 @ 11:27
Bonjour,
désolé d'insister mais je suis vraiment bloqué!!
Comment dois je procéder pour écrire "EUROS" à Mille, deux Mille,trois Mille...
Merci d'avance de votre réponse
Jean Claude COURAU
30/11/2022 @ 17:23
Merci beaucoup, excellent et très utile.
Il faut effectivement faire la petite correction ajout de ;""
INDEX(Nums;U+1)) ;"");
D'autres améliorations sont à envisager, par exemple million ou millions si >1000000 ..
Tristan Geoffroy
22/11/2022 @ 12:09
Bonjour,
merci pour cette formule qui donne envi car à l'air très intelligente, .., peut-être un trop pour moi, car je n'arrive à la comprendre ni pourquoi elle ne fonctionne pas pour moi. Est-il possible d'avoir une explication plus littérale des étapes ?
Merci
Frédéric LE GUEN
24/11/2022 @ 17:29
Houla, vous êtes bien l'un des rares à me demander d'expliquer une formule (en général les gens ne s'embarrassent pas avec les détails et copie juste la formule. Mais bon, je n'ai malheureusement pas assez de temps pour écrire un article sur toutes les subtilités de la formule. Quelle est la partie que vous ne comprenez pas ?
Tristan GEOFFROY
07/01/2023 @ 17:29
Bonjour,
bien, comme elle ne fonctionnait pas chez moi, j'essayais de comprendre pour corriger mon erreur. Mais je comprends très bien que ca demande du temps qu'on n'a pas nécessairement.
Depuis, j'en ai utilisé une autre, plus force brute et moins élégante.
Je préciserai mes questions,
Bonne année
Tristan GEOFFROY
15/01/2023 @ 20:00
21 donnes vingt un euros au lieu de "vingt et un euros", de même pour 31 41 51 61. ; quand j'aurais compris le code je serais
le corriger. 😉
Frédéric LE GUEN
16/01/2023 @ 20:19
Oui, je sais bien que ce n'est pas parfait. Mais je n'ai vraiment pas le temps pour améliorer la fonction.
JP
14/11/2022 @ 20:59
c'est un bon début mais c'est bourré de fautes, fautes que l'on peut corriger avec une série de remplacements
après avoir enlevé les majuscules à la formule au dessus cela donne :
=LET(
Denom; {" million ";" mille ";" Euros ";" centimes"};
Nums; {""."un"."deux"."trois"."quatre"."cinq"."six"."sept"."huit"."neuf"};
Teens; {"dix"."onze"."douze"."treize"."quatorze"."quinze"."seize"."dix-sept"."dix-huit"."dix-neuf"};
Tens; {""."dix"."vingt"." trente"." quarante"."cinquante"."soixante"." soixante"."quatre-vingt"."quatre-vingt"};
grp; {0;1;2;3};
LET(
N; SUBSTITUE( TEXTE( F9; REPT(0;9)&",00" );",";"0");
H; CNUM( STXT( N; 3*grp+1; 1) ); T; CNUM( STXT( N; 3*grp+2; 1) );
U; CNUM( STXT( N; 3*grp+3; 1) );
Htxt; SI( H; SI(H>1; INDEX( Nums; H+1 ) & " cent "; "cent " ); "");
Ttxt; SI( T>1; INDEX( Tens; T+1 ) & SI( U>0; " "; "" ); " " );
Utxt; SI((T+U); SI((T=1)+(T=7)+(T=9); INDEX(Teens;U+1 );INDEX(Nums;U+1)));
SUPPRESPACE(SUBSTITUE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" ));"un mille";"mille"))
))
(remplacer F9 par la cellule contenant le chiffre)
effectuer les rempalcements :
=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(E9;" FAUX";"s");"quatre-vingt Euro";"quatre-vingts Euro");"quatre-vingt Centimes";"quatre-vingts Centimes");"vingt un";"vingt-et-un");" ";"-");"-Euros";" Euros");"Euros-";"Euros et ");"-centimes";" centimes")
(remplacer E9 par la cellule contenant le 1er résultat)
puis de même, enchaîner (conversion de 2000 pour laquelle le mot Euros manque)
=SI(DROITE(E11;5)="mille";CONCAT(E11;" Euros");E11)
et enfin (conversion de 2000,20 pour laquelle le mot Euros manque)
=SI(ESTERREUR(CHERCHE("Euros";E12));CONCAT(GAUCHE(E12;CHERCHE("mille";E12)+4);" Euros et ";STXT(E12;CHERCHE("mille";E12)+6;999));E12)
Frédéric LE GUEN
18/11/2022 @ 14:57
Merci beaucoup pour ce travail et l'effort consacré
VIRGINIE LOBET
19/12/2022 @ 14:59
Bonjour
pour ma part cette partie de la formule ne fonctionne pas :
"puis de même, enchaîner (conversion de 2000 pour laquelle le mot Euros manque)
=SI(DROITE(E11;5)="mille";CONCAT(E11;" Euros");E11)
et enfin (conversion de 2000,20 pour laquelle le mot Euros manque)
=SI(ESTERREUR(CHERCHE("Euros";E12));CONCAT(GAUCHE(E12;CHERCHE("mille";E12)+4);" Euros et ";STXT(E12;CHERCHE("mille";E12)+6;999));E12)
Comment dois je procéder? merci de votre réponse
VIRGINIE LOBET
30/01/2023 @ 12:04
Bonjour
cette partie ne fonctionne pas pour moi. comment dois je proceder pour coller ces 2 fonctions au reste??
"puis de même, enchaîner (conversion de 2000 pour laquelle le mot Euros manque)
=SI(DROITE(E11;5)="mille";CONCAT(E11;" Euros");E11)
et enfin (conversion de 2000,20 pour laquelle le mot Euros manque)
=SI(ESTERREUR(CHERCHE("Euros";E12));CONCAT(GAUCHE(E12;CHERCHE("mille";E12)+4);" Euros et ";STXT(E12;CHERCHE("mille";E12)+6;999));E12)""
Je suis vraiment bloquée!
Merci beaucoup
Jannin
03/10/2024 @ 10:34
Bonjour, je suis très intéressée par cette formule et pouvez-vous me dire où je remplace les parties suivantes svp ?
=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(E9;" FAUX";"s");"quatre-vingt Euro";"quatre-vingts Euro");"quatre-vingt Centimes";"quatre-vingts Centimes");"vingt un";"vingt-et-un");" ";"-");"-Euros";" Euros");"Euros-";"Euros et ");"-centimes";" centimes")
=SI(DROITE(E11;5)="mille";CONCAT(E11;" Euros");E11)
=SI(ESTERREUR(CHERCHE("Euros";E12));CONCAT(GAUCHE(E12;CHERCHE("mille";E12)+4);" Euros et ";STXT(E12;CHERCHE("mille";E12)+6;999));E12)
Merci pour votre réponse.
Pierrick
17/05/2022 @ 14:52
Merci pour ce partage.
Est-ce quelqu'un aurait fait les adaptations pour respecter les règles d'accord des nombres en français ?
FUCHY Pierre
29/03/2022 @ 14:08
Bonjour!
Assez nul et vieux, j'ai Excel 365. J'ai tout bêtement copié la formule France et collé dans B1, après avoir mis un nombre dans A1. Le miracle ne s'est pas produit.
La formule s'est collée en 15 cellules de B1 à B15, et pas de message d'erreur.
J'ai tenté de passer par word pour tout coller dans la même cellule: toujours pas bon.
Problème d'espaces, ou autre chose tellement évidente que vous n'en parlez pas?
Ou bien quoi, je n'ai pas le niveau?
Si vous pouvez me répondre, merci d'avance.
Pierre
SB
06/11/2021 @ 08:35
Hello,
génialissime !
Mais... si je mets 10 000,05 € ou 10 000, j'ai pas le "Euro" et d'ailleurs ça devrait être "Euros" avec un s...
Bravo,
SB
Frédéric LE GUEN
07/11/2021 @ 15:06
Oui, exact, c'est à cause des 3 valeurs des unités qui sont à 0 donc 0 * 'euro' ne renvoie rien.
hamidi
01/12/2021 @ 20:41
Bonjour,
Un grand merci pour ce qui vous faites
juste pour 100 000 ça donne "Cent Faux Mille" au lieu de Cent Mille
Merci.
Frédéric LE GUEN
05/12/2021 @ 17:05
Oui, c'est le seul bug (mais vous pouvez le corriger à la main)
Véro
05/11/2021 @ 19:59
WOW ! Géniale !! Merci ! NbLettre fonctionne vraiment difficilement, là c'est top !
nathalie
22/10/2021 @ 12:34
J'ai eu aussi un soucis avec 3grp qu'il fallait écrire 3*grp, après cela ça marche nickel....que de temps gagné.
Merci beaucoup.
Frédéric LE GUEN
23/10/2021 @ 16:16
Mille merci pour avoir relevé la coquille dans l'article. C'est corrigé
Sandra
02/07/2021 @ 08:36
Bonjour,
Merci pour cette formule vraiment super et pour les commentaires qui aident bien!
J'ai une petite question tenant du format... J'aimerai que le nombre écrit en toute lettre ne comporte que des minuscules, j'ai essayé de simplement remplacer les majuscules par des minuscules dans la formule mais ça n'a rien changé...
Il y a-t-il une manip supplémentaire à effectuer ?
En vous remerciant par avance
Frédéric LE GUEN
02/07/2021 @ 09:08
Il faut retirer l'instruction NOMPROPRE. C'est elle qui écrit chaque première lettre en majuscule
aleya
02/04/2021 @ 12:17
bonjour, je suis un novice en excel, j'ai pas réussi à utiliser la formule, j'ai coller dans une cellule mais j'ai pas compris comment introduire la cellule avec le chiffre
Maxime Caruel
06/04/2021 @ 07:51
A la 10eme ligne dans la formule, tu as A1 que tu dois remplacer par ta cellule qui contient de valeur en chiffres. Novice aussi j'ai réussi. Merci pour le partage de cette formule
NGUYEN
07/04/2021 @ 16:09
Bonjour,
Moi c'est pareil que ALEYA. J'ai aussi remplacé la cellule qui contient de valeur en chiffres mais c'est toujours #NOM?
Savez - vous pourquoi ?
En vous remerciant par avance,
Frédéric LE GUEN
07/04/2021 @ 16:12
Votre version d'Excel ne connait pas la fonction LET. Il faut Excel 365
NGUYEN
09/04/2021 @ 09:28
Effectivement, j'ai Excel 365 mais peut - être la version n'est pas à jour.
Et puis j'ai changé l'ordinateur et ça marche bien.
Par ailleurs, quand c'est 1000; 4000; ... il n'affiche pas Euros, seulement Mille, Quatre mille. Comment on peut ajouter quand il s'agit le chiffre x Mille ?
Je vous remercie beaucoup pour ce beau travail.
Bien à vous,
Nicolas Georges
27/02/2021 @ 11:44
Merci pour ce partage !
J'ai du lire tout l'article pour trouver que . devait s'écrire \ dans ma configuration 😉
J'ai eu un soucis avec 3grp qu'il fallait écrire 3*grp.
Sinon, j'ai aussi un soucis avec Utxt : je dois ajouter un ;"") à la fin du premier IF sinon j'obtiens par exemple "Dix Mille Cent Faux Euros", moi je veux des vrais euros :-p
Nicolas.
PS: la formule FR finale avec ma version d'Excel 365 (version 2101 build 13628.20274) :
=LET(
Denom; {" million ";" mille ";" Euro ";" Centimes"};
Nums; {""\"Un"\"Deux"\"Trois"\"Quatre"\"Cinq"\"Six"\"Sept"\"Huit"\"Neuf"};
Teens; {"Dix"\"Onze"\"Douze"\"Treize"\"Quatorze"\"Quinze"\"Seize"\"Dix-sept"\"Dix-huit"\"Dix-neuf"};
Tens; {""\"Dix"\"Vingt"\" Trente"\" Quarante"\"Cinquante"\"Soixante"\" Soixante"\"Quatre-vingt"\"Quatre-vingt"};
grp; {0;1;2;3};
LET(
N; SUBSTITUE( TEXTE( $I$7; REPT(0;9)&",00" );",";"0");
H; CNUM( STXT( N; 3*grp+1; 1) ); T; CNUM( STXT( N; 3*grp+2; 1) );
U; CNUM( STXT( N; 3*grp+3; 1) );
Htxt; SI( H; SI(H>1; INDEX( Nums; H+1 ) & " cent "; "cent " ); "");
Ttxt; SI( T>1; INDEX( Tens; T+1 ) & SI( U>0; "-"; "" ); " " );
Utxt; SI((T+U); SI((T=1)+(T=7)+(T=9); INDEX(Teens;U+1 );INDEX(Nums;U+1));"");
SUPPRESPACE(SUBSTITUE(NOMPROPRE(CONCAT( SI( H+T+U; Htxt & Ttxt & Utxt & Denom; "" )));"Un Mille";"Mille"))
))
Frédéric LE GUEN
27/02/2021 @ 17:46
Il faut tout lire 😉 Il y a toujours une raison derrière une formule.
Ok pour le 3*grp et merci
Rémy
10/05/2021 @ 19:34
Bonjour et merci pour la formule "compatible" avec ma version. Mais petit souci pour moi, les sommes s'affichent en centimes
Par exemple
70 = soixantedix centimes
700 = 7 euro
Je cherche mais je ne trouve pas où est l'erreur
vous avez une idée ?
FredB
27/08/2021 @ 14:47
Merci pour tous ces partages, lorsque je mets 101000 j'obtiens le résultat : Cent Mille. Je n'arrive pas à voir ce qui pêche dans la formule.
Merci d'avance pour vos retours.
Frédéric LE GUEN
05/09/2021 @ 10:24
Aucune idée. La formule n'a pas été développée au-delà de 99 999
Sébastien
20/12/2021 @ 18:16
Bonjour,
le probleme ce pose à partir de l'affichage de 21 000, 31 000 etc...
Sébastien
20/12/2021 @ 19:16
Mon bidouillage pour que cela fonctionne avec les milliards de Franc CFA ... et réglant le probléme de 21 000, 31 000 etc ...
=LET(
Denom;{" milliard ";" million ";" mille ";" ";" "};
Nums;{""."Un"."Deux"."Trois"."Quatre"."Cinq"."Six"."Sept"."Huit"."Neuf"};
Teens;{"Dix"."Onze"."Douze"."Treize"."Quatorze"."Quinze"."Seize"."Dix-sept"."Dix-huit"."Dix-neuf"};
Tens;{""."Dix"."Vingt"." Trente"." Quarante"."Cinquante"."Soixante"." Soixante"."Quatre-vingt "."Quatre-vingt "};
grp;{0;1;2;3;4};
LET(
N;SUBSTITUE(TEXTE(ARRONDI(F38;0);REPT(0;12)&",00");",";"0");
H;CNUM(STXT(N;3*grp+1;1));
T;CNUM(STXT(N;3*grp+2;1));
U;CNUM(STXT(N;3*grp+3;1));
Htxt;SI(H;SI(H>1;INDEX(Nums;H+1)&" cent ";"cent ");"");
Ttxt;SI(T>1;INDEX(Tens;T+1)&SI(U>0;" ";"");" ");
Utxt;SI((T+U);SI((T=1)+(T=7)+(T=9);INDEX(Teens;U+1);INDEX(Nums;U+1));" ");
SUPPRESPACE(SI(C13=1000;SUBSTITUE(NOMPROPRE(CONCAT(SI(H+T+U;Htxt&Ttxt&Utxt&Denom;"")));"Un Mille";" Mille");NOMPROPRE(CONCAT(SI(H+T+U;Htxt&Ttxt&Utxt&Denom;""))))))&" Franc CFA")
Ephram
25/01/2021 @ 15:41
Par contre pour modifier selon le pays, par exemple, la Suisse il faut juste remplacer "quatrevingt" par huitante et quatre vingt dix par nonante ou il faut modifier d'autres point de la formule ?
Frédéric LE GUEN
25/01/2021 @ 15:51
Oui, oui, oui, .... un peu de patience.
Je sais que je dois le faire mais j'ai mille tâches à réaliser avant.
Ce n'est pas simple d'être le dernier MVP en langue Française. J'ai bcp de sujet à couvrir.
Mais ça sera fait.
Ephram
26/01/2021 @ 15:49
Ok merci de l'article et des conseils super pratiques.
Frédéric LE GUEN
25/01/2021 @ 22:35
Mais pour soixante-dix, c'est bien septante, comme en Belgique
Charles
21/01/2021 @ 10:08
Chapeau ! Pourtant, à la lecture de la formule définitive, j'ai tout de suite vu... que c'est un véritable casse-tête !
Par contre, j'adore l'idée de le faire avec des formules SANS MACRO !
Bravo !
Frédéric LE GUEN
21/01/2021 @ 15:14
C'est sur, il y a eu du travail. C'est pour cela que j'ai partager la fonction car c'est impossible de créer ce genre de formule de toute pièce. Et les macros, si on peut les éviter, c'est bien mieux