XL 2016 VBA - Problème de calcul, dépassement de capacité

danielco

XLDnaute Accro
Bonjour,

C'est sans doute simple, mais je ne vois pas... Le code suivant fonctionne :
Code:
R = Int(100000 / 65536)
Mais pas :
VB:
R = Int(100000 / (255 * 255))

Erreur 6 dépassement de capacité. R est défini sans indication de type.

merci par avance.

Daniel
 

fanch55

XLDnaute Barbatruc
Bonjour,
En fait quand on fait la multiplication d'un entier explicite par un entier explicite,
le compilateur évalue les chiffres explicites fournis.
255 est un entier, le résultat devrait être un entier, donc limité à 32768 .
En l’occurrence, l'évaluation peut être effectuée jusqu'à 255*128 , en fait toute multiplication d'un entier explicite par un autre qui ne produirait pas plus de 32768... 🤔

C'est bestial mais c'est comme ça .... :mad:

Pour "contrer" ce processus, rajouter # à la fin d'un des chiffres pour indiquer au compilateur que c'est un chiffre "double" et donc que le résultat devra également être "double" 🥳
r = Int(100000 / (255# * 255))

Vous auriez pu également indiquer
r = Int(100000 / (255 ^ 2)) <-- ce n'est pas une multiplication
i=255: r = Int(100000 / (i * i)) <-- ce n'est pas explicite
i=255: r = Int(100000 / (255 * i)) <-- ce n'est pas explicite

Mais rassurez-vous, le piège surprend tout le monde, même les plus aguerris ... :cool:
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

C'est la même problématique qu'ici....avec explication.

@Phil69970
 

danielco

XLDnaute Accro
Bonjour à tous

C'est la même problématique qu'ici....avec explication.

@Phil69970
OK, merci.
 

Discussions similaires

Réponses
10
Affichages
520

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 167
dernier inscrit
miriame