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

vitesse d'execution

G

GO

Guest
Qui pourrais me dire pourquoi un tri sous excel est rapide par les commandes Excel, alors que si on fait un macro VBA ça devient tout de suite très long pour le même résultats ?
Y a t'il moyen de gagner en vitesse en ayant non pas recours à des boucles mais à des fonction excel normalement réservées aux feuilles de calcul

Merci
 
S

SparKouS

Guest
Bonjour,

J'ai rencontré un problème similaire, devant écrire une Macro de Recherche et trie sur un nombre impressionnant de données venant de la feuille de calcul.

Resultat : j'avais estimé un temps d'execution > 100 heures .

Bref, j'ai réduit le temps d'execution à de l'instantané en réduisant les communications Excel / VBA au minimum.

Pour cela, déclarer un tableau sous VB qui recoit les données
Puis faire tous les tries et recherches souhaités
Et enfin resortir les résutat sur ta feuille .

Peut-être ca peut t'aider ...

A+
 
G

GO

Guest
Merci pour cette piste je vais voir ce que je peux faire,
si quelqu'un a un exemple déjà fait de création d'un tableau, de diverse manipulation de celui ci pour de réafichage, je suis très intéressé.
Pour l'instant (ça prend dans les 30 secondes) je fait des test cellules par cellules et c'est long je trouve. Et encore j'ai désactivé les affichage écran. Mais peut etre que l'utilisation de for each XXX in selection ... est "lent" d'office...

Merci

A+
 
R

Romain

Guest
Bonjour,
Pour accélérer la procédure, tu places cette ligne en début de procédure :
Application.ScreenUpdating = False
et en dernière ligne :
Application.ScreenUpdating = True
J'ai vérifié, sur un temps de 35 à 40 secondes, l'exécution est ramenée à 5 à 10 secondes.

a+

Romain
 
S

SparKouS

Guest
Pour le tableau sous VB :

Je l'initialise comme ca

Dim Tab1
Tab1 = Worksheets("Local1").Range("C3177").Value

(je trouve bizare qu'en déclaration on a pas besoin de dire que c'est un tableau , mais ca marche donc ...)

après tu manipules en précisant la case du tableau (une case = une cellule)

Ici c'est un tableau (ou une matrice selon le langage) de 175 lignes et 2 colonnes .
Donc tu utilises cette notation pour tester ou affecter , etc ...

Tab1(i,j)

i : numéro de ligne
j : numéro de colonne

Avec les boucles For , tu peux donc balayer le tableau,...


--
A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…