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

XL 2013 gigigg

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 !

Vous ne vous rappelez pas ? C'est la variable avec laquelle on construit le nom de la feuille et récupère les valeurs de Feuil1.Cells(NumSit + 14, etc.).Value
Alors la ligne pour la situation suivante ce sera NumSit + 15
 
Le plus simple serait de faire des affectations genre Feuil1.Cells(NumSit + 15, 10).Value = Feuil1.Cells(NumSit + 14, 10).Value - FCbl.Cells(x, y).Value
Mais ce ne serait pas le plus performant.
 
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.
 
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:
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:
- 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
13
Affichages
194
Réponses
16
Affichages
219
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…