Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur d'exécution '6' : Dépassement de capacité

8 réponses
Avatar
Turgeon
J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le fait
que le résultat est compris dans les valeurs limites. La variable double a
comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.

8 réponses

Avatar
Gilles Le Bret
bonsoir

le Vba (comme le vb6) n'a jamais été un langage calculant avec précision,
donc à utiliser avec discernement pour des calculs un tant soit peu
scientifiques.
un exemple : va dans la fenêtre de débogage et tape
?int(0.29*100)/100
puis exécute
!!!
bien souvent dans des tests 1 <> 1 à cause de pb de décimales trianates et
cachées
mais je n'ai pas répondu à ton problème.
est-ce que le pb est le même en single ?

Gilles Le Bret



"Turgeon" a écrit dans le message de
news:
J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le fait
que le résultat est compris dans les valeurs limites. La variable double a
comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.


Avatar
michdenis
Bonjour Turgeon,

Donne un exemple de ton code qui retourne un message d'erreur

Ceci ne provoque aucune erreur de dépassement.
'----------------------
Sub test()
Dim X As Double
X = 0.00000105
End Sub
'----------------------



"Turgeon" a écrit dans le message de groupe de
discussion :
J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le fait
que le résultat est compris dans les valeurs limites. La variable double a
comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.
Avatar
Turgeon
Voici le code original:

For n = 100 To 499
termeBx = termeBx * (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
Next n

J'ai modifié pour ceci et ça semble fonctionné:

For n = 100 To 499
essai = (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
termeBx = termeBx * essai
Next n

Je n'ai pas compris mais ça fonctionne.

Merci !
"michdenis" a écrit :

Bonjour Turgeon,

Donne un exemple de ton code qui retourne un message d'erreur

Ceci ne provoque aucune erreur de dépassement.
'----------------------
Sub test()
Dim X As Double
X = 0.00000105
End Sub
'----------------------



"Turgeon" a écrit dans le message de groupe de
discussion :
J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le fait
que le résultat est compris dans les valeurs limites. La variable double a
comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.



Avatar
Gilles Le Bret
normalement chaque variable doit être dimensionnée
n est integer mais 1.5+n n'est pas integer

envoie le code avec les lignes de dimensionnement pour comprendre ton pb
quand les variables ne sont pas dimensionnées elles sont en "variant" et de
temps en temps il y a des surprises dans les lignes de calcul

Gilles Le Bret




"Turgeon" a écrit dans le message de
news:
Voici le code original:

For n = 100 To 499
termeBx = termeBx * (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
Next n

J'ai modifié pour ceci et ça semble fonctionné:

For n = 100 To 499
essai = (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
termeBx = termeBx * essai
Next n

Je n'ai pas compris mais ça fonctionne.

Merci !
"michdenis" a écrit :

Bonjour Turgeon,

Donne un exemple de ton code qui retourne un message d'erreur

Ceci ne provoque aucune erreur de dépassement.
'----------------------
Sub test()
Dim X As Double
X = 0.00000105
End Sub
'----------------------



"Turgeon" a écrit dans le message de
groupe de
discussion :
J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le
fait
que le résultat est compris dans les valeurs limites. La variable double
a
comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.





Avatar
Turgeon
Bonjour Gilles,

J'utilise la commande

option explicit

alors je dois obligatoirement déclaré mes variables. Je peux te conmfirmer
que "n" a été déclaré comme Integer. Merci pour l'attention que tu portes à
mon problème. Je suis d'accord avec toi : Excel n'est pas fait pour des
calculs scientifique. Il n'y a pas de nombre complexe.

"Gilles Le Bret" a écrit :

normalement chaque variable doit être dimensionnée
n est integer mais 1.5+n n'est pas integer

envoie le code avec les lignes de dimensionnement pour comprendre ton pb
quand les variables ne sont pas dimensionnées elles sont en "variant" et de
temps en temps il y a des surprises dans les lignes de calcul

Gilles Le Bret




"Turgeon" a écrit dans le message de
news:
> Voici le code original:
>
> For n = 100 To 499
> termeBx = termeBx * (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
> Next n
>
> J'ai modifié pour ceci et ça semble fonctionné:
>
> For n = 100 To 499
> essai = (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
> termeBx = termeBx * essai
> Next n
>
> Je n'ai pas compris mais ça fonctionne.
>
> Merci !
> "michdenis" a écrit :
>
>> Bonjour Turgeon,
>>
>> Donne un exemple de ton code qui retourne un message d'erreur
>>
>> Ceci ne provoque aucune erreur de dépassement.
>> '----------------------
>> Sub test()
>> Dim X As Double
>> X = 0.00000105
>> End Sub
>> '----------------------
>>
>>
>>
>> "Turgeon" a écrit dans le message de
>> groupe de
>> discussion :
>> J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le
>> fait
>> que le résultat est compris dans les valeurs limites. La variable double
>> a
>> comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.
>>





Avatar
michdenis
Si tu utilises une structure comme ceci,

Il n'y a pas de raison d'avoir un message d'erreur ...

'--------------------------
Sub test()
Dim N As Integer, X As Double
Dim Z As Double, G As Double

N = 25
Z = 1.045212157
X = 0.00000105
G = Z * X * N
End Sub
'--------------------------



"Turgeon" a écrit dans le message de groupe de
discussion :
Voici le code original:

For n = 100 To 499
termeBx = termeBx * (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
Next n

J'ai modifié pour ceci et ça semble fonctionné:

For n = 100 To 499
essai = (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
termeBx = termeBx * essai
Next n

Je n'ai pas compris mais ça fonctionne.

Merci !
"michdenis" a écrit :

Bonjour Turgeon,

Donne un exemple de ton code qui retourne un message d'erreur

Ceci ne provoque aucune erreur de dépassement.
'----------------------
Sub test()
Dim X As Double
X = 0.00000105
End Sub
'----------------------



"Turgeon" a écrit dans le message de groupe de
discussion :
J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le fait
que le résultat est compris dans les valeurs limites. La variable double a
comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.



Avatar
Modeste
Bonsour® Turgeon avec ferveur ;o))) vous nous disiez :

Je suis d'accord avec toi :
Excel n'est pas fait pour des calculs scientifique. Il n'y a pas de
nombre complexe.



?????
;o)))
COMPLEXE
Cette fonction convertit des coefficients réels et imaginaires en un nombre complexe de la forme x + yi ou x + yj.
Si cette fonction n'est pas disponible et renvoie l'erreur #NOM ?, installez et chargez la macro complémentaire Utilitaire d'analyse.
Dans le menu Outils, cliquez sur Macros complémentaires.
Dans la liste Macros complémentaires disponibles, activez la case à cocher Utilitaire d'analyse, puis cliquez sur OK.
Si nécessaire, suivez les instructions fournies par le programme d'installation.
Syntaxe
COMPLEXE(partie_réelle;partie_imaginaire;suffixe)
partie_réelle représente le coefficient réel du nombre complexe.
partie_imaginaire représente le coefficient imaginaire du nombre complexe.
suffixe représente le suffixe de la partie imaginaire du nombre complexe. Si l'argument suffixe est omis, sa valeur par défaut est "i".
Remarque Toutes les fonctions de nombre complexe acceptent "i" et "j" comme suffixe, mais pas "I" ni "J". L'utilisation de majuscules entraîne la valeur d'erreur #VALEUR!.

voir aussi :
COMPLEXE.REEL
Cette fonction renvoie le coefficient réel d'un nombre complexe en format texte x + yi ou x + yj.
Syntaxe
COMPLEXE.REEL(nombre_complexe)
nombre_complexe représente un nombre complexe dont vous recherchez le coefficient réel.

COMPLEXE.IMAGINAIRE
Cette fonction renvoie le coefficient imaginaire d'un nombre complexe en format texte x + yi ou x + yj.
Syntaxe
COMPLEXE.IMAGINAIRE(nombre_complexe)
nombre_complexe représente un nombre complexe dont vous recherchez le coefficient imaginaire.

COMPLEXE.MODULE Renvoie la valeur absolue (le module) d'un nombre complexe.
COMPLEXE.ARGUMENT Renvoie l'argument thêta, un angle exprimé en radians.
COMPLEXE.CONJUGUE Renvoie le nombre complexe conjugué d'un nombre complexe.
COMPLEXE.COS Renvoie le cosinus d'un nombre complexe.
COMPLEXE.DIV Renvoie le quotient de deux nombres complexes.
COMPLEXE.EXP Renvoie la fonction exponentielle d'un nombre complexe.
COMPLEXE.LN Renvoie le logarithme népérien d'un nombre complexe.
COMPLEXE.LOG10 Calcule le logarithme en base 10 d'un nombre complexe.
COMPLEXE.LOG2 Calcule le logarithme en base 2 d'un nombre complexe.
COMPLEXE.PUISSANCE Renvoie un nombre complexe élevé à une puissance entière.
COMPLEXE.PRODUIT Renvoie le produit de deux nombres complexes.
COMPLEXE.SIN Renvoie le sinus d'un nombre complexe.
COMPLEXE.RACINE Renvoie la racine carrée d'un nombre complexe.
COMPLEXE.DIFFERENCE Renvoie la différence entre deux nombres complexes.
COMPLEXE.SOMME Renvoie la somme de plusieurs nombres complexes.
Avatar
Gilles LEBRET
je suis d'accord avec Michdenis et Modeste, excel a toutes les apparences et
les capacités pour faire des calculs scientifiques, mais les languages type
VBA, VB ... ne calculent pas très juste
reliser ma réponse précédente sur
?int(0.29*100)/100 pour lequel le résultat est 0.28 .....

c'est comme cela que si deux variables contienent chacune (apparemment) la
valeur 1, il se peut qu'un test d'égalité de ces deux variables retourne
false à la place de true

Gilles Le Bret




"michdenis" a écrit dans le message de news:

Si tu utilises une structure comme ceci,

Il n'y a pas de raison d'avoir un message d'erreur ...

'--------------------------
Sub test()
Dim N As Integer, X As Double
Dim Z As Double, G As Double

N = 25
Z = 1.045212157
X = 0.00000105
G = Z * X * N
End Sub
'--------------------------



"Turgeon" a écrit dans le message de
groupe de
discussion :
Voici le code original:

For n = 100 To 499
termeBx = termeBx * (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
Next n

J'ai modifié pour ceci et ça semble fonctionné:

For n = 100 To 499
essai = (1.5 + n) * (0.5 + n) * zz / (n*(n+1))
termeBx = termeBx * essai
Next n

Je n'ai pas compris mais ça fonctionne.

Merci !
"michdenis" a écrit :

Bonjour Turgeon,

Donne un exemple de ton code qui retourne un message d'erreur

Ceci ne provoque aucune erreur de dépassement.
'----------------------
Sub test()
Dim X As Double
X = 0.00000105
End Sub
'----------------------



"Turgeon" a écrit dans le message de
groupe de
discussion :
J'ai déclaré une variable double et j'ai ce messge d'erreur malgré le
fait
que le résultat est compris dans les valeurs limites. La variable double
a
comme valeur 1.05e-6. Il n'y a pas de dépassement de capacité.