Public Function DecomposeBase2(dTarget As Double, Optional ByVal detail As Boolean) As String
' usage :
'=DecomposeBase2(A1) ===> format binaire
' 2629====> 101001000101
'=DecomposeBase2(A2;VRAI) ===> détail puissances de 2
'22654====> 16384 +4096 +2048 +64 +32 +16 +8 +4 +2
Const sBASE As String = "01"
Dim sOut As String, x As Integer, i As Integer, temp
Dim Residu As Double
'--------------
sOut = ""
dTarget = Abs(dTarget)
'--------------
Do
Residu = dTarget - (2 * Int((dTarget / 2)))
sOut = Mid$(sBASE, Residu + 1, 1) & sOut
dTarget = Int(dTarget / 2)
Loop While (dTarget > 0)
'----------------------------------
If detail = True Then
temp = ""
x = Len(sOut)
For i = 0 To Len(sOut) - 1
'------ valeur puissance de 2 :32768 +4096 +128 +16 +4 +2
If Mid(sOut, x - i, 1) = 1 Then temp = " +" & (2 ^ i) & temp
'-------puissance de 2 : 2^13 +2^12 +2^11 +2^10 +2^7 +2^5 +2^1
' ----If Mid(sOut, x - i, 1) = 1 Then temp = " +2^" & i & temp
Next
DecomposeBase2 = Mid(temp, 3, 9 ^ 9)
Else
'--------- valeur binaire : 11101101001
DecomposeBase2 = sOut
End If
'--------------
End Function