Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent bi naire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalen t Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================== ====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent bi naire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalen t Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================== ====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent bi naire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalen t Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================== ====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalent Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
=========================================== > Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalent Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
=========================================== > Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalent Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
=========================================== > Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Merci JB
Quant à la partie qui consiste à faire l'opération inverse, ce sera plus
facile à faire.
Pierre
"JB" a écrit dans le message de news:
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JBBonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équival ent Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================= =====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Merci JB
Quant à la partie qui consiste à faire l'opération inverse, ce sera plus
facile à faire.
Pierre
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1163834607.166166.145330@h54g2000cwb.googlegroups.com...
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JB
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équival ent Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================= =====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Merci JB
Quant à la partie qui consiste à faire l'opération inverse, ce sera plus
facile à faire.
Pierre
"JB" a écrit dans le message de news:
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JBBonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équival ent Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================= =====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^ (8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Merci JB
Quant à la partie qui consiste à faire l'opération inverse, ce sera plus
facile à faire.
Pierre
"JB" a écrit dans le message de news:
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JBBonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalent
Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
=========================================== > > Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^
(8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Merci JB
Quant à la partie qui consiste à faire l'opération inverse, ce sera plus
facile à faire.
Pierre
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1163834607.166166.145330@h54g2000cwb.googlegroups.com...
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JB
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalent
Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
=========================================== > > Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^
(8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Merci JB
Quant à la partie qui consiste à faire l'opération inverse, ce sera plus
facile à faire.
Pierre
"JB" a écrit dans le message de news:
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JBBonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-dire,
transformer une chaîne de 32 caractères "0" et "1" en son équivalent
Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
=========================================== > > Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1) * (2 ^
(8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour JB
Je suis allé sur le site que tu me propose et j'y ai trouvé ce que je
cherchais sauf que celui qui a écrit le "post" l'a fait dans une syntax e que
je n'arrive pas a comprendre. Il n'y a pas de signe "égal" (=) et il utilise
des caractères qui me semblent curieux.
Voici le code en question. Peut-on réécrire en clair?
'--------------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
Voilà.
Merci pour ton aide.
Pierre
"JB" a écrit dans le message de news:
Dans ce post, il doit y avoir une solution:
http://groups.google.fr/group/microsoft.public.fr.excel/browse_frm/thread /1d9c7f3770203226/122667ca56e44b00?lnk=gst&q=jb+base+36&rnum=1&hl=f r#122667ca56e44b00
JBMerci JB
Quant à la partie qui consiste à faire l'opération inverse, ce se ra plus
facile à faire.
Pierre
"JB" a écrit dans le message de news:
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JBBonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-di re,
transformer une chaîne de 32 caractères "0" et "1" en son équiv alent
Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================= =====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1 ) * (2 ^
(8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour JB
Je suis allé sur le site que tu me propose et j'y ai trouvé ce que je
cherchais sauf que celui qui a écrit le "post" l'a fait dans une syntax e que
je n'arrive pas a comprendre. Il n'y a pas de signe "égal" (=) et il utilise
des caractères qui me semblent curieux.
Voici le code en question. Peut-on réécrire en clair?
'--------------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
Voilà.
Merci pour ton aide.
Pierre
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1163864447.737186.279200@h48g2000cwc.googlegroups.com...
Dans ce post, il doit y avoir une solution:
http://groups.google.fr/group/microsoft.public.fr.excel/browse_frm/thread /1d9c7f3770203226/122667ca56e44b00?lnk=gst&q=jb+base+36&rnum=1&hl=f r#122667ca56e44b00
JB
Merci JB
Quant à la partie qui consiste à faire l'opération inverse, ce se ra plus
facile à faire.
Pierre
"JB" <boisgontier@hotmail.com> a écrit dans le message de news:
1163834607.166166.145330@h54g2000cwb.googlegroups.com...
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JB
Bonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-di re,
transformer une chaîne de 32 caractères "0" et "1" en son équiv alent
Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================= =====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1 ) * (2 ^
(8 -
n)))
Next n
End Select
Binaire = Résultat
End Function
Bonjour JB
Je suis allé sur le site que tu me propose et j'y ai trouvé ce que je
cherchais sauf que celui qui a écrit le "post" l'a fait dans une syntax e que
je n'arrive pas a comprendre. Il n'y a pas de signe "égal" (=) et il utilise
des caractères qui me semblent curieux.
Voici le code en question. Peut-on réécrire en clair?
'--------------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
Voilà.
Merci pour ton aide.
Pierre
"JB" a écrit dans le message de news:
Dans ce post, il doit y avoir une solution:
http://groups.google.fr/group/microsoft.public.fr.excel/browse_frm/thread /1d9c7f3770203226/122667ca56e44b00?lnk=gst&q=jb+base+36&rnum=1&hl=f r#122667ca56e44b00
JBMerci JB
Quant à la partie qui consiste à faire l'opération inverse, ce se ra plus
facile à faire.
Pierre
"JB" a écrit dans le message de news:
Bonjour,
Dans la macro complémentaire Utilitaire Analyse, voir fonction
Decbin()
Sans macro complémentaire:
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()
Dim x As Long
x = 1234567898
y = Base(2, x)
MsgBox y
End Sub
http://cjoint.com/?lsiwpeAaHf
Cordialement JBBonjour à tous,
Je cherche un moyen de transformer un Long Integer en son équivalent
binaire
(chaîne de 32 caractères "0" et "1") et inversement, c'est-à-di re,
transformer une chaîne de 32 caractères "0" et "1" en son équiv alent
Long
Integer.
Le problème que je rencontre est le suivant: je peux y arriver avec un
Integer (8 bits) mais pas plus.
Dépassement de capacité.
Voici le code de ma procédure
======================= =====================
Public Function Binaire(Contenu As Variant, Sens As Boolean)
Dim n As Integer
Dim Résultat As Variant
Select Case Sens
Case True 'Contenu est une valeur Integer
Résultat = ""
For n = 7 To 1 Step -1
Résultat = Résultat & CStr(Abs(Contenu (2 ^ n) = 1))
Contenu = Contenu Mod (2 ^ n)
Next n
Résultat = Résultat & CStr(Abs((Contenu = 1)))
Case False 'Contenu est une chaîne de caractères
Résultat = 0
For n = 8 To 1 Step -1
Résultat = Résultat + Abs((Mid(Contenu, n, 1) = 1 ) * (2 ^
(8 -
n)))
Next n
End Select
Binaire = Résultat
End Function