XL 2013 gigigg

Dranreb

XLDnaute Barbatruc
Le plus performant serait de charger les données nécessaire dans des tableaux en une seule fois pour chacun d'eux, faire les calcul à partir des éléments des tableaux, ranger leurs résultats dans les élément d'un tableau résultant d'une ligne et x colonnes, et décharger tout à la fin d'un coup celui ci dans la ligne.
 

Dranreb

XLDnaute Barbatruc
Je parlais seulement de tableaux VBA en mémoire.
La propriété Value d'un objet Range représentant plusieurs cellule contigües est un tel tableau d'éléments de type Variant, toujours à 2 dimensions, même quand il n'y a qu'une ligne ou une colonne.
Dites vous bien que l'accès à la Value d'un Range est pénalisant quel que soit le nombre de cellules de cette plage. Donc 10000 accès à une seule cellule chaque fois dure 10000 fois plus longtemps qu'un seul accès à une plage de 10000 cellules. Même si ce n'est quand même pas tout à fait vrai, ça l'est assez pour qu'on puisse partir de ce principe.
Les accès aux éléments d'un tableau en mémoire sont quand à eux très rapides. Des milliers de fois plus rapides probablement que l'accès à la Value d'un Range.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Pour déclarer un tableau dynamique d'éléments Variant il suffit de mettre des parenthèses vides derrière son nom
VB:
Dim T()
Pour dimensionner à l'exécution un tableau dynamique c'est
VB:
Redim T(1 To LMax, 1 To CMax)
LMax et CMax étant des expressions valant les nombres de lignes et de colonnes désirées. Il est inutile de le faire s'il sera récupéré de la Value d'un Range de plusieurs cellules: il sera dimensionné automatiquement à la taille de la plage.

Pour initialiser un élément du tableau c'est
VB:
T(L, C) = Expression
Pour le lire c'est
VB:
Variable = T(L, C)
L et C étant bien entendu des expressions valant les numéros de ligne et de colonne à atteindre.

Un élément de tableau peut lui même être utilisé partout en tant que variable ou en tant qu'expression, ce qui vous indique comment transférer un élément de tableau dans un autre élément de tableau.

L'expression UBound(T, 1) retrouve le nombre de lignes, UBound(T, 2) le nombre de colonnes.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T