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.