VBA - Conversion décimal en Binaire

Novembre 2017




Ces fonctions convertissent un nombre entier en Binaire.

Avec WorksheetFunction

Cette fonction utilise la formule Dec2Bin d'Excel.


Arguments :
N [Obligatoire] (Long) : doit être compris entre -512 et 511 (inclus)
P [Facultatif] (Long) : Nombre de caractères utiles.
Si P est omit, DecToBin2 utilises le minimum de caractères utiles.

Function Dec_Bin(ByVal N As Long, Optional P As Long) As String
    If N > 511 Then
        Dec_Bin = "Erreur : N est trop grand ! (N doit être <= 511)"
    ElseIf N < -512 Then
        Dec_Bin = "Erreur : N est trop petit ! (N doit être >= -512)"
    Else
        If P = 0 Then
            Dec_Bin = WorksheetFunction.Dec2Bin(N)
        Else
            Dec_Bin = WorksheetFunction.Dec2Bin(N, P)
        End If
    End If
End Function

Fonction VBA

Fonction de conversion pure VBA moins restrictive.


Arguments :
N [Obligatoire] (Long) : Doit être un nombre entier positif

Function Dec_En_Bin(ByVal N As Long) As String
Dim strTemp As String
 
    Do While N > 1
        strTemp = N - 2 * (N \ 2) & strTemp
        N = N \ 2
    Loop
    Dec_En_Bin = N & strTemp
End Function

Exemple d'appel

Sub Test()
Dim Nb As Long
    Nb = 50
        Debug.Print Nb & " nous donne (avec worksheetfunction) : " & Dec_Bin(Nb)
        Debug.Print Nb & " nous donne (avec VBA) : " & Dec_En_Bin(Nb)
    Nb = 9000
        Debug.Print Nb & " nous donne (avec worksheetfunction) : " & Dec_Bin(Nb)
        Debug.Print Nb & " nous donne (avec VBA) : " & Dec_En_Bin(Nb)
End Sub

Résultat :
50 nous donne (avec worksheetfunction) : 110010
50 nous donne (avec VBA) : 110010
9000 nous donne (avec worksheetfunction) : Erreur : N est trop grand ! (N doit être <= 511)
9000 nous donne (avec VBA) : 10001100101000

Publié par pijaku.
Ce document intitulé «  VBA - Conversion décimal en Binaire  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.