Taille mémoire tableau multidimensionnel

skoobi

XLDnaute Barbatruc
Bonjour tout le monde,

J’essaye de comprendre comment la limite de taille (en octet) d’un tableau multidimensionnel est atteinte car après quelques tests, je constate que la taille maxi varie en fonction de la dimension du tableau.
Pour calculer la taille d’un tableau (trouvé dans l’aide) :
Tableau : 20 octets
+ 4 octets par dimension
+ nombre d’éléments (de chaque dimension) fois la taille de chacun d’eux (1 octet pour un type Byte, 16 octets pour un type Variant etc…).

Exemple de limite (environ) pour des tableaux de type Byte :
1 dimension :
Code:
Dim tableau(450000000) As Byte
taille : 20+4+(1*450000000)=450000024 octets

2 dimensions :
Code:
Dim tableau(20000, 20000) As Byte
taille : 20+8+(2*20000)=40028 octets

3 dimensions :
Code:
Dim tableau(700, 700, 700) As Byte
taille : 20+12+(3*700)=21032 octets

4 dimensions :
Code:
Dim tableau(145, 145, 145, 145) As Byte
taille : 20+16+(4*145)=616 octets

Conclusion : plus la dimension augmente, plus la taille maxi du tableau diminue :eek:?

Avez-vous les mêmes limites sur votre PC ?

Si non, cela signifie que l’on peut augmenter cette limite ?

C’est la où je veux en venir, pouvoir augmenter cette limite….(euhhh, je rêve là non…:cool:)

Gilbert
 

pierrejean

XLDnaute Barbatruc
Re : Taille mémoire tableau multidimensionnel

bonjour skoobi

Sauf erreur de ma part

Un tableau

Dim tableau(20000, 20000) As Byte

aura plutot comme limite

20+8+8*2000^2 soit 32 000 028

puis

Dim tableau(700, 700, 700) As Byte

20+12+8*700^3 soit 2 744 000 032
puis

Dim tableau(145, 145, 145, 145) As Byte

20+ 32+8*145^4 soit 3 536 405 052

Revois le nombre d'elements d'un tableau a plusieurs dimensions
 

skoobi

XLDnaute Barbatruc
Re : Taille mémoire tableau multidimensionnel

Bonjour pierrejean,

Merci, tu m'as mis sur la piste:).

En fait, voici le bon calcul:

Option Base 1
Dim tableau(21536, 21536) As Byte
taille: 20+8+1*21536^2 = 463 799 324 octets

Option Base 1
Dim tableau(774, 774, 774) As Byte
taille: 20+12+1*774^3 = 463 684 856 octets

Option Base 1
Dim tableau(146, 146, 146, 149) As Byte
taille: 20+16+1*146^3*149 = 463 708 300 octets

La limite en fait dépend de la mémoire disponible sur le PC au moment du lancement de la macro.
Voilà :)
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Taille mémoire tableau multidimensionnel

Re

Effectivement je m'etais un peu melangé les pieds entre les bits et les octets
1 octet=8 bits =1 byte
je vais l'ecrire 100 fois pour le memoriser (vieille technique utiliséee par feu mon instituteur ,toujours doublée pas mon père qui n'aurait surement pas porté plainte pour un gifle (qu'il doublait tout aussi systematiquement) . Il est vrai qu'il n'etait pas gendarme)
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 329
Messages
2 087 333
Membres
103 519
dernier inscrit
Thomas_grc11