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 :
- Dans votre feuille Excel, entrez un nombre décimal dans une cellule (par exemple, 0.75).
- Dans une autre cellule, entrez la formule suivante :
=DecimalToFraction(A1)
(Si A1 contient le nombre décimal). - 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).