gag1983
Messages postés3Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention11 août 2004
-
10 août 2004 à 11:24
gag1983
Messages postés3Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention11 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
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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