Convertir des nombres flottants de décimal à binaire

roud9

XLDnaute Nouveau
Bonjour,

J'essaie de convertir des nombres flottants de décimal à binaire sous excel, mais je n'y arrive pas. La fonction DEC2BIN ne convertit que la partie entière (DEC2BIN(15,25) va me donner 1111 au lieu de 1111,01) et je n'en ai pas trouvé d'autres qui me permettrait de faire ce que je veux.

Merci d'avance
 

jp14

XLDnaute Barbatruc
Re : Convertir des nombres flottants de décimal à binaire

Bonjour

Ci dessous un fonction à tester.

Code:
Function conversiondecbin(Valeur As Range) As String
Dim data1 As String
Dim data2 As Single
Dim data3 As String
If Valeur = 0 Or Valeur = 1 Then
    conversiondecbin = Valeur
    Exit Function

End If



data2 = Fix(Valeur.Value)
Do
data1 = (data2 Mod 2) & data1
data2 = Fix(data2 / 2)
If data2 = 0 Then Exit Do
Loop
'partie fractionnaire

data2 = Abs(Valeur.Value - Fix(Valeur.Value))
If data2 = 0 Then
    conversiondecbin = data1
    Exit Function
End If

Do
data3 = data3 & Fix((data2 * 2))
data2 = Abs((data2 * 2) - Fix(data2 * 2))
If data2 = 0 Then Exit Do
Loop
conversiondecbin = data1 & "," & data3
End Function


Fonction avec le choix de la base

Code:
Option Explicit

Function conversiondecbin(Valeur As Range, Base As Range) As String
Dim data1 As String
Dim data2 As Single
Dim data3 As String
If Base.Value > 16 Then
    conversiondecbin = "False"
    Exit Function
End If
If Valeur < Base And Valeur < 10 Then
    conversiondecbin = Valeur
    Exit Function
End If

data2 = Fix(Valeur.Value)
Do
data1 = Valhexa((data2 Mod Base)) & data1
data2 = Fix(data2 / Base)
If data2 = 0 Then Exit Do
Loop
'partie fractionnaire

data2 = Abs(Valeur.Value - Fix(Valeur.Value))
If data2 = 0 Then
    conversiondecbin = data1
    Exit Function
End If

Do
data3 = data3 & Valhexa(Fix((data2 * Base)))
data2 = Abs((data2 * Base) - Fix(data2 * Base))
If data2 = 0 Then Exit Do
Loop
conversiondecbin = data1 & "," & data3

End Function

Private Function Valhexa(Valeur1 As Integer)
Select Case Valeur1
    Case 0 To 9
        Valhexa = Valeur1
    Case 10 To 15
        Valhexa = Chr(55 + Valeur1)
End Select
End Function

JP
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
158

Statistiques des forums

Discussions
312 198
Messages
2 086 143
Membres
103 129
dernier inscrit
Atruc81500