Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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 ?
Re : Vba - Pourquoi la valeur &HFFFF attribuée à un type Long affiche -1 sur une cell
Bonsoir klin89,
Excellent, merci beaucoup, ça faisait un moment que je bloquais sur ce problème !!
Effectivement, le petit "&" à la fin du mot, ça change tout, et l'info m'avait échappé...
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.