Excel arrondir à une fraction et recup valeur

Fermé
yop - 8 nov. 2007 à 21:10
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 12 nov. 2007 à 23:47
Bonjour,

Je travaille sous excel, j'aimerais des solutions à mes problèmes sous excel directement ou sous forme de macro.

Je cherche un moyen pour arrondir un chiffre à la fraction (un digit) la plus proche et récupérer le numérateur et le dénominateur de cette fraction, un petit exemple pour etre plus clair:

J'ai par exemple dans A1 le nombre 0.65 et dans A2 je lui demande de me l'afficher en fraction, il me met 2/3 qui est la plus proche. Jusque là tout va bien.
Cependant la valeur de A2 même si il apparait 2/3 n'est pas 0.666666... mais 0.65, donc j'aimerais savoir si il est possible qu'il détecte la fraction la plus proche comme c'est déjà le cas mais qu'il me la mette dans la case A3 sous sa vraie valeur 0.666.. dans mon cas et non pas 0.65.
Ensuite j'aimerais récupérer le numérateur et le dénominateur de cette fraction pour les utiliser dans des calculs (2 et 3 ici). Comment faire?
car le valeur est stockée sous forme 0.666... et non pas 2/3.

Autre question, est-il posssible de changer l'affichage de certaines fractions supérieures à 1, par exemple qu'il m'affiche "9/8" au lieu de
" 1 1/8".

Merci d'avance
A voir également:

16 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
8 nov. 2007 à 22:56
bonjour

En fait tu as utilisé la fonction "Afficher des nombres sous forme de fractions " et ceci veux dire que tu ne change en aucune manière la valeur de stockage.
Cette fonction n'est que de la présentation écran et donc volatile.
2
Oui je sais c'est justement le problème, comment récupérer l'affichage parce que la valeur de la cellule ne change pas mais excel sait trouver la fraction la plus proche puisqu'il l'affiche. Donc est-il possible de récupérer cette info ou comment faire pour la récupérer.

Sinon des idees pour les autres questions?

Merci quand même de ton aide...
1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
9 nov. 2007 à 09:28
Bonjour
Ca semble tout simplement impossible, vu qu'excel ne connait pas la valeur que vous lui demandez, et que, par ailleurs, il considère cette fraction comme un seul type indissociable.Il suffit de retenir une option fraction à deux ou trois chiffres pour se rendre compte de ce qu'est cet affichage;
Et le décompte de caractère gauche / droit ramène au nombre d'origine, ainsi que la yranspositin en format texte..etc...
Mais comme j'ai déja eu beaucoup de surprises dans les propositions de ces forums, je suis votre sujet avec interêt
BCRDLMNT
1
Bonjour,

Effectivement ca parait compliqué mais comme excel affiche cette donnée c'est que quelque part il fait le calcul pour trouver la fraction la plus proche. Ensuite pour reconnaître les deux valeurs il est peut être possible de dire que les deux chaines de caractères sont séparées par un /. Cette focntion étant disponible dans un autre programme fonctionnant en language proche (Outil de dépouillement EDES).

Merci
1

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

Posez votre question
Bonjour,
Fait "Outils" puis "option" puis "calcul"

coche "Calcul avec la précision au format affiché"


Utilsfr
http://utilsfr.new.fr
Applications, Utilitaires, Macros, Fonctions, Formulaires, Graphiques Excel
1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
9 nov. 2007 à 17:42
Bonsoir néné
Encore une fois, (ça devient une habitude),merci néné, pour moi c'est ok, ça devrait marcher pour Yop
Bravo,
BCRDLMNT
1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
9 nov. 2007 à 18:57
bonjour

Ensuite j'aimerais récupérer le numérateur et le dénominateur de cette fraction pour les utiliser dans des calculs (2 et 3 ici). Comment faire?

Dans ton exemple, pour récupérer le 2 :
=CNUM(GAUCHE(DROITE(TEXTE(A1;"#' '?/?");3);1))

 pour récupérer le 3 :
=CNUM(DROITE(TEXTE(A1;"#' '?/?");1))

Cela complète la réponse pour l'arrondi du nombre ci-dessus

Pour condenser l'affichage des fractions supérieures à un tu peux combiner les fonctions ci-dessus mais c'est un peu lourd.
1
Bonsoir,

Ouip ca a l'air de marcher effectivement, merci à toi mais je vais tout de même avoir un soucis je pense parce que je veux récupérer le numérateur et dénominateur de cette fraction hors j'imagine que la valeur de la case est toujours en décimal... deuxièmement cette fonction s'applique à toute la feuille ou à un sélection?

Sinon sais tu ou se trouve cette fonction dans excel 2007 parce que j'aimerais essayer mais je trouve pas sur excel 2007.

merci beaucoup tout de même, Vaucluse avait raison il semble y avoir des pros d'excel sur cette terre
encore merci

a plus
1
Bonjour,
fORMAT DE CELLULE PERSONNALISEE

#?/?

POUR CETE QUESTION
Autre question, est-il posssible de changer l'affichage de certaines fractions supérieures à 1, par exemple qu'il m'affiche "9/8" au lieu de
" 1 1/8".




Utilsfr
http://utilsfr.new.fr
Applications, Utilitaires, Macros, Fonctions, Formulaires, Graphiques Excel
1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
9 nov. 2007 à 19:25
Bonsoir,

Bravo à néné, et à gb pour le ?/?
Pourtant je l'ai cherché ce format...

eric
1
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
10 nov. 2007 à 05:13
Non, rien : Je constate que tout a déjà été dit sur la question ... J'ai donc effacé ce que j'avais rédigé : ça faisait vraiment double emploi ...
Mes excuses !
1
Bonjour,
Merci à tous désolé de pas avoir répondu plus tôt mais j'ai quelques problèmes d'accès à ce site, je sais pas si ca vient de moi où si la popularité de ce forum dépasse les ressources...

Bref merci en particulier à néné et gbinforme pour le #?/? et la reconnaissance num et denom.

Par contre petite remarque chez moi je l'ai ecris comme ca sinon ca marchait pas:

=left(right(TEXT(A1;"#?/?");3);1)

pour récupérer le 3 :
=right(TEXT(A1;"#?/?");1)

Le cnum ne sert à rien chez moi et il n'est meme pas reconnu donc comment se fais ce donc??? Je suis sur excel2007 anglais chez moi mais antérieur là où j'ai besoin de ce code, j'ai essayé sur 2007 pour l'instant ca marche sans le cnum, je verrai lundi sinon.
Du coup je n'ai plus besoin de la fonction calcul comme affichage donc c'est impeccable, ces deux méthodes sont exactement ce que je voulais faire.

Merci encore à vous deux et aussi aux autres sauf à Raymond qui doit se balader en short toute la journée alors qu'on se gèle les miches ici ;-) (joke inside).

Ciao
1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
10 nov. 2007 à 17:55
bonjour

Le cnum ne sert à rien chez moi

Apparemment il ne sert à rien mais en fait c'est pour remettre ton résultat en numérique sinon tu ne pourras pas faire de calculs avec le nombre obtenu qui est considéré comme du texte. En anglais il faut le remplacer par la fonction "VALUE(texte à numériser)".

C'est normal effectivement puisque tu es en version anglaise d'être obligé de traduire toutes tes fonctions mais sauf si tu es bilingue, c'est pas évident de trouver dans l'aide non traduite.

Merci pour ton humour car souvent cela manque et c'est tellement mieux d'ouvrir un message souriant !

Bonne réalisation, et à bientôt peut-être...
1
Bonjour,

oki je vois mais apparement sous 2007 en tout cas ca a l'air de marcher sans, la valeur crée (la case) est sur format général. Je peux multiplier ce nombre récupéré par un autre chiffre sans probleme sans la fonction VALUE() donc a voir si c'est particulier à 2007 ou si ca marche aussi dans les anciennes versions, je confirme lundi avec la version oldschool d'excel et je clos la question ensuite sinon je continuerai à vous harceler... :-) On sait jamais ca peut toujours interesser quelqu'un...

bon dimanche à vous
1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
11 nov. 2007 à 00:59
Bonsoir,

C'est déjà comme ça sur 2003.
Si on fait une opération numérique excel essaie de convertir l'opérande (même si le format est texte, même si c'est une date en texte...) en nombre et travaille avec.

eric
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
12 nov. 2007 à 23:03
bonjour eriiic, et tout le monde

Si on fait une opération numérique excel essaie de convertir l'opérande

Tu as parfaitement raison Excel "essaie" mais comme le résultat d'une fonction texte devrait être du texte cela ne fonctionne pas toujours.

De même si tu tries une plage, tu peux laisser Excel "essayer" de trouver la ligne titre et en général cela fonctionne mais parfois tu retrouves ton titre au milieu de ta plage, mais si tu lui précises "oui" ou "non" tu n'auras pas de surprises.

Soit l'on suit les règles strictement et l'on a peu de surprises, soit l'on tente de simplifier et on cherche les erreurs à l'exécution : chacun a le droit de choisir sa méthode !

Cependant si l'on prend des habitudes claires on évite de se retrouver sur les forums pour demander la correction comme de nombreuses demandes l'attestent.
1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
12 nov. 2007 à 23:47
Bonsoir,

J'expliquai pourquoi ça lui paraissait inutile : excel le fait pour lui (en vba la conversion aurait été obligatoire).
On se sert aussi de cette fonctionnalité lorsqu'on convertit un booléen en numérique par une opération neutre par exemple
De toute façon sur une feuille le #VALEUR est là pour rappeler à l'ordre...
Mais je suis d'accord sur le fond, il vaut mieux être trop rigoureux que pas assez, et j'apprécie tes réponses et ton partage d'expérience.
eric
1