Convertir une décimale en fraction, Excel VBA

Convertir une décimale en fraction, Excel VBA

Voici un exemple de code en VBA pour convertir un nombre décimal en une fraction dans Excel. Ce code va prendre un nombre décimal et essayer de le convertir en une fraction la plus simplifiée possible. 

Étapes pour créer la macro : 

1. Ouvrez l’éditeur VBA : 

  • Dans Excel, appuyez sur Alt + F11 pour ouvrir l’éditeur de VBA. 

2. Ajoutez un nouveau module : 

  • Dans l’éditeur VBA, allez dans Insertion > Module pour créer un nouveau module. 

3. Collez le code suivant dans le module : 

Code VBA pour convertir une décimale en fraction : 

Function DecimalToFraction(ByVal decimalValue As Double) As String 
    Dim tolerance As Double 
    Dim maxDenominator As Long 
    Dim numerator As Long 
    Dim denominator As Long 
    Dim fraction As String 
    ' Définir une tolérance pour la conversion (précision de la fraction) 
    tolerance = 0.0001 
    maxDenominator = 10000  ' Limite sur le dénominateur (vous pouvez ajuster cela) 
    ' Si le nombre est déjà un entier, renvoyez-le directement 
    If decimalValue = Int(decimalValue) Then 
        DecimalToFraction = CStr(Int(decimalValue)) 
        Exit Function 
    End If 
    ' Initialiser le numérateur et le dénominateur 
    numerator = 1 
    denominator = 1 
    Do 
        ' Approximation de la fraction par une fraction continue 
        denominator = denominator + 1 
        numerator = Round(decimalValue * denominator) 
        ' Vérifier si la fraction est suffisamment précise 
        If Abs(decimalValue - numerator / denominator) < tolerance Or denominator > maxDenominator Then 
            Exit Do 
        End If 
    Loop 
    ' Créer la fraction sous forme de texte 
    If numerator Mod denominator = 0 Then 
        ' Si la fraction est entière, juste renvoyer le numérateur 
        fraction = CStr(numerator / denominator) 
    Else 
        fraction = CStr(numerator) & "/" & CStr(denominator) 
    End If 
    ' Retourner la fraction sous forme de texte 
    DecimalToFraction = fraction 
End Function

Explications du code : 

1. La fonction DecimalToFraction : 

  • La fonction prend un paramètre, decimalValue, qui est le nombre décimal que vous voulez convertir en fraction. 

2. Définition de la tolérance et du dénominateur maximum : 

  • La tolérance est utilisée pour déterminer la précision avec laquelle vous voulez que la fraction soit approximée. Vous pouvez ajuster cette valeur selon vos besoins. 
  • Le maxDenominator est une limite sur la taille du dénominateur de la fraction pour éviter que la boucle tourne trop longtemps. 

3. Vérification si le nombre est déjà un entier : 

  • Si le nombre décimal est déjà un entier (c’est-à-dire que la partie entière est égale à la valeur entière du nombre), la fonction renvoie simplement cet entier. 

4. Boucle de conversion : 

  • La boucle Do While essaie d’approximer le nombre décimal en une fraction avec un dénominateur croissant. À chaque itération, le numérateur est calculé comme le produit du nombre décimal et du dénominateur. 
  • Si l’erreur (la différence entre le nombre décimal et la fraction approximée) est inférieure à la tolérance, la boucle s’arrête. 

5. Création de la fraction : 

  • La fraction est formée sous forme de texte. Si le numérateur est divisible par le dénominateur (c’est une fraction entière), alors elle est simplifiée. 

6. Retour de la fraction : 

  • La fonction renvoie la fraction sous forme de texte dans le format numérateur/dénominateur. 

Comment l’utiliser dans Excel : 

  1. Dans votre feuille Excel, entrez un nombre décimal dans une cellule (par exemple, 0.75). 
  2. Dans une autre cellule, entrez la formule suivante : =DecimalToFraction(A1) (Si A1 contient le nombre décimal). 
  3. Vous verrez la fraction correspondante (par exemple, 3/4 pour 0.75). 

Amélioration possible : 

  • Vous pouvez ajuster la tolérance ou la limite sur le dénominateur pour obtenir des fractions plus simples ou plus complexes selon vos besoins. 
  • Le code peut être amélioré pour gérer des cas particuliers (par exemple, les fractions répétitives). 
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x