J
jmc974
Guest
Bonjour,
Une situation me laisse perplexe sur le tout petit bout de code suivant, et une explication serait vraiment bienvenue !...
Et à mon étonnement, la cellule affiche la valeur négative : -1
J'ai besoin de travailler sur des entiers non signés de 16 bits, mais comme les Integer disponibles sous Excel sont obligatoirement signés, je pensais pouvoir utiliser tranquillement les 16 bits de poids faibles d'un type Long, sans me soucier de passer en négatif par le bit de poids fort qui contrôle le signe.
Alors pourquoi la valeur de cellule traite t-elle ma variable comme un Integer signé, alors que je l'ai définie en Long ???
Et le truc dingue (enfin qui m'échappe...) c'est que lorsque j'attribue à MaVariable la valeur suivante &H10000 en sollicitant donc le 17ème bit, l'affichage de ma cellule redevient cohérent (65536) comme si la cellule était cette fois bien considérée comme un type long...
Comment faire pour que la valeur de ma cellule soit toujours considérée comme un type Long ?
Quelqu'un a t-il une explication, ou encore mieux une solution ?
Une situation me laisse perplexe sur le tout petit bout de code suivant, et une explication serait vraiment bienvenue !...
Code:
Dim MaVariable As Long
MaVariable = &HFFFF ' Attribution de la valeur 65535 à MaVariable
Range("A1").Value = MaVariable ' Affectation de la valeur à une cellule
Et à mon étonnement, la cellule affiche la valeur négative : -1
J'ai besoin de travailler sur des entiers non signés de 16 bits, mais comme les Integer disponibles sous Excel sont obligatoirement signés, je pensais pouvoir utiliser tranquillement les 16 bits de poids faibles d'un type Long, sans me soucier de passer en négatif par le bit de poids fort qui contrôle le signe.
Alors pourquoi la valeur de cellule traite t-elle ma variable comme un Integer signé, alors que je l'ai définie en Long ???
Et le truc dingue (enfin qui m'échappe...) c'est que lorsque j'attribue à MaVariable la valeur suivante &H10000 en sollicitant donc le 17ème bit, l'affichage de ma cellule redevient cohérent (65536) comme si la cellule était cette fois bien considérée comme un type long...
Comment faire pour que la valeur de ma cellule soit toujours considérée comme un type Long ?
Quelqu'un a t-il une explication, ou encore mieux une solution ?