Convertir des chiffres en lettres avec une unique formule

Fermé
FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024 - 8 févr. 2022 à 13:39
Mike-31 Messages postés 18320 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 20 juin 2024 - 21 févr. 2022 à 12:42
Bonjour les Ami(e)s,

Est ce qu'il y aurait quelqu'un qui pourrait me corriger cette formule unique inventée par un des utilisateurs de ce forum et qui permet de convertir des chiffres en lettres sur excel 365 ? Le problème est que cette formule n'affiche pas les centimes.

La formule est la suivante :

NOMPROPRE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SI(NBCAR(ENT(A19))<=2;RECHERCHEV(STXT(ENT(A19);1;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=3;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);2;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=4;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);2;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);3;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=5;RECHERCHEV(GAUCHE(ENT(A19);2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);3;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);4;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=6;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);2;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);4;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A19);5;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=7;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A19);2;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);3;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);5;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A19);6;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=8;RECHERCHEV(GAUCHE(ENT(A19);2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A19);3;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);4;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);6;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A19);7;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=9;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);2;2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A19);4;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);5;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);7;1)*1;chiffre_100;2;0))&" cent "&RECHERCHEV(STXT(ENT(A19);8;2)*1;chiffre_100;2;0))))))));"zero cent ";);"un cent ";"cent ");"Zero mille";);"Zero";"");"un mille ";" mille ");"zero";);"un milions ";" un million ");" mille ";" ")&" EURO "&SUBSTITUE(RECHERCHEV(SIERREUR(STXT(A19+0.001;TROUVE(",";A19+0.001)+1;2)*1;0);chiffre_100;2;0)&" Centimes";"un Centimes";"un centime"))

A voir également:

18 réponses

PapyLuc51 Messages postés 4352 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 juillet 2024 1 425
14 févr. 2022 à 15:41
Salut FOUAD

Je viens de voir ceci pour installer le module complémentaire NBLettre sur office 365. Je le connaissais mais je ne savais pas si c'était possible ; enfin j'espère que ça l'est ;)

https://microboum.blogspot.com/2019/09/excel-office-365-convertir-les-nombres.html

Cordialement
1
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
14 févr. 2022 à 16:48
Bonjour,

Le module existe depuis des lustres, pas seulement Excel 365, il me semblait de mémoire qu'il n'affichait que les lettres, pas la devise, au temps pour moi

Il est critiqué pour un certain nombre d'à-peu-près dans l'expression du résultat, mais que l'on peut corriger pour faire propre à partir du code, comme discuté ici:

https://forum.excel-pratique.com/excel/macro-complementaire-nb-lettre-xla-124216
0
FOUAD > brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024
15 févr. 2022 à 09:13
Bonjour à tous et merci infiniment de vos efforts, je connais déjà ce module mais ce qui m'intéresse c'est une seule et unique formule. C'est question de défi et de faciliter pour certaines personnes débutante en excel.
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142 > FOUAD
Modifié le 15 févr. 2022 à 10:15
Bonjour,

Pour une raison qui m'échappe, ta formule telle que mise en ligne en <8> fonctionne y compris dans Excel 2019 si je me rends dans la cellule en B2 et que je tape sur entrée après le dernier caractère de la formule
un centime"))


Si je change la valeur en A2, la formule ne "rafraîchit" pas si à nouveau je ne fais pas entrée en B2 de la même façon.

Reste bien sûr, mais c'est une autre question, à faire les corrections appropriées:

Sept Cent Vingt -Quatre Millions Cinq Cent Soixante-Douze Mille Quatre Cent Cinquante- Sept Euro Trente- Trois Centimes



Deux Mille Quatre Cent Cinquante- Sept Euro Zero Centimes


Il n'y a aucune raison d'utiliser des majuscules (et donc NOMPROPRE), des tirets ou des espaces entre les valeurs.
Manque l'accent à Zéro et Centime au singulier (par contre correct pour 2457,01 ou 2457,02).
0
PapyLuc51 Messages postés 4352 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 juillet 2024 1 425
10 févr. 2022 à 07:50
Bonjour,

Ou alors une création de fonction par code VBA tiré de cette discussion

https://www.cjoint.com/c/LBkgQsup8B8

Cordialement
0
PapyLuc51 Messages postés 4352 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 juillet 2024 1 425
10 févr. 2022 à 08:54
Dans la dernière partie concaténée de la formule remplacer le point par une virgule pour 0.001 &SUBSTITUE(RECHERCHEV(SIERREUR(STXT(A19+0,001;TROUVE(",";A19+0,001)+1;2)*1;0);chiffre_100;2;0)&" Centimes";"un Centimes";"un centime")

Par contre je ne peux pas vérifier cette formule car il manque la zone traitée par chiffre_100
0
FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024 1
10 févr. 2022 à 09:07
ça ne marche toujours pas, est ce que vous l'avez testée ? Si oui, envoyez-moi s'il vous plaît un fichier excel avec le test.
=NOMPROPRE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SI(NBCAR(ENT(A19))<=2;RECHERCHEV(STXT(ENT(A19);1;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=3;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);2;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=4;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);2;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);3;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=5;RECHERCHEV(GAUCHE(ENT(A19);2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);3;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);4;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=6;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);2;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);4;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A19);5;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=7;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A19);2;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);3;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);5;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A19);6;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=8;RECHERCHEV(GAUCHE(ENT(A19);2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A19);3;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);4;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);6;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A19);7;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A19))=9;RECHERCHEV(GAUCHE(ENT(A19);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);2;2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A19);4;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A19);5;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A19);7;1)*1;chiffre_100;2;0))&" cent "&RECHERCHEV(STXT(ENT(A19);8;2)*1;chiffre_100;2;0))))))));"zero cent ";);"un cent ";"cent ");"Zero mille";);"Zero";"");"un mille ";" mille ");"zero";);"un milions ";" un million ");" mille ";" ")&" EURO "&SUBSTITUE(RECHERCHEV(SIERREUR(STXT(A19+0,001;TROUVE(",";A19+0,001)+1;2)*1;0);chiffre_100;2;0)&" Centimes";"un Centimes";"un centime")
0
PapyLuc51 Messages postés 4352 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 juillet 2024 1 425 > FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024
Modifié le 10 févr. 2022 à 09:22
Il manque une parenthèse fermante à la fin "un centime"))

Sur mon test (Excel 2013) ça me renvoie l'erreur #NOM? car il manque la zone traitée par le nom chiffre_100

Si vous voulez qu'on vérifie il faudrait un fichier exemple sans les données confidentielles et avec cette zone nommée
Aller dans https://www.cjoint.com/

•Cliquer sur "PARCOURIR" pour sélectionner le fichier
Ou
•"FAIRE UN GLISSER DEPOSER" dans la fenêtre ;

Cliquer sur le bouton "CREER LE LIEN"

Pour copier/coller le lien : (2 méthodes)

•Faire un "CLIC DROIT" sur le lien créé et cliquer sur "COPIER L'ADRESSE DU LIEN" ; sur le post Clic droit "COLLER".
•"COPIER" le lien ; sur le poste ouvrir le crochet " Alt+[ " ; "COLLER" le lien ; fermer avec le crochet " Alt+] "

Autres sites :
https://mon-partage.fr/
https://www.transfernow.net/


cordialement
0
FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024 1
10 févr. 2022 à 08:43
Bonjour, merci de votre aimable réponse mais je suis à la recherche d'une seul et unique formule sans vba.
0
FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024 1
10 févr. 2022 à 09:27
0
PapyLuc51 Messages postés 4352 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 juillet 2024 1 425 > FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024
10 févr. 2022 à 13:44
RE:

Un détail que je viens de voir, le calcul des formules en en mode manuel.

Je ne sais pas comment c'est sur Excel 365 - sur le 2013 > onglet FORMULES > Options de calcul > clic sur "Automatique"

Il y a pas mal de choses à revoir dans cette formule (voir les quelques exemples sur le fichier en retour

https://www.cjoint.com/c/LBkmMojFlZ8

J'ai aussi retrouvé dans mes archives un fichier sans VBA à adapter si besoin (dans le feuillet "monnaies" faire apparaître les lignes cachées pour comprendre)

https://www.cjoint.com/c/LBkmMtgPCh8

Cordialement
0
FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024 1 > PapyLuc51 Messages postés 4352 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 juillet 2024
10 févr. 2022 à 14:22
Merci infiniment quand même pour les efforts que vous avez déployés pour m'aider, mais je connais déjà ce fichier sans VBA. Mon souhait est d'avoir une et seule formule. Encore une fois, mille mercis.
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
10 févr. 2022 à 09:14
Bonjour,

Je ne peux pas tester puisque je n'ai pas Excel 365 ou 2021 dont 2 fonctions sont spécifiques, donc seulement quelques remarques en passant.

Pourquoi vouloir passer par NOMPROPRE, autrement exprimé, pourquoi les sommes en lettres auraient-elles des majuscules?

Dans le même esprit, pourquoi "un millions" ou "un Centimes" ou "Centimes"?

Noter que, puisque l'on parle des fonctions spécifiques Excel 365, une autre solution est proposée ici avec la fonction LET:

https://www.excel-exercice.com/convertir-un-nombre-en-lettres/

Cela étant dit, pourquoi d'une manière plus générale vouloir passer par une telle usine à gaz alors qu'une seule formule simple fait le job à condition d'avoir une deuxième feuille comportant les données et certes quelques calculs simples et qui n'apparaîtra pas à l'impression?
0
FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024 1
10 févr. 2022 à 09:20
Auriez-vous la gentillesse de me transmettre svp un fichier excel avec un cas de conversion utilisant la fonction LET ?
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142 > FOUAD_9000 Messages postés 60 Date d'inscription samedi 4 janvier 2020 Statut Membre Dernière intervention 6 mai 2024
10 févr. 2022 à 09:31
La formule est dans le lien que j'ai cité, tout en bas, à partir des chiffres en A1.
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142 > brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024
10 févr. 2022 à 10:20
Concernant la syntaxe de la fonction LET:

https://support.microsoft.com/fr-fr/office/fonction-let-34842dd8-b92b-4d3f-b325-b8b8f9908999

A propos de ta formule précédente, les 2 dernières lignes ne sont à l'évidence pas interprétées, et c'est assez laborieux de trouver le bug dans une formule aussi complexe.

Il faut commencer par tester cette dernière formule séparément.

Pour autant que je puisse en juger, il me semble qu'il y a un défaut d'imbrication des fonctions SI; quand bien même NBCAR ne vaudrait que 4 que l'on va parcourir tout le fichier, la condition étant négative à chaque fois, mais que a priori ces 2 dernières lignes ne s'exécutent que si NBCAR vaut 9.

Commencer donc par voir ce qu'il se passe dans ce cas, il faudra éventuellement remplacer toutes les formules mais en gardant la même structure de parenthèses par des réponses simples aux SI ("toto", etc) pour vérifier que l'ordre des conditionnelles est bien respecté et que l'on se branche bien à la dernière expression dans tous les cas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
15 févr. 2022 à 13:07
J'ai revu et corrigé les coquilles dans la plage de noms chiffre_100;2;0, supprimé NOMPROPRE qui n'a rien à y faire, corrigé quelques coquilles dans la formule elle-même.

Il en reste au moins sur les conditionnelles conjuguant ou pas euro au pluriel (si supérieur à 2) et centime au singulier (s'il y en a zéro)

Sur la première, il faut remplacer en bas de fichier "& " euros " par &SI(A2>=2;" euros ";"euro ")

J'ai un bug au-dessous de 2 euros que je n'ai pas encore localisé: uneuro cinquante trois

Dans la deuxième, c'est la formule SIERREUR...TROUVE qui est foireuse, je n'ai pas le temps de chercher maintenant.

Et toujours sur le fait qu'il faut valider à chaque fois la formule pour la mettre à jour, je ne sais pas pourquoi, peut-être du fait de sa longueur.

https://www.cjoint.com/c/LBplXGVG3bO
0
Mike-31 Messages postés 18320 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 20 juin 2024 5 086
Modifié le 15 févr. 2022 à 13:47
Bonjour le fil,

je prends la discussion en cours, si tu passes le calcul en automatique, la formule s'actualise.
Fichier/Options/rubrique Formule/cocher Calcul du classeur Automatique, puis enregistrer le fichier

part contre si on saisi 0,1 ou 0,01 la formule retourne euro dix centimes ou euro un centime

si j'ai un moment cet après midi je regarde soit de supprimer euro devant les décimales s'il n'y en a pas, ou afficher 0 euro etc ...
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
15 févr. 2022 à 14:20
Bonjour,

Oui, je suis bête à manger du foin avec une fourche; avec calcul automatique, c'est en effet mieux.

Il n'y a pas que "euro" qui est en cause
0,01 rend euro un centimes, 1,00 un euro zéro centimes, 1000,03 un espace superflu entre mille et euros, idem pour 10000,
100000 nous plante à cent euros zéro centimes
Si je gagne au loto à 10883366,08, espace superflu entre cent et soixante

Rien trouvé d'autre par sondage pour le moment, il y a quand même un peu de taf à corriger tout cela.
0
FOUAD > brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024
15 févr. 2022 à 14:37
Bonjour, merci de vos efforts, j'attends avec grande impatiente cette formule.
0
Mike-31 Messages postés 18320 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 20 juin 2024 5 086
15 févr. 2022 à 14:37
Re,

Ne culpabilise pas, ça arrive a tous de bloquer sur une solution évidente
regarde la formule comme cela qui prends le pluriel des Euros comme des centimes

=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(SI(NBCAR(ENT(A2))<=2;RECHERCHEV(STXT(ENT(A2);1;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A2))=3;RECHERCHEV(GAUCHE(ENT(A2);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);2;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A2))=4;RECHERCHEV(GAUCHE(ENT(A2);1)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A2);2;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);3;3)*1;chiffre_100;2;0);SI(NBCAR(ENT(A2))=5;RECHERCHEV(GAUCHE(ENT(A2);2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A2);3;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);4;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A2))=6;RECHERCHEV(GAUCHE(ENT(A2);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);2;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A2);4;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A2);5;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A2))=7;RECHERCHEV(GAUCHE(ENT(A2);1)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A2);2;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);3;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A2);5;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A2);6;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A2))=8;RECHERCHEV(GAUCHE(ENT(A2);2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A2);3;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);4;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A2);6;1)*1;chiffre_100;2;0)&" cent "&" "&RECHERCHEV(STXT(ENT(A2);7;2)*1;chiffre_100;2;0);SI(NBCAR(ENT(A2))=9;RECHERCHEV(GAUCHE(ENT(A2);1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);2;2)*1;chiffre_100;2;0)&" millions "&RECHERCHEV(STXT(ENT(A2);4;1)*1;chiffre_100;2;0)&" cent "&RECHERCHEV(STXT(ENT(A2);5;2)*1;chiffre_100;2;0)&" mille "&RECHERCHEV(STXT(ENT(A2);7;1)*1;chiffre_100;2;0))&" cent "&RECHERCHEV(STXT(ENT(A2);8;2)*1;chiffre_100;2;0))))))));"zéro cent ";);"un cent ";"cent ");"zéro mille";);"zéro";"");"un mille ";" mille ");"zéro";);"un milion ";" un million ");" mille ";" ")&TEXTE(ENT(A2);"[>1]"" Euros "";[>]"" Euro "";")&SUBSTITUE(RECHERCHEV(SIERREUR(STXT(A2+0,001;TROUVE(",";A2+0,001)+1;2)*1;0);chiffre_100;2;0)&"";"";"")&TEXTE(ENT((A2-ENT(A2))*100);"[>1]"" Centimes "";[>]"" Centime "";")

effectivement je remarque que le code plafonne après 99999,99
pour ma part je regarderai dans la soirée
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
15 févr. 2022 à 15:13
Non, Mike, tu es planté au-dessus de 1000 où il te manque "mille"
0
Mike-31 Messages postés 18320 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 20 juin 2024 5 086
Modifié le 16 févr. 2022 à 18:19
Re,

Pour traiter tous les cas de figure avec la formule initiale, perso j'arrive à saturation des conditionnelles du champ chiffre_100 comme de la formule et bon courage pour intervenir dans cette usine à gaz.
pourquoi ne pas passer avec des formules basiques dans une colonne qui peut être masquée.
Si ça intéresse, je commence par nommer la cellule cible (cellule de saisie de la valeur), dans mon exemple je l'ai nommée tout simplement Cible
ensuite les formules de la plage A2:A94 comme la cellule Cible peuvent être COUPER (déplacées) et la formule s'actualisera automatiquement.

ensuite les cellules D5, D7 ou D9 affichent plusieurs Formats d'affichage à partir de la cellule concaténée A94

https://www.cjoint.com/c/LBqrpz8IsxF
0
Bonjour et merci à tous,

Je connais toutes les options que vous suggérées mais mon souhait est une seule et unique formule. C'est un défi à relever, bon courage.
0
PapyLuc51 Messages postés 4352 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 4 juillet 2024 1 425
17 févr. 2022 à 09:45
Salutations à tous,

Moi j'abandonne.

Bonne continuation
0
Mike-31 Messages postés 18320 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 20 juin 2024 5 086
Modifié le 17 févr. 2022 à 10:50
Re,

alors si c'est un défi, nomme la cellule dans laquelle tu vas saisir ta valeur, pour ma formule la cellule exemple B2 nommée Cible cela évitera de saisir X fois l'adresse de la cellule chiffre et de générer une erreur.
Bien sur le nom Cible pourra après validation être modifié et la formule prendra automatiquement le nouveau nom.

ensuite colle cette formule dans une cellule, mais bon courage pour la suivre

=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";);) 


https://www.cjoint.com/c/LBrjIBwCIxF

0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
17 févr. 2022 à 11:50
Bonjour,

En mode OFF, Fouad a récupéré sur Internet une recette de cuisine truffée de fautes d'orthographe et d'erreurs de fonction.

Comme répété à l'envi, la solution est très simple via une deuxième feuille (ou une zone de données dans la première), et l'est aussi probablement en VBA, j'y suis parfaitement incompétent, mais il ne veut entendre parler ni de l'une ni de l'autre.

De même manière que dans les années 80 les 4 ou 5 sorciers du batch démontraient des choses invraisemblables sans se servir d'aucune utilitaire pour le seul plaisir de les montrer possibles, il y a probablement une solution via une seule formule.

Elle est d'autant plus indigeste qu'elle fait des kilomètres rendant dans la pratique à peu près impossible d'y repérer les erreurs, il faut tout refaire de zéro en testant séparément la formule de chaque ordre de grandeur, un travail de romain.

Si j'ai beaucoup de temps à perdre, je vais relever le défi qui ne sert à rien d'autre que la devise de l'école polytechnique (pour la patrie, les sciences et la gloire); pour l'instant, ça marche jusqu'à 999,99€ dans tous les cas de figure y compris les tordus (moins de 1€, moins de 2€, centime isolé ou absent, absence de chiffre des dizaines par exemple dans 200,83€): il ne reste jamais que 4 étapes à tester et imbriquer pour arriver aux millions, c'est un non sens en termes de temps passé à rendre difficile ce qui ne l'est pas.

Remarquons enfin que Fouad ne fait que réclamer télégraphiquement et de manière répétitive une formule prête à l'emploi sans jamais procéder lui-même à aucune modification ne serait-ce que simplement des coquilles (par exemple "treise" (sic) et autres incohérences de la table) en même temps qu'il prétend en destiner l'usage à des débutants qui seront d'autant plus incapables de maîtriser une formule d'une telle complexité qu'il ne le fait pas lui-même.
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
20 févr. 2022 à 16:14
Bonjour,

Le plus compliqué dans cette affaire, ce sont moins les formules que les règles de grammaire que je synthétise:
-mille est invariable, 80 et 100 ne s'accordent que quand non suivis, le pluriel commence à 2.
-en grammaire traditionnelle, seuls les nombres composés inférieurs à 100 prennent un tiret et quand ils ne se terminent pas par un: dans ce cas, le tiret ne s'applique qu'à 81 et 91, sinon on utilise "et".
-les "recommandations" de 1990 (donc sans valeur normative) proposent de lier tous les numéraux par un trait d'union et élevant une polémique sur le sort de "million" et "milliard" qui ne sont pas des numéraux.

Que le sujet soit monétaire ou pas, seule la lettre en début de titre (Cinquante nuances de Grey) ou de phrase (Trente points ont été marqués par le pivot) prend une majuscule; en matière monétaire on ne se posera usuellement la question dans aucun des cas.

Sur le fond de "l'exercice", la solution la plus simple et à la portée des débutants, puisqu'il est dit que cela figure dans le cahier des charges, est d'utiliser une feuille séparée.

Même si c'est absurde, Mike a relevé le défi de tout faire tenir dans une seule formule; elle est forcément de ce fait complexe et longue puisque la valeur des nombres doit y être intégrée (et aussi parce qu'elle fonctionne sur 14 chiffres significatifs inférieurs à mille milliards d'euros).

Dans la mesure où la formule de départ (et qui ne fonctionnait pas) incluait déjà une table de noms, je propose une alternative avec une formule qui en comporte 3 (pour prendre en compte sans conditionnelle le cas des 1 et des 0) mais que, j'ai la flemme, je n'ai poussée comme celle-ci qu'à 9 chiffres significatifs inférieurs à 10 millions; il est simple d'en rajouter autant qu'on veut avec le modèle.
J'ai fait pour ma part le choix de la règle de grammaire traditionnelle, non pas tant parce qu'elle est plus facile à mettre en oeuvre que parce que je trouve qu'elle fait moins mal aux yeux: là aussi, à chacun le sien.

La lourdeur des formules rend les coquilles à peu près inévitables.
Mike a choisi de s'affranchir de NOMPROPRE et MAJUSCULE, mais dont on vient de voir qu'ils n'avaient rien à y faire...en écrivant tout en majuscules.
Il y a également une coquille au pluriel de cent: huit cents cinquante-quatre au lieu de huit cent cinquante-quatre.

Ceux que le sujet intéresse (pas sûr que, hormis Fouad, il y en ait) voudront bien me signaler les miennes.

https://www.cjoint.com/c/LBupkoGKfMO
0
Bonjour tout le monde,

Merci pour tous vos efforts, je pense que nous sommes sur le bon chemin, bientôt nous trouverons une et une seule formule. Courage.
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
21 févr. 2022 à 09:47
Bonjour,

De quoi nous parles-tu?

La solution mise en oeuvre par Mike en <26> ne met bien en cause qu'une seule formule, je viens d'en proposer une en <28> qui, comme ta formule initiale en <1>, passe par le gestionnaire de noms (avec 3 noms définis au lieu d'un) et toujours sans feuille supplémentaire ni VBA, mais qui elle contrairement à la formule <1> fonctionne.
0
Mike-31 Messages postés 18320 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 20 juin 2024 5 086
21 févr. 2022 à 10:19
Re,

Il serait souhaitable que FOUAD réponde à chaque post s'il veut qu'on avance, comme par exemple à mon post 26 pour permettre de l'améliorer ou réparer un bug.
quand à bientôt nous trouverons une et une seule formule. Courage n'apporte pas d'avancée à la discussion.

Brucine, je viens de jeter un œil à ta proposition post 28, il semblerai que 0,01, 0,1 et 1,01 ne s'affiche pas correctement.
Je ne suis pas allé plus loin.
Si tu remarques un bug sur ma proposition post 26 signale le voir s'il est possible d'y remédier
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
21 févr. 2022 à 10:54
Merci,

0,1 fonctionnait mais, dans ma frénésie à créer des tables de nom supplémentaires, j'avais modifié par inadvertance la table originale chiffre_100 avec pour valeur de 1 "" au lieu de "un" et cette table ne sert que pour les centimes...
0
brucine Messages postés 15603 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 8 juillet 2024 2 142
21 févr. 2022 à 12:12
Re, Mike:

J'ai converti ta formule en minuscules, ça me faisait mal aux yeux.

Tu as un bug dans le pluriel de 80 quand il est suivi: par exemple dans 101080,20, il y a un "s" superflu à vingt et que je ne devrais trouver qu'à 101080,00.

Il me semblait avoir trouvé quelque chose de comparable dans l'expression de cent seulement dans certaines circonstances (on écrit quatre cents euros mais deux cent vingt-quatre euros), j'ai du rêver, je ne retrouve pas.
0
Mike-31 Messages postés 18320 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 20 juin 2024 5 086
21 févr. 2022 à 12:42
Re,

Merci pour ces observations, je me les mets derrière l'oreille pour m'y pencher dès que possible, si tu vois autre chose, n'hésite pas, c'est comme cela qu'on avance même si une telle formule reste indigeste.
0