Convertir hexadécimal en binaire

Résolu
Bonjour,

Je suis en pleine réflexion sur un code pour transposer un code hexadécimale en binaire ,
j'ai fait un code qui fonctionne mais qui est un peu " Barbare " avez vous une solution de simplification pour qu'il soit moins lourd ?

Lien : http://www.cjoint.com/c/FHjkLt5olxp

Merci

4 réponses

  1. Merci pijaku , comme toujours tu es irréprochable ;)

    Merci beaucoup et à bientôt !
    0
    1. Modérateur
      Salut,

      le fonction HEXBIN() ne fonctionne pas chez toi ?
      0
      1. Modérateur
        Ensuite, ma réponse :
        1- pourquoi 4 caractères? 15AACF7 n'est-il pas un Hexadécimal selon toi?
        Pour pallier à cela, il convient de boucler sur chacun des caractères de ton Hexa, comme ceci :
        For i = 1 To Len(TonHexa) 
            Debug.Print Mid(TonHexa, i, 1)
        Next i

        2- le reste étant identique quelque soit le caractère (If caractere = 0 Then ...), tu peux en faire une Fonction :

            Private Function Car_Hex_En_Bin(Carac As String) As String
                Select Case Carac 
                    Case "0": Car_Hex_En_Bin = "0000" 
                    Case "1": Car_Hex_En_Bin = "0001" 
                    Case "2": Car_Hex_En_Bin = "0010" 
                    Case "3": Car_Hex_En_Bin = "0011" 
                    Case "4": Car_Hex_En_Bin = "0100" 
                    Case "5": Car_Hex_En_Bin = "0101" 
                    Case "6": Car_Hex_En_Bin = "0110" 
                    Case "7": Car_Hex_En_Bin = "0111" 
                    Case "8": Car_Hex_En_Bin = "1000" 
                    Case "9": Car_Hex_En_Bin = "1001" 
                    Case "A": Car_Hex_En_Bin = "1010" 
                    Case "B": Car_Hex_En_Bin = "1011" 
                    Case "C": Car_Hex_En_Bin = "1100" 
                    Case "D": Car_Hex_En_Bin = "1101" 
                    Case "E": Car_Hex_En_Bin = "1110" 
                    Case "F": Car_Hex_En_Bin = "1111" 
                End Select
            End Function


        Ne te reste plus qu'à intégrer cette fonction à ta boucle :

        Sub Test()
        Dim TonHexa As String, Resultat As String, i As Integer
        
            TonHexa = Cells(1, 3).Value
            For i = 1 To Len(TonHexa) 
                Resultat = Resultat &  Car_Hex_En_Bin(Mid(TonHexa, i, 1))
            Next i
            MsgBox Resultat
        End Sub

        0
        1. Modérateur
          Bonjour,

          Tout d'abord, pour que tout le monde puisse suivre, je place ici ton code :
          Sub test()
          
                         
                         a = Mid(Cells(1, 3).Value, 1, 1)  ' la variable a prend la valeur du premier caractère
                         b = Mid(Cells(1, 3).Value, 2, 1)  ' la variable b prend la valeur du deuxieme caractère
                         c = Mid(Cells(1, 3).Value, 3, 1)  ' la variable c prend la valeur du troisieme caractère
                         D = Mid(Cells(1, 3).Value, 4, 1)  ' la variable d prend la valeur du quatrieme caractère
              
          ' le premier caractère
          
          If a = 0 Then
          resultat = resultat & "0000"
          Else
          If a = 1 Then
          resultat = resultat & "0001"
          Else
          If a = 2 Then
          resultat = resultat & "0010"
          Else
          If a = 3 Then
          resultat = resultat & "0011"
          Else
          If a = 4 Then
          resultat = resultat & "0100"
          Else
          If a = 5 Then
          resultat = resultat & "0101"
          Else
          If a = 6 Then
          resultat = resultat & "0110"
          Else
          If a = 7 Then
          resultat = resultat & "0111"
          Else
          If a = 8 Then
          resultat = resultat & "1000"
          Else
          If a = 9 Then
          resultat = resultat & "1001"
          Else
          If a = "A" Then
          resultat = resultat & "1010"
          Else
          If a = "B" Then
          resultat = resultat & "1011"
          Else
          If a = "C" Then
          resultat = resultat & "1100"
          Else
          If a = "D" Then
          resultat = resultat & "1101"
          Else
          If a = "E" Then
          resultat = resultat & "1110"
          Else
          If a = "F" Then
          resultat = resultat & "1111"
          
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          
          ' le second caractère
          
          If b = 0 Then
          resultat = resultat & "0000"
          Else
          If b = 1 Then
          resultat = resultat & "0001"
          Else
          If b = 2 Then
          resultat = resultat & "0010"
          Else
          If b = 3 Then
          resultat = resultat & "0011"
          Else
          If b = 4 Then
          resultat = resultat & "0100"
          Else
          If b = 5 Then
          resultat = resultat & "0101"
          Else
          If b = 6 Then
          resultat = resultat & "0110"
          Else
          If b = 7 Then
          resultat = resultat & "0111"
          Else
          If b = 8 Then
          resultat = resultat & "1000"
          Else
          If b = 9 Then
          resultat = resultat & "1001"
          Else
          If b = "A" Then
          resultat = resultat & "1010"
          Else
          If b = "B" Then
          resultat = resultat & "1011"
          Else
          If b = "C" Then
          resultat = resultat & "1100"
          Else
          If b = "D" Then
          resultat = resultat & "1101"
          Else
          If b = "E" Then
          resultat = resultat & "1110"
          Else
          If b = "F" Then
          resultat = resultat & "1111"
          
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          
          ' le troisième caractère
          
          If c = 0 Then
          resultat = resultat & "0000"
          Else
          If c = 1 Then
          resultat = resultat & "0001"
          Else
          If c = 2 Then
          resultat = resultat & "0010"
          Else
          If c = 3 Then
          resultat = resultat & "0011"
          Else
          If c = 4 Then
          resultat = resultat & "0100"
          Else
          If c = 5 Then
          resultat = resultat & "0101"
          Else
          If c = 6 Then
          resultat = resultat & "0110"
          Else
          If c = 7 Then
          resultat = resultat & "0111"
          Else
          If c = 8 Then
          resultat = resultat & "1000"
          Else
          If c = 9 Then
          resultat = resultat & "1001"
          Else
          If c = "A" Then
          resultat = resultat & "1010"
          Else
          If c = "B" Then
          resultat = resultat & "1011"
          Else
          If c = "C" Then
          resultat = resultat & "1100"
          Else
          If c = "D" Then
          resultat = resultat & "1101"
          Else
          If c = "E" Then
          resultat = resultat & "1110"
          Else
          If c = "F" Then
          resultat = resultat & "1111"
          
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          
          ' le quatrieme caractère
          
          If D = 0 Then
          resultat = resultat & "0000"
          Else
          If D = 1 Then
          resultat = resultat & "0001"
          Else
          If D = 2 Then
          resultat = resultat & "0010"
          Else
          If D = 3 Then
          resultat = resultat & "0011"
          Else
          If D = 4 Then
          resultat = resultat & "0100"
          Else
          If D = 5 Then
          resultat = resultat & "0101"
          Else
          If D = 6 Then
          resultat = resultat & "0110"
          Else
          If D = 7 Then
          resultat = resultat & "0111"
          Else
          If D = 8 Then
          resultat = resultat & "1000"
          Else
          If D = 9 Then
          resultat = resultat & "1001"
          Else
          If D = "A" Then
          resultat = resultat & "1010"
          Else
          If D = "B" Then
          resultat = resultat & "1011"
          Else
          If D = "C" Then
          resultat = resultat & "1100"
          Else
          If D = "D" Then
          resultat = resultat & "1101"
          Else
          If D = "E" Then
          resultat = resultat & "1110"
          Else
          If D = "F" Then
          resultat = resultat & "1111"
          
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          End If
          
          MsgBox (resultat)
          
              
          End Sub
          

          1