Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur des
onglet différents différent resultats... la matrice de base est de l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs sur
les tableaux ce qui améliore nettement voire très nettement (de l'ordre de
1
à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse) si
ce
n'est pas handaicapant dans les clalculs et desactiver le
raffraichissement
de l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le mieux.
Bon courage, A+Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans
exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop
long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur
des
onglet différents différent resultats... la matrice de base est de
l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs sur
les tableaux ce qui améliore nettement voire très nettement (de l'ordre de
1
à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse) si
ce
n'est pas handaicapant dans les clalculs et desactiver le
raffraichissement
de l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le mieux.
Bon courage, A+
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans
exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop
long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur
des
onglet différents différent resultats... la matrice de base est de
l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs sur
les tableaux ce qui améliore nettement voire très nettement (de l'ordre de
1
à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse) si
ce
n'est pas handaicapant dans les clalculs et desactiver le
raffraichissement
de l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le mieux.
Bon courage, A+Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans
exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop
long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur
des
onglet différents différent resultats... la matrice de base est de
l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu lire
sur le net, mais je ne sais absolument pas comment travailler avec array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false
les scans sont difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment le
regle t on à false,
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans, ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande si
necessaire, au jour suivant, je regarde ce qui arrive (précedement commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6 mois...
ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu lire
sur le net, mais je ne sais absolument pas comment travailler avec array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false
les scans sont difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment le
regle t on à false,
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans, ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande si
necessaire, au jour suivant, je regarde ce qui arrive (précedement commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6 mois...
ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu lire
sur le net, mais je ne sais absolument pas comment travailler avec array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false
les scans sont difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment le
regle t on à false,
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans, ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande si
necessaire, au jour suivant, je regarde ce qui arrive (précedement commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6 mois...
ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
Bonjour,je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu
lire
sur le net, mais je ne sais absolument pas comment travailler avec
array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Dim V as Variant
V = Range("A1").CurrentRegion
et ta variable contient tes infos.Application screenupdating est à false
OK
N'oublie pas
Application.Calculation=xlCalculationManualles scans sont difficilement optimisables... malheureusement :(
Combien fais-tu des comparaisons au total? As-tu calculer?
Pour un calcul de 17 heures (ton estimé), c'est 17 heures * 3600
secondes/heure
* 500000 comparaisons/seconde.
C'est un total astronomique de comparaisons : es-tu certain que ce n'est
pas
cela qu'il faut analyser de plus près? ;-)
Identifie ta section critique de code (celle qui ralentit tout) et
optimise-la.
Quitte à demander des conseils spécifiques pour celle-ci.quel est le generateur d'évenement, et à quoi sert il ? de meme comment
le
regle t on à false,
On le met à false ainsi:
Application.EnableEvents = False
Si tu n'as pas de routines d'événements (Worksheet_Change, etc.), ce n'est
pas
essentiel de le mettre à false.! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans,
ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais
surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de
vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on
me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande
si
necessaire, au jour suivant, je regarde ce qui arrive (précedement
commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6
mois...
30000 articles * 180 jours ==> 5.4 millions comparaisons. Ça devrait
tourner
sous la minute (et probablement sous les 10 secondes avec une machine
performante)!ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me
souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
Tu n'as pas besoin de scanner pour connaître la première ligne vide
Quelquechose du genre devrait faire l'affaire:
Set PremVide = Range("A65536").End(xlUp)(2)
PremVide représente la plage qu'il faut alors renseigner. Tu viens de
t'épargner
30000 scans à chaque boucle. C'est juste un exemple mais ça montre bien
qu'il y
a moyen d'optimiser grandement.
Salutations,
Daniel M.
Bonjour,
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu
lire
sur le net, mais je ne sais absolument pas comment travailler avec
array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Dim V as Variant
V = Range("A1").CurrentRegion
et ta variable contient tes infos.
Application screenupdating est à false
OK
N'oublie pas
Application.Calculation=xlCalculationManual
les scans sont difficilement optimisables... malheureusement :(
Combien fais-tu des comparaisons au total? As-tu calculer?
Pour un calcul de 17 heures (ton estimé), c'est 17 heures * 3600
secondes/heure
* 500000 comparaisons/seconde.
C'est un total astronomique de comparaisons : es-tu certain que ce n'est
pas
cela qu'il faut analyser de plus près? ;-)
Identifie ta section critique de code (celle qui ralentit tout) et
optimise-la.
Quitte à demander des conseils spécifiques pour celle-ci.
quel est le generateur d'évenement, et à quoi sert il ? de meme comment
le
regle t on à false,
On le met à false ainsi:
Application.EnableEvents = False
Si tu n'as pas de routines d'événements (Worksheet_Change, etc.), ce n'est
pas
essentiel de le mettre à false.
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans,
ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais
surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de
vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on
me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande
si
necessaire, au jour suivant, je regarde ce qui arrive (précedement
commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6
mois...
30000 articles * 180 jours ==> 5.4 millions comparaisons. Ça devrait
tourner
sous la minute (et probablement sous les 10 secondes avec une machine
performante)!
ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me
souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
Tu n'as pas besoin de scanner pour connaître la première ligne vide
Quelquechose du genre devrait faire l'affaire:
Set PremVide = Range("A65536").End(xlUp)(2)
PremVide représente la plage qu'il faut alors renseigner. Tu viens de
t'épargner
30000 scans à chaque boucle. C'est juste un exemple mais ça montre bien
qu'il y
a moyen d'optimiser grandement.
Salutations,
Daniel M.
Bonjour,je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu
lire
sur le net, mais je ne sais absolument pas comment travailler avec
array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Dim V as Variant
V = Range("A1").CurrentRegion
et ta variable contient tes infos.Application screenupdating est à false
OK
N'oublie pas
Application.Calculation=xlCalculationManualles scans sont difficilement optimisables... malheureusement :(
Combien fais-tu des comparaisons au total? As-tu calculer?
Pour un calcul de 17 heures (ton estimé), c'est 17 heures * 3600
secondes/heure
* 500000 comparaisons/seconde.
C'est un total astronomique de comparaisons : es-tu certain que ce n'est
pas
cela qu'il faut analyser de plus près? ;-)
Identifie ta section critique de code (celle qui ralentit tout) et
optimise-la.
Quitte à demander des conseils spécifiques pour celle-ci.quel est le generateur d'évenement, et à quoi sert il ? de meme comment
le
regle t on à false,
On le met à false ainsi:
Application.EnableEvents = False
Si tu n'as pas de routines d'événements (Worksheet_Change, etc.), ce n'est
pas
essentiel de le mettre à false.! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans,
ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais
surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de
vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on
me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande
si
necessaire, au jour suivant, je regarde ce qui arrive (précedement
commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6
mois...
30000 articles * 180 jours ==> 5.4 millions comparaisons. Ça devrait
tourner
sous la minute (et probablement sous les 10 secondes avec une machine
performante)!ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me
souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
Tu n'as pas besoin de scanner pour connaître la première ligne vide
Quelquechose du genre devrait faire l'affaire:
Set PremVide = Range("A65536").End(xlUp)(2)
PremVide représente la plage qu'il faut alors renseigner. Tu viens de
t'épargner
30000 scans à chaque boucle. C'est juste un exemple mais ça montre bien
qu'il y
a moyen d'optimiser grandement.
Salutations,
Daniel M.
Salut
merci à tous les deux pour vos pistes ;)
sans rentrer dans le détails je simule un magasin virtuel et son stock pour
le faire vivre et voir les fluctuations... les lignes sont les articles, les
colonnes les jours...d'ou ma matrice de fou.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu lire
sur le net, mais je ne sais absolument pas comment travailler avec array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false au maximum, les scans sont
difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment le
regle t on à false, suivant ce que c'est c'est une manip que je peux tester
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans, ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande si
necessaire, au jour suivant, je regarde ce qui arrive (précedement commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6 mois...
si vous avez d'autres idée..
je pense qu'une piste qui pourrait me faire gagner du temps c'est lors de la
réapprovisionnement ! la j'ai une pile de commande qui s'allonge, avec la
ref et la date à laquelle la commande est livre, je scanne une premiere fois
pour compter ce que je recois le jour, et en mme temps ce que je vais
recevoir les jours suivant (il me faut cette info)... ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
"anomymousA" a écrit dans le message
de news:bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs sur
les tableaux ce qui améliore nettement voire très nettement (de l'ordre de
1à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse) si
cen'est pas handaicapant dans les clalculs et desactiver le
raffraichissementde l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le mieux.
Bon courage, A+Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans
exelet augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop
longmais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,ligne par ligne et colonne par colonne des valeurs, pour attribuer sur
desonglet différents différent resultats... la matrice de base est de
l'ordrede 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
Salut
merci à tous les deux pour vos pistes ;)
sans rentrer dans le détails je simule un magasin virtuel et son stock pour
le faire vivre et voir les fluctuations... les lignes sont les articles, les
colonnes les jours...d'ou ma matrice de fou.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu lire
sur le net, mais je ne sais absolument pas comment travailler avec array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false au maximum, les scans sont
difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment le
regle t on à false, suivant ce que c'est c'est une manip que je peux tester
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans, ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande si
necessaire, au jour suivant, je regarde ce qui arrive (précedement commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6 mois...
si vous avez d'autres idée..
je pense qu'une piste qui pourrait me faire gagner du temps c'est lors de la
réapprovisionnement ! la j'ai une pile de commande qui s'allonge, avec la
ref et la date à laquelle la commande est livre, je scanne une premiere fois
pour compter ce que je recois le jour, et en mme temps ce que je vais
recevoir les jours suivant (il me faut cette info)... ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
"anomymousA" <anomymousA@discussions.microsoft.com> a écrit dans le message
de news:41046741-A404-4EB1-A2EA-28F09EBC4DEC@microsoft.com...
bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs sur
les tableaux ce qui améliore nettement voire très nettement (de l'ordre de
1
à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse) si
ce
n'est pas handaicapant dans les clalculs et desactiver le
raffraichissement
de l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le mieux.
Bon courage, A+
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans
exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop
long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer sur
des
onglet différents différent resultats... la matrice de base est de
l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
Salut
merci à tous les deux pour vos pistes ;)
sans rentrer dans le détails je simule un magasin virtuel et son stock pour
le faire vivre et voir les fluctuations... les lignes sont les articles, les
colonnes les jours...d'ou ma matrice de fou.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu lire
sur le net, mais je ne sais absolument pas comment travailler avec array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false au maximum, les scans sont
difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment le
regle t on à false, suivant ce que c'est c'est une manip que je peux tester
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans, ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande si
necessaire, au jour suivant, je regarde ce qui arrive (précedement commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6 mois...
si vous avez d'autres idée..
je pense qu'une piste qui pourrait me faire gagner du temps c'est lors de la
réapprovisionnement ! la j'ai une pile de commande qui s'allonge, avec la
ref et la date à laquelle la commande est livre, je scanne une premiere fois
pour compter ce que je recois le jour, et en mme temps ce que je vais
recevoir les jours suivant (il me faut cette info)... ensuite je rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
"anomymousA" a écrit dans le message
de news:bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs sur
les tableaux ce qui améliore nettement voire très nettement (de l'ordre de
1à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse) si
cen'est pas handaicapant dans les clalculs et desactiver le
raffraichissementde l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le mieux.
Bon courage, A+Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part dans
exelet augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait trop
longmais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,ligne par ligne et colonne par colonne des valeurs, pour attribuer sur
desonglet différents différent resultats... la matrice de base est de
l'ordrede 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
re,
effectivement, c'est difficile sans voir ton code de savoir ce qui peut
être
optimisable et de comprendre finement ta demande.
Cependant, quand tu dis que tu ne sais pas te servir d'un array, je te
donne
un exemple.
Dim Tabentree ' en l'occurence ce sera de type variant
Tabentree = Range("A1:J58597").Value
MsgBox Tabentree(58597, 10) te renvoie la cellule cells(58597,10) ou
J58597.
Ce qui est un peu long, c'est le chargement en mémoire du tableau et j'ai
vérifié la limitation du nombre de données n'est lié qu'à la taille
mémoire
dispo .
Ensuite tu fais toutes les opérations que tu veux sur ton tableau et tu
renvoies à la plage de cellules le tableau par
Range("A1:J58597").Value=tabentree.
Si donc dans ton code les références à tes cellules sont de la forme
cells(I,J), il est possible de transformer le code en faisant un
Rechercher/Remplacer cells (I,J) par tabentree(I,J) puisque c'est
formellement la même chose.
Sinon, pas de sortie possible.
Toutefois, 30000 lignes avec 200 colonnes, c'est plutot du domaine
d'ACCESS.
A+Salut
merci à tous les deux pour vos pistes ;)
sans rentrer dans le détails je simule un magasin virtuel et son stock
pour
le faire vivre et voir les fluctuations... les lignes sont les articles,
les
colonnes les jours...d'ou ma matrice de fou.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu
lire
sur le net, mais je ne sais absolument pas comment travailler avec
array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false au maximum, les scans sont
difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment
le
regle t on à false, suivant ce que c'est c'est une manip que je peux
tester
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans,
ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais
surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de
vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on
me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande
si
necessaire, au jour suivant, je regarde ce qui arrive (précedement
commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6
mois...
si vous avez d'autres idée..
je pense qu'une piste qui pourrait me faire gagner du temps c'est lors
de la
réapprovisionnement ! la j'ai une pile de commande qui s'allonge, avec
la
ref et la date à laquelle la commande est livre, je scanne une premiere
fois
pour compter ce que je recois le jour, et en mme temps ce que je vais
recevoir les jours suivant (il me faut cette info)... ensuite je
rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me
souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
"anomymousA" a écrit dans le
message
de news:bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs
sur
les tableaux ce qui améliore nettement voire très nettement (de
l'ordre de
1à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit
pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse)
si
cen'est pas handaicapant dans les clalculs et desactiver le
raffraichissementde l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le
mieux.
Bon courage, A+Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux
calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs
à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part
dans
exelet augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait
trop
longmais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,ligne par ligne et colonne par colonne des valeurs, pour attribuer
sur
desonglet différents différent resultats... la matrice de base est de
l'ordrede 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
re,
effectivement, c'est difficile sans voir ton code de savoir ce qui peut
être
optimisable et de comprendre finement ta demande.
Cependant, quand tu dis que tu ne sais pas te servir d'un array, je te
donne
un exemple.
Dim Tabentree ' en l'occurence ce sera de type variant
Tabentree = Range("A1:J58597").Value
MsgBox Tabentree(58597, 10) te renvoie la cellule cells(58597,10) ou
J58597.
Ce qui est un peu long, c'est le chargement en mémoire du tableau et j'ai
vérifié la limitation du nombre de données n'est lié qu'à la taille
mémoire
dispo .
Ensuite tu fais toutes les opérations que tu veux sur ton tableau et tu
renvoies à la plage de cellules le tableau par
Range("A1:J58597").Value=tabentree.
Si donc dans ton code les références à tes cellules sont de la forme
cells(I,J), il est possible de transformer le code en faisant un
Rechercher/Remplacer cells (I,J) par tabentree(I,J) puisque c'est
formellement la même chose.
Sinon, pas de sortie possible.
Toutefois, 30000 lignes avec 200 colonnes, c'est plutot du domaine
d'ACCESS.
A+
Salut
merci à tous les deux pour vos pistes ;)
sans rentrer dans le détails je simule un magasin virtuel et son stock
pour
le faire vivre et voir les fluctuations... les lignes sont les articles,
les
colonnes les jours...d'ou ma matrice de fou.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu
lire
sur le net, mais je ne sais absolument pas comment travailler avec
array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false au maximum, les scans sont
difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment
le
regle t on à false, suivant ce que c'est c'est une manip que je peux
tester
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans,
ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais
surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de
vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on
me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande
si
necessaire, au jour suivant, je regarde ce qui arrive (précedement
commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6
mois...
si vous avez d'autres idée..
je pense qu'une piste qui pourrait me faire gagner du temps c'est lors
de la
réapprovisionnement ! la j'ai une pile de commande qui s'allonge, avec
la
ref et la date à laquelle la commande est livre, je scanne une premiere
fois
pour compter ce que je recois le jour, et en mme temps ce que je vais
recevoir les jours suivant (il me faut cette info)... ensuite je
rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me
souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
"anomymousA" <anomymousA@discussions.microsoft.com> a écrit dans le
message
de news:41046741-A404-4EB1-A2EA-28F09EBC4DEC@microsoft.com...
bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs
sur
les tableaux ce qui améliore nettement voire très nettement (de
l'ordre de
1
à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit
pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse)
si
ce
n'est pas handaicapant dans les clalculs et desactiver le
raffraichissement
de l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le
mieux.
Bon courage, A+
Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux
calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs
à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part
dans
exel
et augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait
trop
long
mais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,
ligne par ligne et colonne par colonne des valeurs, pour attribuer
sur
des
onglet différents différent resultats... la matrice de base est de
l'ordre
de 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________
re,
effectivement, c'est difficile sans voir ton code de savoir ce qui peut
être
optimisable et de comprendre finement ta demande.
Cependant, quand tu dis que tu ne sais pas te servir d'un array, je te
donne
un exemple.
Dim Tabentree ' en l'occurence ce sera de type variant
Tabentree = Range("A1:J58597").Value
MsgBox Tabentree(58597, 10) te renvoie la cellule cells(58597,10) ou
J58597.
Ce qui est un peu long, c'est le chargement en mémoire du tableau et j'ai
vérifié la limitation du nombre de données n'est lié qu'à la taille
mémoire
dispo .
Ensuite tu fais toutes les opérations que tu veux sur ton tableau et tu
renvoies à la plage de cellules le tableau par
Range("A1:J58597").Value=tabentree.
Si donc dans ton code les références à tes cellules sont de la forme
cells(I,J), il est possible de transformer le code en faisant un
Rechercher/Remplacer cells (I,J) par tabentree(I,J) puisque c'est
formellement la même chose.
Sinon, pas de sortie possible.
Toutefois, 30000 lignes avec 200 colonnes, c'est plutot du domaine
d'ACCESS.
A+Salut
merci à tous les deux pour vos pistes ;)
sans rentrer dans le détails je simule un magasin virtuel et son stock
pour
le faire vivre et voir les fluctuations... les lignes sont les articles,
les
colonnes les jours...d'ou ma matrice de fou.
je pense qu'en array, ca irait plus vite, du moins c'est ce que j'ai pu
lire
sur le net, mais je ne sais absolument pas comment travailler avec
array, de
plus... je dirais que rien n'est développé avec cette méthode, donc il
faudrait mieux trouver autre chose que de repenser tout le systeme.
Application screenupdating est à false au maximum, les scans sont
difficilement optimisables... malheureusement :(
quel est le generateur d'évenement, et à quoi sert il ? de meme comment
le
regle t on à false, suivant ce que c'est c'est une manip que je peux
tester
! Dans l'ensemble toutes mes variables sont déclarées en integer et en
string, il n'y a que trés peu d'exeption...
sur le fond, mon algo n'est pas secret, les valeurs qu'il y a dedans,
ouais,
mais c'est tres simple d'en generer des fausses par exemple, mais
surtout,
ce qui est contraignant c'est que toute la mécanique est énorme (6 ou 7
modules différents) et tiens dant un fichier de 40Mo... difficile de
vous
donner tout ca ici !
schematiquement, le fonctionnement est le suivant : je regarde ce qu'on
me
commande, j'impute mon stock, je verifie ce qui me reste, et je commande
si
necessaire, au jour suivant, je regarde ce qui arrive (précedement
commandé)
et je refais toutes les op précedents...sur 30000 ref... pendant 6
mois...
si vous avez d'autres idée..
je pense qu'une piste qui pourrait me faire gagner du temps c'est lors
de la
réapprovisionnement ! la j'ai une pile de commande qui s'allonge, avec
la
ref et la date à laquelle la commande est livre, je scanne une premiere
fois
pour compter ce que je recois le jour, et en mme temps ce que je vais
recevoir les jours suivant (il me faut cette info)... ensuite je
rescanne
pour avoir la premiere case vide, et inscrire une commande de réappro si
besoin est... peut etre que je ne pourrai scanner qu'une fois et me
souvenir
de la premiere ligne libre. mais sinon je ne voie pas d'autre piste.
"anomymousA" a écrit dans le
message
de news:bonjour,
Quelques idées en vrac:
d'abord passer les ranges sous forme de tableaux et faire les calculs
sur
les tableaux ce qui améliore nettement voire très nettement (de
l'ordre de
1à 5 voir plus le temps de calcul).
Je ne me rappelle plus trop la limite des tableaux mais ca doit
pouvoir
passer.
Economiser la mémoire en déclarant précisement tes variables selon le
minimum requis ( integer au lieu de variant si tu ne déclarais rien).
Ensuite s'il s'agit de formules et que tu n'utilises pas les tableaux,
empêcher le calcul automatique car à chque fois que tu vas écrire une
formule, Excel va recalculer l'ensemble et lancer le calcul à la fin (
possible que ca ne fasse pas gagener beaucoupe de temps, à voir !!).
Désactiver le gestionnaire d'evenements (applcation.enableventsúlse)
si
cen'est pas handaicapant dans les clalculs et desactiver le
raffraichissementde l'écran (Application.screenupdatingúlse).
Eviter les formules matricielles.
Utiliser les macros Excel4 ou les XLL. Il parait que c'est + rapide.
Enfin, si tout ça est trop long, passer à ACCESS.
Intéressant de savoir comment tu t'en es sorti et ce qui marche le
mieux.
Bon courage, A+Salut
j'ai quasiment fini une appli sous exel avec de tres nombreux
calculs
dedans, et suites aux premiers essais, j'estime les temps de calculs
à
plusieurs heures (17...)
savez vous s'il y a des moyens pour mettre un turbo quelques part
dans
exelet augmenter sa vitesse de calcul ?
je ne peux pas rentrer trop dans les détails de l'applis se serait
trop
longmais pour vous aiguiller par rapport à ce quelle fait, en gros, elle
scanne,ligne par ligne et colonne par colonne des valeurs, pour attribuer
sur
desonglet différents différent resultats... la matrice de base est de
l'ordrede 30000lignes x 200colonnes
merci d'avance :)
--
Encore merci / Thanks a lot !
@ plus
Elicend
________________________
Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
Be Careful e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________