Convertir des nombres flottants de décimal à binaire

  • Initiateur de la discussion Initiateur de la discussion roud9
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour