J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de me
libérer du temps de travail. La majorité du programme fonctionne, sauf la
fonction qui réalise les calculs scientifique, ca plante au premier calcul:
"dépassement de capacité"
à la ligne:
F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / (1000
* 60 * F_C_R_M_n2)
avec
F_C_R_i=1
F_C_R_donnees_org(F_C_R_i * 4 - 1, 11)=4,92720041753653
F_C_R_dm_n2 as variant ( vide puisque pas de calcul)
F_C_R_M_n2= 0,028 (variant)
F_C_R_rho_n2= 1,242 (variant)
Le dépassement de capacité est il lié à la capacité en memoire vive de
l'ordinateur/ du programme? à une macro trop longue et trop gourmande en
capacité de mémoire ou est ce seulement une erreur de type de donnée?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice Henrio
à priori je dirai plutôt type de données
Tout d'abord n'utilise pas de variant, trop gourmand en mémoire
Tu peux déclarer tes variables en decimal (codé sur 14 octets) ou double (sur 8 octets)
"B_M" a écrit dans le message de news:
Bonjour,
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de me libérer du temps de travail. La majorité du programme fonctionne, sauf la fonction qui réalise les calculs scientifique, ca plante au premier calcul: "dépassement de capacité" à la ligne: F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / (1000 * 60 * F_C_R_M_n2)
avec
F_C_R_i=1 F_C_R_donnees_org(F_C_R_i * 4 - 1, 11)=4,92720041753653 F_C_R_dm_n2 as variant ( vide puisque pas de calcul) F_C_R_M_n2= 0,028 (variant) F_C_R_rho_n2= 1,242 (variant)
Le dépassement de capacité est il lié à la capacité en memoire vive de l'ordinateur/ du programme? à une macro trop longue et trop gourmande en capacité de mémoire ou est ce seulement une erreur de type de donnée?
Je vous remercie d'avance B_M
à priori je dirai plutôt type de données
Tout d'abord n'utilise pas de variant, trop gourmand en mémoire
Tu peux déclarer tes variables en decimal (codé sur 14 octets) ou double
(sur 8 octets)
"B_M" <BM@discussions.microsoft.com> a écrit dans le message de news:
B5415D2A-928D-4B15-A0CF-DAAC5F345BD1@microsoft.com...
Bonjour,
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de
me
libérer du temps de travail. La majorité du programme fonctionne, sauf la
fonction qui réalise les calculs scientifique, ca plante au premier
calcul:
"dépassement de capacité"
à la ligne:
F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 /
(1000
* 60 * F_C_R_M_n2)
avec
F_C_R_i=1
F_C_R_donnees_org(F_C_R_i * 4 - 1, 11)=4,92720041753653
F_C_R_dm_n2 as variant ( vide puisque pas de calcul)
F_C_R_M_n2= 0,028 (variant)
F_C_R_rho_n2= 1,242 (variant)
Le dépassement de capacité est il lié à la capacité en memoire vive de
l'ordinateur/ du programme? à une macro trop longue et trop gourmande en
capacité de mémoire ou est ce seulement une erreur de type de donnée?
Tout d'abord n'utilise pas de variant, trop gourmand en mémoire
Tu peux déclarer tes variables en decimal (codé sur 14 octets) ou double (sur 8 octets)
"B_M" a écrit dans le message de news:
Bonjour,
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de me libérer du temps de travail. La majorité du programme fonctionne, sauf la fonction qui réalise les calculs scientifique, ca plante au premier calcul: "dépassement de capacité" à la ligne: F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / (1000 * 60 * F_C_R_M_n2)
avec
F_C_R_i=1 F_C_R_donnees_org(F_C_R_i * 4 - 1, 11)=4,92720041753653 F_C_R_dm_n2 as variant ( vide puisque pas de calcul) F_C_R_M_n2= 0,028 (variant) F_C_R_rho_n2= 1,242 (variant)
Le dépassement de capacité est il lié à la capacité en memoire vive de l'ordinateur/ du programme? à une macro trop longue et trop gourmande en capacité de mémoire ou est ce seulement une erreur de type de donnée?
Je vous remercie d'avance B_M
Fred
Dans : news:, B_M écrivait :
Bonjour,
Bonsoir,
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de me libérer du temps de travail. La majorité du programme fonctionne, sauf la fonction qui réalise les calculs scientifique, ca plante au premier calcul: "dépassement de capacité" à la ligne: F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / (1000 * 60 * F_C_R_M_n2)
C'est le 1000 * 60 qui provoque le dépassement de capacité. En l'absence de spécification de type, je suppose que ce premier calcul se fait sur des entiers et 60000 est plus grand que 32767, le maximum. En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à Double
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Dans : news:B5415D2A-928D-4B15-A0CF-DAAC5F345BD1@microsoft.com,
B_M écrivait :
Bonjour,
Bonsoir,
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin
de me libérer du temps de travail. La majorité du programme
fonctionne, sauf la fonction qui réalise les calculs scientifique, ca
plante au premier calcul: "dépassement de capacité"
à la ligne:
F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 /
(1000 * 60 * F_C_R_M_n2)
C'est le 1000 * 60 qui provoque le dépassement de capacité.
En l'absence de spécification de type, je suppose que ce premier calcul
se fait sur des entiers et 60000 est plus grand que 32767, le maximum.
En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à
Double
--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de me libérer du temps de travail. La majorité du programme fonctionne, sauf la fonction qui réalise les calculs scientifique, ca plante au premier calcul: "dépassement de capacité" à la ligne: F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / (1000 * 60 * F_C_R_M_n2)
C'est le 1000 * 60 qui provoque le dépassement de capacité. En l'absence de spécification de type, je suppose que ce premier calcul se fait sur des entiers et 60000 est plus grand que 32767, le maximum. En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à Double
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Fred
Dans : news:%, Fred écrivait :
PS : J'appuie la remarque de Patrice sur la déclaration des variables en Single, Double ou Decimal. Et j'ajouterai un Option Explicit en début de code pour que le compilateur ne laisse pas passer de variables non déclarées. En effet, avec autant de variables et de formules de calcul, une faute de frappe est vite arrivée et on peut passer un moment à retrouver la «nouvelle» variable auto déclarée et initialisée à 0 qui fausse tout !
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Dans : news:%23fPTzbcjHHA.4520@TK2MSFTNGP02.phx.gbl,
Fred écrivait :
PS :
J'appuie la remarque de Patrice sur la déclaration des variables en
Single, Double ou Decimal.
Et j'ajouterai un Option Explicit en début de code pour que le
compilateur ne laisse pas passer de variables non déclarées.
En effet, avec autant de variables et de formules de calcul, une faute
de frappe est vite arrivée et on peut passer un moment à retrouver la
«nouvelle» variable auto déclarée et initialisée à 0 qui fausse tout !
--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
PS : J'appuie la remarque de Patrice sur la déclaration des variables en Single, Double ou Decimal. Et j'ajouterai un Option Explicit en début de code pour que le compilateur ne laisse pas passer de variables non déclarées. En effet, avec autant de variables et de formules de calcul, une faute de frappe est vite arrivée et on peut passer un moment à retrouver la «nouvelle» variable auto déclarée et initialisée à 0 qui fausse tout !
-- Fred http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
jean-marc
"Fred" wrote in message news:%
Dans : news:, B_M écrivait :
Bonjour,
Bonsoir,
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de me libérer du temps de travail. La majorité du programme fonctionne, sauf la fonction qui réalise les calculs scientifique, ca plante au premier calcul: "dépassement de capacité" à la ligne: F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / (1000 * 60 * F_C_R_M_n2)
C'est le 1000 * 60 qui provoque le dépassement de capacité. En l'absence de spécification de type, je suppose que ce premier calcul se fait sur des entiers et 60000 est plus grand que 32767, le maximum. En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à Double
Hello,
J'en profite pour signaler que ce problème de dépassement de capacité à fait l'objet d'un article complet dans notre FAQ:
http://faq.vb.free.fr/index.php?question5
N'hésitez pas à consulter la FAQ, elle contient la réponse à de nolbreuses questions de ce type, en plus d'articles plus techniques.
"Fred" <foleide@libre.france> wrote in message
news:%23fPTzbcjHHA.4520@TK2MSFTNGP02.phx.gbl...
Dans : news:B5415D2A-928D-4B15-A0CF-DAAC5F345BD1@microsoft.com,
B_M écrivait :
Bonjour,
Bonsoir,
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin
de me libérer du temps de travail. La majorité du programme
fonctionne, sauf la fonction qui réalise les calculs scientifique, ca
plante au premier calcul: "dépassement de capacité"
à la ligne:
F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 /
(1000 * 60 * F_C_R_M_n2)
C'est le 1000 * 60 qui provoque le dépassement de capacité.
En l'absence de spécification de type, je suppose que ce premier calcul se
fait sur des entiers et 60000 est plus grand que 32767, le maximum.
En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à
Double
Hello,
J'en profite pour signaler que ce problème de dépassement de capacité
à fait l'objet d'un article complet dans notre FAQ:
http://faq.vb.free.fr/index.php?question5
N'hésitez pas à consulter la FAQ, elle contient la réponse à de nolbreuses
questions de ce type, en plus d'articles plus techniques.
J'ai dévelloppé une macro pour réaliser des calculs récurrents afin de me libérer du temps de travail. La majorité du programme fonctionne, sauf la fonction qui réalise les calculs scientifique, ca plante au premier calcul: "dépassement de capacité" à la ligne: F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / (1000 * 60 * F_C_R_M_n2)
C'est le 1000 * 60 qui provoque le dépassement de capacité. En l'absence de spécification de type, je suppose que ce premier calcul se fait sur des entiers et 60000 est plus grand que 32767, le maximum. En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à Double
Hello,
J'en profite pour signaler que ce problème de dépassement de capacité à fait l'objet d'un article complet dans notre FAQ:
http://faq.vb.free.fr/index.php?question5
N'hésitez pas à consulter la FAQ, elle contient la réponse à de nolbreuses questions de ce type, en plus d'articles plus techniques.
Sur le VBA que j'ai, je n'ai pas de type "decimal", que "double". (VBA 6.3) Finalement j'ai resolu le probleme avec X=int(1000*X)/1000 ce qui me permet de limiter le nombre de decimales (pas significatives de touutes façon).
J'ai également utilisé 100 => 100.0, c'est un bon conseil....
Fonction explicit est interressant mais il m'ennuie sur le type de la fonction. le debuggeur surligne: function blabla(x as integer, y as string) j'ai deja vu des choses du genre function blabla(x as integer, y as string) as double mais pour un tableau function blabla(x as integer, y as string)() ne marche pas... je ne connais pas la syntaxe...)
Enfin merci beaucoup, maintenant le programme tourne (meme si les resultats sont nuls, mais ca c'est une erreur dans les formules scientifiques...)
"jean-marc" a écrit :
"Fred" wrote in message news:% > Dans : news:, > B_M écrivait : > >> Bonjour, > > Bonsoir, > > > >> J'ai dévelloppé une macro pour réaliser des calculs récurrents afin >> de me libérer du temps de travail. La majorité du programme >> fonctionne, sauf la fonction qui réalise les calculs scientifique, ca >> plante au premier calcul: "dépassement de capacité" >> à la ligne: >> F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / >> (1000 * 60 * F_C_R_M_n2) > > C'est le 1000 * 60 qui provoque le dépassement de capacité. > En l'absence de spécification de type, je suppose que ce premier calcul se > fait sur des entiers et 60000 est plus grand que 32767, le maximum. > En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à > Double
Hello,
J'en profite pour signaler que ce problème de dépassement de capacité à fait l'objet d'un article complet dans notre FAQ:
http://faq.vb.free.fr/index.php?question5
N'hésitez pas à consulter la FAQ, elle contient la réponse à de nolbreuses questions de ce type, en plus d'articles plus techniques.
Sur le VBA que j'ai, je n'ai pas de type "decimal", que "double". (VBA 6.3)
Finalement j'ai resolu le probleme avec
X=int(1000*X)/1000
ce qui me permet de limiter le nombre de decimales (pas significatives de
touutes façon).
J'ai également utilisé 100 => 100.0, c'est un bon conseil....
Fonction explicit est interressant mais il m'ennuie sur le type de la
fonction. le debuggeur surligne:
function blabla(x as integer, y as string)
j'ai deja vu des choses du genre
function blabla(x as integer, y as string) as double
mais pour un tableau
function blabla(x as integer, y as string)()
ne marche pas... je ne connais pas la syntaxe...)
Enfin merci beaucoup, maintenant le programme tourne (meme si les resultats
sont nuls, mais ca c'est une erreur dans les formules scientifiques...)
"jean-marc" a écrit :
"Fred" <foleide@libre.france> wrote in message
news:%23fPTzbcjHHA.4520@TK2MSFTNGP02.phx.gbl...
> Dans : news:B5415D2A-928D-4B15-A0CF-DAAC5F345BD1@microsoft.com,
> B_M écrivait :
>
>> Bonjour,
>
> Bonsoir,
>
>
>
>> J'ai dévelloppé une macro pour réaliser des calculs récurrents afin
>> de me libérer du temps de travail. La majorité du programme
>> fonctionne, sauf la fonction qui réalise les calculs scientifique, ca
>> plante au premier calcul: "dépassement de capacité"
>> à la ligne:
>> F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 /
>> (1000 * 60 * F_C_R_M_n2)
>
> C'est le 1000 * 60 qui provoque le dépassement de capacité.
> En l'absence de spécification de type, je suppose que ce premier calcul se
> fait sur des entiers et 60000 est plus grand que 32767, le maximum.
> En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à
> Double
Hello,
J'en profite pour signaler que ce problème de dépassement de capacité
à fait l'objet d'un article complet dans notre FAQ:
http://faq.vb.free.fr/index.php?question5
N'hésitez pas à consulter la FAQ, elle contient la réponse à de nolbreuses
questions de ce type, en plus d'articles plus techniques.
Sur le VBA que j'ai, je n'ai pas de type "decimal", que "double". (VBA 6.3) Finalement j'ai resolu le probleme avec X=int(1000*X)/1000 ce qui me permet de limiter le nombre de decimales (pas significatives de touutes façon).
J'ai également utilisé 100 => 100.0, c'est un bon conseil....
Fonction explicit est interressant mais il m'ennuie sur le type de la fonction. le debuggeur surligne: function blabla(x as integer, y as string) j'ai deja vu des choses du genre function blabla(x as integer, y as string) as double mais pour un tableau function blabla(x as integer, y as string)() ne marche pas... je ne connais pas la syntaxe...)
Enfin merci beaucoup, maintenant le programme tourne (meme si les resultats sont nuls, mais ca c'est une erreur dans les formules scientifiques...)
"jean-marc" a écrit :
"Fred" wrote in message news:% > Dans : news:, > B_M écrivait : > >> Bonjour, > > Bonsoir, > > > >> J'ai dévelloppé une macro pour réaliser des calculs récurrents afin >> de me libérer du temps de travail. La majorité du programme >> fonctionne, sauf la fonction qui réalise les calculs scientifique, ca >> plante au premier calcul: "dépassement de capacité" >> à la ligne: >> F_C_R_dm_n2 = F_C_R_donnees_org(F_C_R_i * 4 - 1, 11) * F_C_R_rho_n2 / >> (1000 * 60 * F_C_R_M_n2) > > C'est le 1000 * 60 qui provoque le dépassement de capacité. > En l'absence de spécification de type, je suppose que ce premier calcul se > fait sur des entiers et 60000 est plus grand que 32767, le maximum. > En écrivant : 1000.0 * 60.0, cela devrait passer en forçant le type à > Double
Hello,
J'en profite pour signaler que ce problème de dépassement de capacité à fait l'objet d'un article complet dans notre FAQ:
http://faq.vb.free.fr/index.php?question5
N'hésitez pas à consulter la FAQ, elle contient la réponse à de nolbreuses questions de ce type, en plus d'articles plus techniques.