Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

Conversion Décimale/binaire

Ces deux fonctions permettent de transformer un nombre décimal en chaîne de caractère binaire, et l'autre permet de transformer une chaîne de caractère binaire en nombre décimal

Cette procédure Test sert simplement à montrer l'utiolisation des deux fonctions

Sub Test()
  MsgBox BinaireVersDecimal("00100011")
  MsgBox DecimalVersBinaire(224)
End Sub

Fonction permettant de convertir une chaîne texte binaire vers un nombre décimal :

Function BinaireVersDecimal(ChaineBinaire As String) As Long
  Dim LongueurChaine As Long, Parcourir As Long
  Dim Resultat As Double, LongueurChaine2 As Double
  Dim ChaineTemporaire As String
  
  LongueurChaine = Len(ChaineBinaire)
  ChaineTemporaire = StrReverse(ChaineBinaire)
  LongueurChaine2 = 1
  
  For Parcourir = 1 To LongueurChaine
    Resultat = Resultat + CLng(Mid$(ChaineTemporaire, Parcourir, 1)) * LongueurChaine2
    LongueurChaine2 = LongueurChaine2 * 2
  Next Parcourir
  
  If Resultat > 2147483647 Then ' Négatifs
    BinaireVersDecimal = Resultat - 4294967295#
  Else
    BinaireVersDecimal = Resultat
  End If
End Function

Fonction permettant de convertir un nombre décimal binaire vers une chaîne texte:

Function DecimalVersBinaire(NombreDecimal As Long) As String
  Dim Resultat As String
  Dim LeDecimal As Long, TraiteNegatif As Long
  
  If NombreDecimal < 0 Then TraiteNegatif = 1 Else TraiteNegatif = 0
  
  LeDecimal = Abs(NombreDecimal)
  Resultat = ""
  
  Do While LeDecimal <> 0
    Resultat = (LeDecimal + TraiteNegatif) Mod 2 & Resultat
    LeDecimal = LeDecimal \ 2
  Loop
  
   DecimalVersBinaire = Right$(String$(10, CStr(TraiteNegatif)) & Resultat, 10)
End Function

Les chiffres 10 inddiqués en rouge représentent la liongueur de la chaîne binaire renvoyée. Si on voulait un retour sur 15 bits, il faudrait remplacer 10 par 15