Bonjour,
Je dois coder une "mini-appli" en VBA qui trie, dans une feuille donnée, les données de la colonne A pour les "dispatcher" sur d'autres feuilles d'un même classeur tout le tableau.
Mon code fonctionne très bien, mais je dois traiter des fichiers de minimum 30000 lignes et ça rame...
je me demande s'il ne faudrait pas que j'enlève les ".select" puis que je travaille avec des variables tableaux au lieu de copier-coller d'une feuille à l'autre.
Auriez-vous des conseils d'ordre général quant à l'optimisation de fonctions/procédures ?
Pourriez-vous svp me montrer comment optimiser le code ci-dessous "proprement" pour que j'ai un exemple de code optimisé et propre ?
Merci d'avance,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Sub dispatch() Dim chaine_test As String Dim compteur_boucle As Double Dim rang As Integer compteur_boucle = 1 Windows("Calcul_Dispatch.xls").Activate Sheets("Target").Select Range("A1").PasteSpecial For compteur_boucle = 2 To Range("A1").End(xlDown).Row Sheets("Target").Select If UserForm1.ProgressBar1.Value < Duree Then UserForm1.ProgressBar1.Value = (compteur_boucle / Sheets("Target").Range("A1").End(xlDown).Row) End If chaine_test = Range("A" & compteur_boucle).Value Range("A" & (compteur_boucle)).EntireRow.Copy If IsWorksheet(chaine_test) Then Sheets(chaine_test).Select Else Sheets.Add ActiveSheet.Name = chaine_test Sheets("Target").Range("A1").EntireRow.Copy If Sheets(chaine_test).Range("A1").Value <> "" Then Sheets(chaine_test).Range("A1").PasteSpecial End If End If rang = (Range("A65536").End(xlUp).Row + 1) Range("A" & rang).PasteSpecial Next compteur_boucle End Sub
Partager