Bonjourno,
Quelqu'un aurait des astuces pour ameliorer la rapidite des macros ?
Je sais que sur Java il est possible de faire un compteur pour chronométré le temps de realisation... peux t on faire la meme chose sous VBA ?
Merci ! :help:
Version imprimable
Bonjourno,
Quelqu'un aurait des astuces pour ameliorer la rapidite des macros ?
Je sais que sur Java il est possible de faire un compteur pour chronométré le temps de realisation... peux t on faire la meme chose sous VBA ?
Merci ! :help:
Un moyen tres simple est de desactiver la mise a jour de l'affichage
Attention, en cas de plantage si la ligne Application.ScreenUpdate=true n'est pas lue l'ecran restera fige. Il faut peut etre ajouter une ligne de type "On Error Goto XXX" ou "On Error Resume Next" (depend de ton code ;) ).Code:
1
2
3
4 Application.ScreenUpdate = false 'au debut de la procedure ... Application.ScreenUpdate=true 'a la fin
S'il existe d'autres moyen d'accelerer je suis preneur :mrgreen:
Je connaissais deja cette petite astuce ! En tout cas merci...
Je sais que j ai plein de boucles, de .find etc... y a t il une fonction plus rapide qu'une autre?
Toujours pas d'idee sur le compteur ?
Merci
Bonjour
Que fais ta macro, et est-ce que toutes les recherches se font sur une feuille ?
Starec
pis ça serait bien si on voyait ta macro parce que sinon on pourra rienf aire de plus que de te poser des questions :)
Je sais, je sais mais il y a des choses dans ma macro que je ne peux pas mettre en ligne.. En gros, la macro telecharge un ensemble de données d'une base Access, ensuite compare une colonne de la base à une autre base de données stockées sous excel, va chercher des infos sous Bloomberg et finalement fais la synthese de tout ca et le rend plus joli .... Ce qui prend le plus de temps c est la comparaison entre le telechargement de ma base access et la base qui est sous excel....
Bonjour
Pour Accéler le traitement stocke tes données dans deux tableaux dynamiques, ainsi toutes tes comparaisons ce feront beaucoup rapidement (des tableaux pas des tables Access).
Starec
Tu peux m expliquer comment on fait ca starec ?
Re
J'ai deux tableaux tabSource et tabDesti,(ce code sert à les remplir) ensuite je les compare comme deux feuilles excel, ou un feuille et une table.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Dim tabSource() As String Dim tabDesti() As String ' remplir les tableaux ReDim tabSource(8, wksSource.Range("A1").End(xlDown).Row + 1) For i = 1 To wksSource.Range("A1").End(xlDown).Row tabSource(1, i) = CStr(wksSource.Range("A" & i).Value) tabSource(2, i) = CStr(wksSource.Range("B" & i).Value) tabSource(3, i) = Replace(CStr(wksSource.Range("C" & i).Value), ",", ".") tabSource(4, i) = Replace(CStr(wksSource.Range("D" & i).Value), ",", ".") tabSource(5, i) = CStr(wksSource.Range("E" & i).Value) tabSource(6, i) = CStr(wksSource.Range("F" & i).Value) tabSource(7, i) = CStr(wksSource.Range("G" & i).Value) Next i ReDim tabDesti(8, wksDesti.Range("A1").End(xlDown).Row + 1) For i = 1 To wksDesti.Range("A1").End(xlDown).Row tabDesti(1, i) = CStr(wksDesti.Range("A" & i).Value) tabDesti(2, i) = CStr(wksDesti.Range("B" & i).Value) tabDesti(3, i) = Replace(CStr(wksDesti.Range("C" & i).Value), ",", ".") tabDesti(4, i) = Replace(CStr(wksDesti.Range("D" & i).Value), ",", ".") tabDesti(5, i) = CStr(wksDesti.Range("E" & i).Value) tabDesti(6, i) = CStr(wksDesti.Range("F" & i).Value) tabDesti(7, i) = CStr(wksDesti.Range("G" & i).Value) Next i
Pour exemple j'avais deux feuilles excel à comparer avec à peu prés 45000 lignes par feuille, avec des worsheet, etc.. environ 20 min, et avec les tableaux environ 2 min
Starec