Formatage de cellules sous forme de fraction

bonsoir cher membre du forum

j'ai de difficulté de formater les cellules pour que les contenu soit sous forme de fraction

au faite je voulais que toute les valeurs soit sous forme de fraction; exemple 5/5; 3/3; 0/4

que ça ne les calcule pas

veillez m'aider

merci d'avance

voici le fichier

19essai-classe.xlsm (31.01 Ko)

Bonjour,

précise ton problème, je ne vois que des fractions moi ?!?

image

Ceci dit, un format de fraction doit commencer par une espace " " que je ne vois pas dans ton format personnalisé.
Peut-être que ça n'est plus nécessaire sur les dernières versions qui expliquerait que j'ai ça et pas toi (?)
eric

Non: mon probleme est que je veux avoir les fractions même si le numérateur et dénominateur sont identique 0/8; 7/5; 5/5

et en me donnant aussi la possibilité de mettre n'importe quelle fraction sans prédéfinir

merci à vous

Bonjour,

Ca me semble assez compliqué ce que vous voulez. Excel a du mal avec les fractions comme nous les écrivons en France.

Je vous propose l'approche VBA suivante, l'objectif est de trouver un dénominateur (le + petit) et de changer le format de la cellule en question pour l'afficher sur ce dénominateur.

Attention, ne fonctionne pas avec la saisie directe du type "4/5" puisque Excel va d'abord vouloir convertir en Date. Par contre "=4/5" (ou autre formule) alors vous aurez le bon résultat.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.CountLarge > 1 Then Exit Sub
  If Target.Value <= 0 Then Exit Sub
  If IsDate(Target.Value) Then Exit Sub
  Target.NumberFormat = "#/" & GetDenominator(Evaluate(Target.Value2))
End Sub

Private Function GetDenominator(ByVal decimalValue As Double) As Long
  Dim maxDenominator As Long: maxDenominator = 100
  Dim epsilon As Double: epsilon = 0.00000001

  Dim i As Long
  For i = 1 To maxDenominator
    If Abs(decimalValue - Round(decimalValue * i) / i) < epsilon Then
      GetDenominator = i
      Exit Function
    End If
  Next i
  If i = maxDenominator Then GetDenominator = 1
End Function

A insérer dans le code de la feuille en question.

ok je vais le faire

SVP je sais comment inserer les code vba pour que ça marche

au faite mon problème maintenant est que quand je met 8/8 ça me retourne 1 ou 1/1 ou encore lorsque je calcule les cellules contenant les valeurs 0/5 ça me met erreur

voici encore le fichier

merci toujours pour votre promptitudes

8essai-classe.xlsm (33.63 Ko)

SVP je sais comment inserer les code vba pour que ça marche

au faite mon problème maintenant est que quand je met 8/8 ça me retourne 1 ou 1/1 ou encore lorsque je calcule les cellules contenant les valeurs 0/5 ça me met erreur

voici encore le fichier

merci toujours pour votre promptitudes

8essai-classe.xlsm (33.63 Ko)

Attention, ne fonctionne pas avec la saisie directe du type "4/5" puisque Excel va d'abord vouloir convertir en Date. Par contre "=4/5" (ou autre formule) alors vous aurez le bon résultat.

Je pense que vous n'avez pas bien lu ce que j'écrivais. Cette solution VBA a aussi ses limites.

bonjour Sylva nus, salut saboh12617,

s'il y a une manière pour savoir le nominateur, il y a des possibilités ... . Ici, j'utilise le commentaire de la cellule pour la plage jaune. S'il y a un dénominateur par colonne ou ligne ou autre, vous pouvez utiliser cet info. Maintenant, vous tapez le nominateur, donc par exemple 6 pour atteindre 6/7 (avec un dénominateur 7 prévu dans le commentaire)

mais, c'est une petite usine à gaz (dangeureux), cette convertion d'un integer vers une fraction

11essai-classe-1.xlsm (39.38 Ko)

Bonjour à tous,

si tu saisis les fractions et non le résultat d'un calcul autant mettre les cellules au format texte qu'elles restent inchangées.
eric

Rechercher des sujets similaires à "formatage forme fraction"