leraleursympa
Messages postés25Date d'inscriptionsamedi 4 avril 2015StatutMembreDernière intervention24 juin 2015
-
19 juin 2015 à 15:08
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
24 juin 2015 à 17:53
Bonjour
j'ai un pc 6 gigaoctets de mémoire
je programme en vba excel
je crée des variables tableau avec redim preserve en augmentant la taille en fonction des besoins par 100 megaoctets
(grands tableaux)
lorsque la somme de mes variables atteint environ 900 megaoctets.... j'ai une erreur 7 (mémoire insuffisante)
exemple pour mieux expliquer:
sub un Dim rien1() As Double
Dim rien2() As Double
Dim rien3() As Double
Dim rien4() As Double
Dim rien5() As Double
Dim rien6() As Double
On Error GoTo LErreur l = 2000000 c = 10 ReDim rien1(l, c) ReDim rien2(l, c) ReDim rien3(l, c) ReDim rien4(l, c) ReDim rien5(l, c) ReDim rien6(l, c)
rienl = rienl For rienl = 1 To l For rienc = 1 To c rien1(rienl, rienc) = rienc + 1000 * rienl rien2(rienl, rienc) = rienc + 1000 * rienl rien3(rienl, rienc) = rienc + 1000 * rienl rien4(rienl, rienc) = rienc + 1000 * rienl rien5(rienl, rienc) = rienc + 1000 * rienl rien6(rienl, rienc) = rienc + 1000 * rienl Next rienc Next rienl
Exit Sub LErreur: rienl = rienl Resume Next End Sub
si on donne à l la valeur 1900000 il y a erreur 7
si on donne à l la valeur 1800000 : pas d'erreur.
10*1900000*8*6= 912000000 = 912 millions
c * l * 8octets (pour 1 Double)* 6 tableaux= environ 912 méga octets libres.
donne mémoire insuffisante, alors qu'il reste encore plus de 3 giga octets libres.
dans une fenetre microsoft visual basic:
"erreur d'exécution 7 : mémoire insuffisante
et dans
Présentation de l'analyseur de performance :
mémoire :
défaut de cache 0.000
mégaoctets disponibles : 3328,000
pourcentages d'octets dédiés utilisés :24,867
je n'ai aucun tableau dépassant 2 giga octets
je ne comprends pas pourquoi cette erreur
et surtout comment y remedier.
j'ai :Windows 7 édition familiale premium
service pack 1
dans système:
indice de performance Windows :5.8
processeur i7
Mémoire installée 'RAM) : 6.00 Go
(l'utilisable n'est pas indiquée, c'est pour cela que j'ai utilisé l'Analyseur de performance :)
type de Système: Système d'exploitation 64 bits
(et donc la limite est de 16 Go pour Windows 7 édition familiale premium, d'après l'article)
Présentation de l'analyseur de performance :
mémoire :
mégaoctets disponibles : 3328,000 (3,3 Go) au moment du plantage, mais 4.3 Go environ au début du programme
(ce qui correspond bien AU 0.9 Go )
mon vrai programme fonctionne parfaitement, mon seul probleme est ce probleme de mémoire!!!
mon vrai programme utilise des dictionnaires donc obligatoirement en memoire virtuel
utilisés pour éviter les doublons et recherche ultra rapide.
des tableaux sur disque sont bien trop lents (meme en RAM qui de toute façon pose le meme probleme)
un fichier random est bien trop lent (j'ai essayé) , même une recherche dans un tableau en ram (qui de toute façon pose le même problème de ram) est trop lent..., seul les dictionnaires sont assez rapide.
je pourrais couper les dictionnaires en bouts que je mettrai sur disque (par sauvegarde de 2 fichiers, 1 pour les Keys,1 pour les Items) mais cela pose un problème de rapidité pour éliminer les doublons présents dans les différents bouts de dictionnaires, et de rapidité de recherche, alors que avec 1 seul dictionnaire en mémoire c'est par construction du dictionnaire si facilement résolu et d'une vitesse incroyable ....
d'où ma recherche ... désespérée !!
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 19 juin 2015 à 18:01
Bonjour,
Je m'étais déjà "creusé le cerveau" sur ce sujet alors que tu avais ouvert une discussion sous le pseudo ClaudeDordogne.
En vain avec Excel et son VBA seuls. Excel a ses propres limites de stockage.
Tu peux tenter l'utilisation d'une véritable base de données, mais, même ainsi, il te faudra faire harakiri de l'importation de la totalité des enregistrements dans un recordset. Elle ne sera exploitable qu'à l'aide de requêtes filtrant (et donc en réduisant le nombre) les articles à "importer" dans un jeu d'enregistrement (recordset).
pijaku
Messages postés12263Date d'inscriptionjeudi 15 mai 2008StatutModérateurDernière intervention15 mars 202314 20 juin 2015 à 07:37
leraleursympa
Messages postés25Date d'inscriptionsamedi 4 avril 2015StatutMembreDernière intervention24 juin 2015 23 juin 2015 à 14:40
bonjour,
où rechercher l'information 32 ou 64 bits pour excel? windows 7 que j'utilise est 64 bits.
Merci de ta réponse.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 23 juin 2015 à 16:04
Pour la version, sur 2013, je dois aller dans le menu Excel (Fichier), puis Compte.
À droite tu vas dans À propos de Excel et tu vas voir en haut si c'est 32 ou 64 bits
Comme je n'ai pas 2010, je ne sais pas si c'est pareil...(?)
Vous n’avez pas trouvé la réponse que vous recherchez ?
leraleursympa
Messages postés25Date d'inscriptionsamedi 4 avril 2015StatutMembreDernière intervention24 juin 2015 23 juin 2015 à 21:14
bonsoir cs_MPi
pour la version 2007 pas de précision....
Pour la version, sur 2013....donc tu as la version 2013 :)
pourrais tu essayer de faire tourner ma,petite routine (celle d'en haut) en modifiant l pour connaitre les limites dans le cadre de excel 2013
et me préciser ta quantité de mémoire.
merci beaucoup d'avance
Claude "le raleur sympa"
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 23 juin 2015 à 21:49
Si tu es sous 2007, c'est 32 bits.
64 bits commence à la version 2010, il me semble.
Je vais toutefois faire un test demain
leraleursympa
Messages postés25Date d'inscriptionsamedi 4 avril 2015StatutMembreDernière intervention24 juin 2015 24 juin 2015 à 10:49
bonjour cs_MPi
merci de ton essai
10*2000000*8*6=960 Moctets environ
10*2100000*8*6=1 Goctets environ .... donc excel 2013 coince aussi à 1 Go .....
comme tu as 4 go je ne pense pas que se soit insuffisant...
à moins que ce soit les 32 bits qui coince???
quelqu'un a t il le 2010 32 bits ? (on ne sait jamais...., mais cela m'étonnerait) ou un 2010 ou 2013 en 64 bits ....
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 24 juin 2015 à 13:36
Je pense effectivement que ça doit coincer au niveau du 32 bits.
Et je ne pense pas me tromper en disant que la RAM, dépassé 2 gigs, selon les versions Office, ne change rien. C'est Excel qui décide le maximum de mémoire avec lequel il travaille.
Sous 2013, il me semble que c'est 2 gigs de RAM et il n'y a plus de swap sur disque dur. Donc, que le PC ait 4, 8 ou 16 gigs de RAM, aucun n'aura pas d'impact.
Il resterait à faire un test sur 64 bits pour voir...
Attention, toutefois : un programme sous 64 bits consomme plus de ram que sous 32 bits.
Une partie de ce que l'on gagne d'un côté est perdue de l'autre (on ne peut avoir le beurre et l'argent du beurre).
Les entiers et les adresses occupent, en 64 bits, 8 octets au lieu des 4 en 32 bits.
20 juin 2015 à 07:37
Je passe juste pour rebondir sur : Excel a ses propres limites de stockage.
Il s'avère que ce n'est pas adaptable ici car Leraleur dispose de 2007, mais, c'est toujours bon à savoir...
http://blogs.technet.com/b/backstage_2010/archive/2009/07/14/en-direct-de-la-wpc-jour-2-excel-2010-fait-son-show.aspx
Après il est vrai que cela reste Excel et qu'on en connait les limites...
Bon week end à tous.