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

advilcaps -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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

    0