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 ?

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
Merci d'avance,