Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - problème de mémoire

  • Initiateur de la discussion Initiateur de la discussion vokaC
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

vokaC

XLDnaute Nouveau
Bonjour,

j'aimerais avoir votre avis sur le sujet. Je suis en train de faire une macro... au départ je stockais les données dans le dictionnaire principal, de trois dimensions Dico(1)(2)(3).
La deuxième dimension à 1100 valeurs environ (3 ans, 3 * 365)
La troisième n'a que 24 (heures de la journée).
et la première dimension est variable (au choix de l'utilisateur).

au dela de 150 pour la première dimension ça plante. la mémoire libre de l'ordinateur se vide et excel n'a plus de place.

J'ai réessayé de stocker les données dans un tableau de mêmes dimensions (500,3*365,24). Pareil, mémoire insuffisante.

Pourtant cela ne me parait pas excessif comme nombre de données à stocker.

pourriez-vous m'aider? est ce que je devrais déclarer différemment mes variable? est ce que c'est vraiment déconnant comme nombre de dimensions et est ce qu'il y a d'autres moyens de faire?

merci d'avance.

je vous joint en PJ le fichier test et ci-dessous la macro que j'ai créée.

------------------------------------
Sub testdico()

Dim dico As New Dictionary
Dim dico1 As New Dictionary
Dim dico2 As New Dictionary

Dim i As Integer, j As Integer, h As Integer, dateJ As Date
Dim clef As String

ReDim tabl(1 To 500, 1 To 3 * 365 + 1, 1 To 24) As Variant

Set dico = New Dictionary
For i = 1 To 500

Set dico1 = New Dictionary

For j = 1 To 3 * 365 + 1

Set dico2 = New Dictionary
dateJ = DateAdd("d", j - 1, DateSerial(2016, 1, 1))

For h = 1 To 24
clef = "H" & h
dico2.Add clef, Rnd() * 1500
Next h

dico1.Add dateJ, dico2
Set dico2 = Nothing
Next j

dico.Add i, dico1
Set dico1 = Nothing
Next i

End Sub
--------------------------------------------
Sub testtab()

Dim i As Integer, j As Integer, h As Integer, dateJ As Date
ReDim tabl(1 To 500, 1 To 3 * 365 + 1, 1 To 24) As Variant
For i = 1 To 500
For j = 1 To 3 * 365 + 1
For h = 1 To 24
tabl(i, j, h) = Rnd() * 1500
Next h
Next j
Next i
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
705
Réponses
4
Affichages
581
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
217
Réponses
10
Affichages
533
Réponses
3
Affichages
265
Réponses
2
Affichages
332
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…