1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| Option Explicit
Function hexadecimal_en_decimal(chaine_hexa As String)
Dim resultat As Long
Dim i As Integer, position As Integer
Dim longueur As String
resultat = 0
For i = Len(chaine_hexa) To 1 Step -1 ' Depuis i = longueur chaine à i = 1
longueur = Mid(chaine_hexa, i, 1) ' renvoit le (1) caractère à partir de la position i de la chaine (on commence donc par la fin)
position = InStr("0123456789ABCDEF", UCase(longueur)) - 1 ' On prend milieu, on met en majuscule au cas où on aurait écrit abcdef au lieu de ABCDEF,
' On met dans position la position du 1er caractère de milieu dans 0123456789ABCDEF et on retire 1 => on a converti de l'hexa en dec
If position >= 0 Then
'valeur = position * (16 ^ (Len(chaine_hexa) - i)) ' Formule de maths de conversion
resultat = resultat + position * (16 ^ (Len(chaine_hexa) - i))
Else
resultat = 0
i = 0 ' Fin de la boucle en cas d'erreur
End If
Next
hexadecimal_en_decimal = resultat
End Function |
Partager