Pb Mémoire Excel macro

mmatmat

XLDnaute Nouveau
Bonjour za tous

Je suis en train de développer une macro sous excel 2003 pour traiter des chroniques de débit.

Afin d'accélérer le calcul, je voulais placer les valeurs dans un tableau à 2 dimensions et à n lignes

pour des pas de temps grossiers (peu de données) n = 327, ok
pour des pas de temps fins (beaucoup de données) n = 6135 : j'ai une erreur de type 7 "Mémoire insuffisante".

Cette erreur se crée quand un segment de plus de 64 Ko est rencontré.

Or ma variable tableau, pour les pas de temps fins pourrait compter 6135 lignes*2 dimensions*22octets (donnée de type variant) = 269940 octets donc effectivement ça dépasse la limite.

Est-ce que quelqu'un aurait une solution pour bouger cette limite de 64 Ko (J'ai beau chercher dans les options d'Excel)?

Heellp ! :eek: Mon patron arrive jeudi !! merci d'avance pour votre aide
 

skoobi

XLDnaute Barbatruc
Re : Pb Mémoire Excel macro

Bonjour mmatmat,
Cette erreur se crée quand un segment de plus de 64 Ko est rencontré.
Que veux-tu dire par là?
Or ma variable tableau, pour les pas de temps fins pourrait compter 6135 lignes*2 dimensions*22octets (donnée de type variant) = 269940 octets donc effectivement ça dépasse la limite.
Ceci correspond à la place occupé dans la mémoire vive (je crois que c'est comme ça qu'on l'appelle).Quel rapport avec "un segment de 64 Ko"?
Normalement, cette erreur se produit lorsque la capacité de la mémoire du PC est dépassé et pour la taille du tableau que tu annonces, on en est loin...ou alors ton PC date de la guerre :D:p.
Il doit y avoir autre chose qui coince dans ta macro.
 

mmatmat

XLDnaute Nouveau
Re : Pb Mémoire Excel macro

Bonjour Skoobi

Bon alors : "Cette erreur se crée lorsqu'un segment de plus de 64Ko est rencontré" : je cite en fait la rubrique d'aide concernant l'erreur 7 "mémoire insuffisante" :
Mémoire insuffisante (erreur 7)
Particularités

La mémoire disponible est insuffisante, ou une limite de segment de 64 Ko a été rencontrée. Causes et solutions de cette erreur :

Un trop grand nombre d'applications, de documents ou de fichiers source sont ouverts.
Fermez les applications, documents ou fichiers source ouverts inutiles.

La taille d'un module ou d'une procédure est trop grande.
Fractionnez les grands modules ou les grandes procédures. Cette intervention ne permet pas d'économiser de la mémoire mais d'éviter les limites de segment de 64 Ko.

Vous exécutez Microsoft Windows en mode standard.
Relancez Microsoft Windows en mode étendu.

Vous exécutez Microsoft Windows en mode étendu, mais vous avez épuisé toute la mémoire virtuelle.
Pour augmenter la capacité de mémoire virtuelle, libérez de l'espace disque, ou vérifiez qu'un espace minimal est disponible.

Des programmes résidents sont chargés.
Retirez les programmes résidents.

Trop de pilotes de périphérique sont chargés.
Retirez les pilotes de périphérique inutiles.

Vous n'avez plus de place pour des variables Public.
Réduisez le nombre de variables Public.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1 (sous Windows) ou AIDE (sur Macintosh).



J'ai compris comme toi qu'il y a un pb avec la mem vive, c'est sûr, mais mon PC ne date pas de la guerre (ou alors une guerre à venir:D) : Dell précision M6300 2Go de mem vive :cool:

Comme l'indiquait l'erreur, j'ai désactivé plusieurs variables publiques qui ne me servaient plus, sans effet...

Bref.... il faudrait arriver à savoir ce que c'est ce fameux segment, parce que ci le segment en question est le tableau entier, comme l'indique mon calcul d'avant, je suis bien en dehors des clous, mais alors peu de programmes doivent marcher sous Excel. J'ai du mal le croire et je pense que toi aussi !

Dans le même temps, d'autres victimes de l'erreur 7 ont résolu leur souci de manière assez sioux

Mémoire insuffisante - Erreur 7 - Système / Mémoire, Visual Basic, VB6, VB.NET, VB 2005, VB

Entre temps je suis revenu à un simple copier/coller basique dans les cellules de la feuille parce que pas le temps de fignoler.... Je trouve ça moche esthétiquement et moins efficace au niveau du temps de traitement mais tant pis...

Je resterai quand même bien en contact sur cette discussion car ça m'intéresse de résoudre ce problème. A bientôt donc
 

skoobi

XLDnaute Barbatruc
Re : Pb Mémoire Excel macro

Re,

Bon alors : "Cette erreur se crée lorsqu'un segment de plus de 64Ko est rencontré" : je cite en fait la rubrique d'aide concernant l'erreur 7 "mémoire insuffisante" :

Arfff, ok, désolé, si un informaticien passe par là...
Sinon je dirais essaye en réinstallant office, à tout hasard...
Bonne soirée.
 

GCFRG

XLDnaute Occasionnel
Re : Pb Mémoire Excel macro

Salut, mmmatmat, si j'ai bien compris ta macro sert à copier des données
dans ce cas met 1:
Application.CutCopyMode = False
dans ton code
apres chaque traitement de copie, afin de vider le presse papier.
Sinon dans les propriétées System de windows augmente la mémoire virtuelle

sinon je ne vois pas ce qui merde!
peut-être un p'tit exemple de ton code nous permettrait d'y voir plus clair

Gilbert
 

GCFRG

XLDnaute Occasionnel
Re : Pb Mémoire Excel macro

Salut mmmatmat
as tu résolu to PB ?
tu peux aussi aller aussi voir dans la base de registre quel résident son chargé au démarrage de ta machine, sous XP : menu démarrer Exécuter, tu saisis "regedit" et tu valides. tu te positionnes sur poste de travail en haut dans la partie gauche de l'éditeur de registre puis tu appuies su F3, dans cette fenêtre tu tapes "run" et tu coche "mot entier" quand cette section seras trouvée, dans la colonne de droite apparaitrons tous les résidents chargés au démarage de la machine. tu peux supprimer les résidents tel que: addobe, msm, les gestionnaires de disque intallés par les logiciels tel que néro, gestionnaire webcam et autre truc inutile qui sont souvent gourmant en mémoire, ne pas supprimer ce qui concerne ton anti-virus évidemment, si tu as un doute, joint une copie d'écran, je te dirais ce que tu peux supprimer sans risque.
Pour la mémoire virtuelle, tu procèdes comme suit:
tu ouvres le panneau de configuration, dans systeme tu vas sur "avancé" dans "performance" tu clic "sur paramètre" puis "avancé" et dans la section utilisation de la mémoire tu vérifies que "les programmes" soit coché, dans mémoire virtuelle, tu clic sur "modifier" puis si la mémoire est géré par le systeme, tu relèves les valeurs, puis tu coches aucun fichier d'échange, à ce stade, la machine vas devoir redémarrer, ensuite tu fais une "défragmentation" de ton disque dur. tu refait les opérations décrite plus haut , tu coches "personnalisée" et tu mets en mini 2048, et en maxi, 8096 si cette valeur est supérieur à celle relevée précèdemment, sinon tu incrémentes cette valeur de 1024 en 1024, ne pas dépasser la valeur de plus de 2 fois la taille de la RAM un démérrage seras neccesaire entre chaque changement. tu testes et tu me tiens au courrant.
GC