VBA - Charger un nombre de lignes dans un tableau [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
lundi 5 mai 2014
Statut
Membre
Dernière intervention
23 mai 2014
-
Messages postés
4
Date d'inscription
lundi 5 mai 2014
Statut
Membre
Dernière intervention
23 mai 2014
-
Bonjour,

Voilà mon problème, j'ai une base de données dont une table contient beaucoup, mais vraiment beaucoup de lignes qui fait que mon fichier excel met 2h!!! pour charger son tableau.
J'ai tout essayé sauf une approche d'où ma présence :

J'espérais charger un nombre précis de lignes puis au fur et à mesure que je m'approche de ce nombre, le fichier charge les lignes suivantes.

Pour être plus clair, je vous donne un exemple :

- je charge les 500 premières lignes
- arrivé à la ligne 100, le fichier charge les lignes 501 à 600
- puis à la ligne 200, le fichier charge les lignes 601 à 700
- etc.

Le problème est que je ne sais pas trop comment coder ce bout de code.

Je vous remercie par avance pour votre aide,

Cordialement 0zh0u.

2 réponses

Messages postés
23656
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 novembre 2020
6 479
Bonjour,

en imaginant que ce soit possible, ce dont je doute, en quoi ça serait plus rapide ? Ca ne peut être que plus lent.
Regarde si tu n'as pas des formules lourdes qui serait réévaluées à l'ouverture, des liens externes etc.
Passe en calcul manuel et refuse la mise à jour des liens pour voir la différence.
Et si le fichier est sur réseau a-t-il un débit suffisant ?

eric

Messages postés
4
Date d'inscription
lundi 5 mai 2014
Statut
Membre
Dernière intervention
23 mai 2014

Bonjour,

D'abord je te remercie d'avoir répondu.
J'ai tout essayé, utilisation d'objet, des array, etc.
A l'ouverture, j'ai désactivé les événements, je les active seulement dans une condition précise.

J'ai "disséqué" Excel et j'ai trouvé une fonction : private sub worksheet_selectionchange, avec une petite boucle de recherche de cellule, cela m'a permis de charger x lignes si l'utilisateur clique sur la cellule y.
Cela m'a permis de passé de 8265 secondes (aïe) à 188 secondes.

Cordialement, 0zh0u.