OVH Cloud OVH Cloud

Base 36

6 réponses
Avatar
Lulu la nantaise
Bonjour,
Je souhaite convertir un nombre en base 36 (0,1,2 ... A,B, ... Z) dans une
macro.
Quelqu'un peut il m'aider, j'ai du mal !!!
Merci beaucoup

6 réponses

Avatar
SL
Bonsoir

une possibilité pour des nombres de 0 à 36^3-1F655=ZZZ en base 36 :
ÊR(48+MOD($A$1/36^2;36)+7*(MOD($A$1/36^2;36)>9))&CAR(48+MOD($A$1/36;36)+7*(MOD($A$1/36;36)>9))&CAR(48+MOD($A$1;36)+7*(MOD($A$1;36)>9))

rajouter un CAR(48+MOD($A$1/36^3;36)+7*(MOD($A$1/36^3;36)>9)) pour aller
jusqu'à 36^4-1 = 1 679 615 = ZZZZ

Stéphane

"Lulu la nantaise" a écrit dans le message de
news: %
Bonjour,
Je souhaite convertir un nombre en base 36 (0,1,2 ... A,B, ... Z) dans une
macro.
Quelqu'un peut il m'aider, j'ai du mal !!!
Merci beaucoup




Avatar
JB
Bonjour,

http://cjoint.com/?bzwnXXsNyv

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

Cordialement JB
Avatar
Modeste
Bonsour® JB avec ferveur ;o))) vous nous disiez :
n = n b



;o))) Ah !! cet operateur si méconnu ...

pour enrichir le fil, et rendre l'opération réversible et multibase :

'--------------convertir base x vers décimal
Function B2D(target, base As Integer)
Application.Volatile
Xbase = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nbcar = Len(target)
rang = 0
XD = 0
For i = nbcar To 1 Step -1
pos = InStr(Xbase, UCase(Mid(target, i, 1))) - 1
If pos > base Then B2D = "?# base " & base: Exit Function
XD = XD + (pos * (base ^ rang))
rang = rang + 1
Next
B2D = XD
End Function

'--------------convertir décimal vers base x
Function D2B(target As Double, base As Integer)
Application.Volatile
Xbase = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
DX = ""
Do While target >= base
DX = Mid(Xbase, IIf(target Mod base > 0, (target Mod base) + 1, 1), 1) &
DX
target = target base
Loop
D2B = Mid(Xbase, IIf(target Mod base > 0, (target Mod base) + 1, 1), 1) &
DX
End Function

'--------------------convertir base x vers base y
Function B2B(target, base1 As Integer, base2 As Integer)
Application.Volatile
B2B = D2B(B2D(target, base1), base2)
End Function




--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
Lulu la nantaise
Merci à tous, je ne savias pas que ma demande allait déclencher tant intérêt
!!!!
Merci

"Modeste" a écrit dans le message de
news:
Bonsour® JB avec ferveur ;o))) vous nous disiez :
n = n b



;o))) Ah !! cet operateur si méconnu ...

pour enrichir le fil, et rendre l'opération réversible et multibase :

'--------------convertir base x vers décimal
Function B2D(target, base As Integer)
Application.Volatile
Xbase = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nbcar = Len(target)
rang = 0
XD = 0
For i = nbcar To 1 Step -1
pos = InStr(Xbase, UCase(Mid(target, i, 1))) - 1
If pos > base Then B2D = "?# base " & base: Exit Function
XD = XD + (pos * (base ^ rang))
rang = rang + 1
Next
B2D = XD
End Function

'--------------convertir décimal vers base x
Function D2B(target As Double, base As Integer)
Application.Volatile
Xbase = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
DX = ""
Do While target >= base
DX = Mid(Xbase, IIf(target Mod base > 0, (target Mod base) + 1, 1), 1)
&

DX
target = target base
Loop
D2B = Mid(Xbase, IIf(target Mod base > 0, (target Mod base) + 1, 1), 1)
&

DX
End Function

'--------------------convertir base x vers base y
Function B2B(target, base1 As Integer, base2 As Integer)
Application.Volatile
B2B = D2B(B2D(target, base1), base2)
End Function




--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr





Avatar
Lulu la nantaise
Merci mais c'est quoi n"" b?
Lulu
"Modeste" a écrit dans le message de
news:
Bonsour® JB avec ferveur ;o))) vous nous disiez :
n = n b



;o))) Ah !! cet operateur si méconnu ...

pour enrichir le fil, et rendre l'opération réversible et multibase :

'--------------convertir base x vers décimal
Function B2D(target, base As Integer)
Application.Volatile
Xbase = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nbcar = Len(target)
rang = 0
XD = 0
For i = nbcar To 1 Step -1
pos = InStr(Xbase, UCase(Mid(target, i, 1))) - 1
If pos > base Then B2D = "?# base " & base: Exit Function
XD = XD + (pos * (base ^ rang))
rang = rang + 1
Next
B2D = XD
End Function

'--------------convertir décimal vers base x
Function D2B(target As Double, base As Integer)
Application.Volatile
Xbase = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
DX = ""
Do While target >= base
DX = Mid(Xbase, IIf(target Mod base > 0, (target Mod base) + 1, 1), 1)
&

DX
target = target base
Loop
D2B = Mid(Xbase, IIf(target Mod base > 0, (target Mod base) + 1, 1), 1)
&

DX
End Function

'--------------------convertir base x vers base y
Function B2B(target, base1 As Integer, base2 As Integer)
Application.Volatile
B2B = D2B(B2D(target, base1), base2)
End Function




--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr





Avatar
Modeste
Bonsour® Lulu la nantaise avec ferveur ;o))) vous nous disiez :

Merci mais c'est quoi n"" b?


l'opérateur "" correspondant à la fonction Quotient (Macro-complémentaire
VBA)
donne la partie entiere de la division A/B.

cet opérateur "" utilisable uniquement sous VBA est de fait tombé dans
l'oubli ;o)))

en feuille de calcul on utilise
= ENT(A/B)
ou encore
=TRONQUE(A/B;0)


--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr