Page web microsoft à propos de l'Erreur 6 "Dépassement de capacité"

Bjr, mon interrogation porte sur le dernier point de la page web Microsoft (learn.microsoft.com) à propos de l'Erreur 6 Dépassement de capacité (je ne peux pas mettre le lien car il faut 30 postes...):

Que signifie dans la phrase "Vous tentez d'utiliser dans un calcul un nombre converti en entier, mais le résultat est plus grand qu'un entier." "plus grand qu'un entier." ? Je ne comprend pas non plus l'exemple associé:

Dim x As Long
x = 2000 * 365 ' Error: Overflow

Une variable Long est bien un entier allant jusqu'à 2 147 483 647 ? Pour moi, "plus grand qu'un entier" ne veut rien dire. Pouvez vous préciser? Merci par avance :)

Bonjour,

Le dépassement de capacité n'a rien à voir avec le type de variable Long mais plutôt avec le type de variable alloué par défaut (=Integer) à la constante 2000 pour effectuer l'opération.

Ceci fonctionne sans problème :

    Dim x1 As Long, x2 As Integer, x As Long

    x1 = 2000: x2 = 365
    x = x1 * x2

Ceci ne fonctionne pas :

    Dim x1 As Integer, x2 As Integer, x As Long

    x1 = 2000: x2 = 365
    x = x1 * x2

Vous voulez dire qu'il faut au moins une variable Long dans l'expression?

Bonsoir glaborie

La réponse est Oui

La raison en est que les nombres dans l'éditeur VBA sont du texte et doivent d'abord être convertis en type de données.
Et comme les deux valeurs correspondent à un entier, le code VBA compilé génère une erreur.

Il suffit de changer l'un des entiers en un type de données plus grand

Vous pouvez aussi changer la façon de complier

Dim x As Long
x = 2000# * 365#

Le # après le nombre est un convertisseur de type en VBA, il indique au compilateur de convertir le nombre statique en Double

Bonne soirée

Oui, car si les 2 constantes sont de type Integer, Excel doit stocker provisoirement le résultat de l'opération dans une variable intermédiaire de type Integer avant de le mettre dans la variable X de type Long. Ce qui provoque l'erreur car le résultat dépasse la capacité du type Integer.

Si au moins une des deux constantes est de type Long, alors Excel définit par défaut la variable intermédiaire en type Long. C'est visiblement la conclusion à en tirer.

Bonsoir,

ça me rappelle quelque chose....

Deux variables en byte, mais le résultat en Long, et pourtant...

Bonne soirée

Je suis rassuré de voir que je ne suis pas le seul à avoir eu ce problème

Merci à vous pour vos réponses rapides et vos solutions.

Cordialement,

Bonjour Glaborie,

A+

Rechercher des sujets similaires à "page web microsoft propos erreur depassement capacite"