Un programme en langage VBA qui convertit un nombre décimal U da

[Fermé]
Signaler
-
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
-
Bonjour, je cherche un programme en langage VBA qui convertit un nombre décimal U dans une base quelconque B .

Exemple si U = 479 et B = 7 , alors le résultat attendu est (1253)
" et B = 2 alors le résultat attendu est (111011111)
si U = 716836 et B = 16 alors le résultat attendu est ( AF024)

1 réponse

Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 628
Bonjour,

Ce code réalise ce que tu souhaites.
'********************************************************************************
' NAME: DecToBase
'********************************************************************************
' FUNCTION: Converts a base n number to a decimal one. Base can be between 2 and
' 36. Number can be up to 15 digits as a number, longer as a string.
' Outputs a string value.
'********************************************************************************
' AUTHOR: Jeff Jenkins - February 2011
'********************************************************************************
Function DecToBase(ByVal strBaseNumberToConvert As String, ByVal intBase As Integer) As String
'********************************************************************************
' Declare variables
'********************************************************************************
Dim dblRemainder As Double
Dim strRemainderChar As String
Dim dblLeftToDivide As Double
'********************************************************************************
' Initialise variables
'********************************************************************************
dblLeftToDivide = Val(strBaseNumberToConvert)
DecToBase = ""
'********************************************************************************
' Raise error if base 36 or number is greater than 15 digits
'********************************************************************************
If intBase > 36 Or Len(strBaseNumberToConvert) > 15 Then Err.Raise 5
'********************************************************************************
' Loop around building the number converted to base n as we go
'********************************************************************************
While dblLeftToDivide > 0
dblRemainder = dblLeftToDivide - Int(dblLeftToDivide / intBase) * intBase
strRemainderChar = Mid$("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", dblRemainder + 1, 1)
DecToBase = Trim(strRemainderChar) & DecToBase
dblLeftToDivide = Int(dblLeftToDivide / intBase)
Wend
End Function