OVH Cloud OVH Cloud

Conversion d'un nombre en hexadécimal

7 réponses
Avatar
Julien PHAM
Bonjour,

Comment faire dans Excel pour convertir un nombre dans une autre base,
comme par exemple en Hexa. Exemple : j'ai dans une cellule la valeur 255
et je voudrais que ça me sorte FF à la place.

Merci

--
Le site du MIN de NICE, fleurs, produits alimentaires, ...
http://www.mindenice.fr/

7 réponses

Avatar
Julien PHAM
Le Wed, 13 Dec 2006 16:24:24 +0100, Julien PHAM
a écrit:

Bonjour,

Comment faire dans Excel pour convertir un nombre dans une autre base,
comme par exemple en Hexa. Exemple : j'ai dans une cellule la valeur 255
et je voudrais que ça me sorte FF à la place.

Merci



Bon j'ai trouvé, en rajoutant l'outil Analyse. Par contre maintenant je me
demande s'il y a des moyens de faire des conversions de n'importe quelle
base vers n'importe quelle base, par exemple je voudrais convertir une
base 10 en base 20, des trucs comme ça :)

Merci


--
Le site du MIN de NICE, fleurs, produits alimentaires, ...
http://www.mindenice.fr/

Avatar
Daniel
Bonjour.
Utilise DECHEX pour l'hexadécimal, tu as aussi DECBIN et DECOCT pour le
binaire et l'octal respectivement (ceux qui ont utilisé cette dernière
fonction ont gagné la fonction BAHTEXT).
Cordialement.
Daniel
"Julien PHAM" a écrit dans le message de news:

Bonjour,

Comment faire dans Excel pour convertir un nombre dans une autre base,
comme par exemple en Hexa. Exemple : j'ai dans une cellule la valeur 255
et je voudrais que ça me sorte FF à la place.

Merci

--
Le site du MIN de NICE, fleurs, produits alimentaires, ...
http://www.mindenice.fr/


Avatar
Julien PHAM
Le Wed, 13 Dec 2006 16:32:21 +0100, Daniel a
écrit:

Bonjour.
Utilise DECHEX pour l'hexadécimal, tu as aussi DECBIN et DECOCT pour le
binaire et l'octal respectivement (ceux qui ont utilisé cette dernière
fonction ont gagné la fonction BAHTEXT).
Cordialement.


Merci. Et si je veux une autre base ? J'ai entendu parler de la fonction
BASE() qui permet de convertir un nombre de la base 10 en n'importe quelle
base jusqu'à 36, mais je ne trouve pas cette fonction. Elle est censée se
trouver dans un fichier ADDINFNS.XLA, mais inconnu au bataillon. Une idée ?

L'idée c'est que j'ai besoin de pouvoir convertir un nombre allant jusqu'à
999 en une suite de caractères ne dépassant pas deux caractères.

Merci

Avatar
Daniel
Voila une macro fournie par MS :
http://support.microsoft.com/kb/135635/en-us
si tu ne lis pas l'anglais, remplace en-us par fr (avec tous les risques de
la traduction automatique)
Daniel
"Julien PHAM" a écrit dans le message de news:

Le Wed, 13 Dec 2006 16:32:21 +0100, Daniel a
écrit:

Bonjour.
Utilise DECHEX pour l'hexadécimal, tu as aussi DECBIN et DECOCT pour le
binaire et l'octal respectivement (ceux qui ont utilisé cette dernière
fonction ont gagné la fonction BAHTEXT).
Cordialement.


Merci. Et si je veux une autre base ? J'ai entendu parler de la fonction
BASE() qui permet de convertir un nombre de la base 10 en n'importe quelle
base jusqu'à 36, mais je ne trouve pas cette fonction. Elle est censée se
trouver dans un fichier ADDINFNS.XLA, mais inconnu au bataillon. Une idée
?

L'idée c'est que j'ai besoin de pouvoir convertir un nombre allant jusqu'à
999 en une suite de caractères ne dépassant pas deux caractères.

Merci



Avatar
JB
Bonsoir,

Conversion base 10 en Base n:

http://groups.google.fr/group/microsoft.public.fr.excel/browse_frm/thread/1 d9c7f3770203226/122667ca56e44b00?lnk=gst&q=jb+base+36&rnum=1&hl=fr# 122667ca56e44b00

http://cjoint.com/?mnuVbGejEj

Function Base(b, n)
Do While n >= b
result = Mid("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", IIf(n Mod b >
0, (n Mod b) + 1, 1), 1) & result
n = n b
Loop
Base = Mid("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", IIf(n Mod b > 0,
(n Mod b) + 1, 1), 1) & result
End Function

Sub essai()
x = 73
MsgBox Base(36, x)
End Sub

JB

Le Wed, 13 Dec 2006 16:24:24 +0100, Julien PHAM
a écrit:

Bonjour,

Comment faire dans Excel pour convertir un nombre dans une autre base,
comme par exemple en Hexa. Exemple : j'ai dans une cellule la valeur 255
et je voudrais que ça me sorte FF à la place.

Merci



Bon j'ai trouvé, en rajoutant l'outil Analyse. Par contre maintenant je me
demande s'il y a des moyens de faire des conversions de n'importe quelle
base vers n'importe quelle base, par exemple je voudrais convertir une
base 10 en base 20, des trucs comme ça :)

Merci


--
Le site du MIN de NICE, fleurs, produits alimentaires, ...
http://www.mindenice.fr/



Avatar
Julien PHAM
Le Wed, 13 Dec 2006 17:20:08 +0100, Daniel a
écrit:

Voila une macro fournie par MS :
http://support.microsoft.com/kb/135635/en-us
si tu ne lis pas l'anglais, remplace en-us par fr (avec tous les risques
de
la traduction automatique)


Merci. C'est intéressant mais la fonction demande à être améliorée, parce
que si la base est supérieure à 10, ça ne marche pas, en fait il faudrait
transformer la valeur résultante par une suite de lettres/chiffres.

Exemple, avec cette fonction si je demande BaseConv(255,16), je devrai
obtenir FF, or ça me sort 1515. Il faudrait donc que si le résultat de
chaque conversion soit supérieur ou égal à 9, il me mette une lettre à la
place. Donc faut que je cherche des fonctions permettant d'afficher une
lettre en utilisant leur code ascii, et vice versa...

--
Le site du MIN de NICE, fleurs, produits alimentaires, ...
http://www.mindenice.fr/

Avatar
Julien PHAM
Le Wed, 13 Dec 2006 17:20:08 +0100, Daniel a
écrit:

Voila une macro fournie par MS :
http://support.microsoft.com/kb/135635/en-us
si tu ne lis pas l'anglais, remplace en-us par fr (avec tous les risques
de
la traduction automatique)


Voilà, j'ai modifié la fonction, et elle donne :
Function baseconv(InputNum, BaseNum)

Dim quotient, remainder As Single
Dim answer As String
quotient = InputNum ' Set quotient to number to convert.
remainder = InputNum ' Set remainder to number to convert.
answer = ""

If BaseNum >= 1 And BaseNum <= 36 Then
Do While quotient <> 0 ' Loop while quotient is not zero.

' Store the remainder of the quotient divided by base number
in a
' variable called remainder.
remainder = quotient Mod BaseNum

' Reset quotient variable to the integer value of the quotient
' divided by base number.
quotient = Int(quotient / BaseNum)

' Reset answer to contain remainder and the previous answer.
' answer = remainder & answer
If (remainder >= 10) Then
answer = Chr(remainder - 10 + 65) & answer
Else
answer = remainder & answer
End If

Loop
Else
answer = "#VALEUR!"
End If

baseconv = answer ' Convert answer variable to a number.

End Function


En même temps elle vérifie que la base à convertir est comprise entre 1 et
36, car en dehors des ces zones ça ne peut pas marcher...