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

Le
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é.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles Le Bret
Le #20316241
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" 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é.


michdenis
Le #20316231
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" 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é.
Turgeon
Le #20317041
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" 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é.



Gilles Le Bret
Le #20317201
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" 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" 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é.





Turgeon
Le #20317381
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" 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" >> 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é.
>>





michdenis
Le #20317561
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" 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" 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é.



Modeste
Le #20318481
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.
Gilles LEBRET
Le #20318941
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"
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" 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" 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é.






Publicité
Poster une réponse
Anonyme