Problème de type!

gag1983 Messages postés 3 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 11 août 2004 - 10 août 2004 à 11:24
gag1983 Messages postés 3 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 11 août 2004 - 11 août 2004 à 13:56
je débute en visual basic sous excel et j'ai un problème URGENT au niveau d'un type
voici le pg
je cherche a transformer un nombre en son code bianire mais je veux un resultat sous 18bit et même s'il y a des zero au début, j'ai besoin de tous les 18digits pour la suite

voici le code:

Function Binaire(Nb As Long) As String
For i = 0 To 18
reste = Nb - 2 * (Nb \ 2)
Nb = CInt(Nb \ 2)
Binaire = reste & Binaire
Next i
End Function

Sub calculbinaire()
Dim Nb As Long
For i = 1 To 11
Nb = Range("I1").Offset(i)
Range("J1").Offset(i) = Binaire(Nb)
Next i
End Sub

il y a un string au niveau dans la fonction pour ne pas que les zéro soient comprimés et supprimés!
le pb c'est que ça marche mais seulement pour les nombres infèrieurs a 65535
au dessus, j'ai un overflow

si vous avez une idée, n'hesitez pas!

3 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 août 2004 à 11:29
Normal !! CINT(NB/2) doit renvoyer un integer, or l'integer a une plage de valeur possible entre -32 768 et 32 767. Donc quand ton Nb (qui est Long) vaut 65535, nb/2 vaut 32767,5 donc tu ne peux pas stocker cela dans un Int !!! Essaye avec CLng au lieu de CInt

Christophe R.
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
10 août 2004 à 14:12
Private Function Binaire(Nb As Long) As String

Dim i As Integer
Dim temp As Long
Dim reste As String

For i = 1 To 18
temp = Nb \ 2
reste = Nb - 2 * temp
Nb = temp
Binaire = reste & Binaire
Next i

End Function

Daniel
0
gag1983 Messages postés 3 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 11 août 2004
11 août 2004 à 13:56
c'est nickel!
merci beaucoup!
0
Rejoignez-nous