Programme VBA pour convertir un nombre décimal en une base [Résolu/Fermé]

advilcaps - 20 nov. 2015 à 21:14 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 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
Afficher la suite 

7 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 21 nov. 2015 à 07:31
0
Utile
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).

cs_Le Pivert 5144 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 19 mai 2018 Dernière intervention - 21 nov. 2015 à 08:48
Puisque c'est écrit " si vous avez le meme probleme veuillez créer une nouvelle discussion " . Merci quand meme je supprimerais le post .
Advilcapsv - 21 nov. 2015 à 15:03
0
Utile
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 .
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 21 nov. 2015 à 16:37
0
Utile
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 ...
Advilcapsv - 21 nov. 2015 à 16:44
0
Utile
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 .
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 21/11/2015 à 16:54
0
Utile
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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.