Programme VBA pour convertir un nombre décimal en une base

Résolu/Fermé
advilcaps - 20 nov. 2015 à 21:14
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 21 nov. 2015 à 16:50
Bonjour,
Je novice en ce qui concerne l'informatique , je suis en licence d'économie gestion , vu que c'est la première année que j'en fais , j'ai besoin d'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).

Je sais faire le changement de base a la main , mais mon prof nous demande a ce qu'on crée des programmes excel . Simplement j'ai du mal , avec toutes les analyses a priori et a posteriori .


On m'avait proposé ce programme mais j'ai du mal a le mettre en pratique :


'********************************************************************************
' 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

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 nov. 2015 à 07:31
Bonjour,
...mais j'ai du mal a le mettre en pratique...

Que veux-tu dire par ces mots ?
Je veux ne pas croire que tu veux dire que tu ne sais pas quoi faire pour appeler une fonction et récupérer ce qu'elle retourne ...
Si tu es vraiment dans ce cas, ouvre donc ton aide VBA à la rubrique Écriture d'une procédure Function. Tu y trouveras un exemple d'appel de fonction et de récupération de ce qu'elle retourne.
(Il s'agit là de la connaissance des rudiments-mêmes).

0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 nov. 2015 à 08:48
0
Puisque c'est écrit " si vous avez le meme probleme veuillez créer une nouvelle discussion " . Merci quand meme je supprimerais le post .
0
Ecoutez a par les codifications a la main , on a jamais fait de programme sur l'ordinateur donc je suis un peu perdus , et c'est pour cela que j'ai dis cette phrase là . Mais bon merci quand meme j'essaie de me debrouiller seule .
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 nov. 2015 à 16:37
Ah ? Hé bien ===>>>
Montre-nous donc (après avoir relu mon message précédent et la rubrique de l'aide VBA que je t'ai indiquée) quelles instructions tu "codifierais à la main" pour appeler ta fonction et récupérer ce qu'elle retourne ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vous savez quoi , je vais pas m'etaler plus a la base j'etais venus la pour avoir de l'aide mais pas pour ouvrir de débat futil . Donc sur ce bye , je ferais mes affaires seule .
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 21/11/2015 à 16:54
Je ferme donc cette discussion.
Et je la mets par ailleurs en RESOLU car le code de la fonction montrée est la solution adéquate, parfaitement exploitable par tout DEVELOPPEUR (1)., même débutant.
(1) : Rappel : ce forum est un forum de développeurs.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Rejoignez-nous