|
|
salut,
ton probleme vient de ta declaration
Dim rayon As Long
rayon = 340000000 + i * 10000
Exemle
Dim result As Long
result = 100 * 1000
ramene l'erreur pourtant, le résultat (100000) est compatible avec le type long.
Explication : Quand il effectue des opérations arithmétiques entre 2 expressions, VB produit un résultat intermédiaire (avant affectation) qui est du même type que celui de l'expression ayant le type le plus précis.
L'ordre de précision, du plus précis au moins précis est : Byte, Integer, Long, Single, Currency, Double, and Decimal.
Les constantes non suffixées comme 100 ou 10000 sont de type Integer. VB essaie donc de créer un résultat intermédiaire de type Integer pour y stocker 100000, ce qui est en dehors de la plage pour ce type (-32768, +32767).
Pour éviter cela, on peut spécifier que les constantes sont de type Entier Long, en ajoutant le signe & en suffixe :
result = 100& * 1000&
Note : une bonne pratique est de ne pas utiliser de constantes numériques ("nombres magiques") dans le code. On devrait préférer une déclaration explicite d'une constante, de préférence bien typée. Par exemple pour une constante de type Entier Long :
Const Pesanteur As Long = 10
|