Convertir des chiffres en lettres avec une unique formule
FOUAD_9000
Messages postés
61
Date d'inscription
Statut
Membre
Dernière intervention
-
Mike-31 Messages postés 18405 Date d'inscription Statut Contributeur Dernière intervention -
Mike-31 Messages postés 18405 Date d'inscription Statut Contributeur Dernière intervention -
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"))
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:
- Convertir chiffre en lettre excel sans macro
- Convertir nombre en lettre excel sans macro - Meilleures réponses
- Convertir chiffre en lettre excel office 365 - Meilleures réponses
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Clavier iphone chiffre et lettre - Guide
- Excel trier par ordre croissant chiffre - Guide
- Chiffre en lettre - Télécharger - Outils professionnels
- Liste déroulante excel - Guide
18 réponses
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
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
Bonjour,
Ou alors une création de fonction par code VBA tiré de cette discussion
https://www.cjoint.com/c/LBkgQsup8B8
Cordialement
Ou alors une création de fonction par code VBA tiré de cette discussion
https://www.cjoint.com/c/LBkgQsup8B8
Cordialement
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
Par contre je ne peux pas vérifier cette formule car il manque la zone traitée par chiffre_100
ç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")
=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")
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
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
Bonjour, merci de votre aimable réponse mais je suis à la recherche d'une seul et unique formule sans vba.
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
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
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?
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?
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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 ...
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 ...
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.
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.
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
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
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
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
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.
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.
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
https://www.cjoint.com/c/LBrjIBwCIxF
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
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.
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.
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
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
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.
Merci pour tous vos efforts, je pense que nous sommes sur le bon chemin, bientôt nous trouverons une et une seule formule. Courage.
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.
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.
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
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
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,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...
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.
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.
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
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
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:
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).