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

Accélération code

  • Initiateur de la discussion Initiateur de la discussion gvives
  • Date de début Date de début

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 !

gvives

XLDnaute Occasionnel
Bonjour à tous,

J'ai une base de données (BDD_TAB.xslx") composée de 15 colonnes et pouvant atteindre jusqu'à 25 000 lignes voir plus. La première colonne de cette base de données contient des ages.

Cette base de données me permet d'alimenter une listview reprennant l'ensemble des colonnes en fonction de l'age retenu.

Mon code est organisé de la façon suivante :

Dim tab_BDD()
derligneBDD = Workbooks("BDD_TAB.xlsx").sheets("BDD_TAB").range("A65536").end(xlup).row
Redim tab_BDD(derligne -1, 14)

with workbooks("BDD_TAB.xlsx").sheets("BDD_TAB")

for a = 1 to 15

for i = 1 to derligneBDD

tab_BDD(i-1,a-1) = .cells(i,a )

next i

next a

end with

ageretenu = range("A1")

for i = 0 to derligneBDD - 1

if tab_BDD(i,0) = ageretenu then

listview1.listitems.add , , tab_BDD(i,1)
.... (et autres colonnes en list subitems)

End if

next i

Le traitement est long aussi j'aimerai savoir si ce code peut être optimisé et si vous pourriez éventuellement m'aiguiller sur la bonne direction.

Merci beaucoup pour votre aide.

Très bonne journée à tous !!
 
Dernière édition:
Bonjour.
2 remarques
1/ pourqoui construits-tu un tableau tab_BDD? tu pourrais travailler directement dans ta feuille (qui est un tableau)
2/ une solution serait de trier ta base de données par age afin que les ages identiques soient consécutif.
Tu tris, tu cherche l'age retenu(find), et tant que l'age est le même tu implémente ta listewiew.....
et n'oublis pas le application.screenupdating=false
 
bonsoir.
Ben moi au contraire je recommande vivement de commencer par :
VB:
Dim tab_BDD()
tab_BDD = Workbooks("BDD_TAB.xlsx").Sheets("BDD_TAB").UsedRange.Value
Attention: Tab_BDD s'en retrouvera basé 1, les UBound correspondant aux .Rows.Count et .Columns.Count de la UsedRange.
 
Bonsoir Dranreb, bonsoir Sousou,

Tous d'abord toutes mes excuses pour le retard de ma réponse impossible de me connecter depuis ce week end.

Merci beaucoup ! Je vais essayer le Used Range, ça m'a l'air d'être une bonne piste pour simplifier le code et l'accélérer.

Très bonne soirée à tous les deux,
 
- 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
15
Affichages
465
Réponses
5
Affichages
778
Réponses
10
Affichages
580
Réponses
5
Affichages
510
Réponses
4
Affichages
644
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…