Bonjour à tous,
J'ai un fichier avec une centaine de colonnes et plusieurs dizaines de milliers de lignes, et je souhaite récupérer simplement certaines colonnes, avec des conditions.
J'ai fait le code suivant :
Sub Tri()
Application.ScreenUpdating = False
val1 = 2
val2 = 2
val3 = 2
ligne = 2
For ligne = 2 To Range("A" & Rows.Count).End(xlUp).Row
'ou bien Do While ligne < Range("A" & Rows.Count).End(xlUp).Row
If Worksheets(1).Cells(ligne, 41) Like "Valeur 1" Then
Worksheets(2).Cells(val1, 2) = Worksheets(1).Cells(ligne, 45)
Worksheets(2).Cells(val1, 3) = Worksheets(1).Cells(ligne, 32)
Worksheets(2).Cells(val1, 7) = Worksheets(1).Cells(ligne, 81)
Worksheets(2).Cells(val1, 8) = Worksheets(1).Cells(ligne, 82)
Worksheets(2).Cells(val1, 9) = Worksheets(1).Cells(ligne, 83)
val1 = val1 + 1
ElseIf Worksheets(1).Cells(ligne, 41) Like "Valeur 2" Then
Worksheets(4).Cells(val2, 2) = Worksheets(1).Cells(ligne, 45)
Worksheets(4).Cells(val2, 3) = Worksheets(1).Cells(ligne, 32)
Worksheets(4).Cells(val2, 7) = Worksheets(1).Cells(ligne, 81)
Worksheets(4).Cells(val2, 8) = Worksheets(1).Cells(ligne, 82)
Worksheets(4).Cells(val2, 9) = Worksheets(1).Cells(ligne, 83)
val2 = val2 + 1
ElseIf Worksheets(1).Cells(ligne, 41) Like "Valeur 3" Then
Worksheets(6).Cells(val3, 2) = Worksheets(1).Cells(ligne, 45)
Worksheets(6).Cells(val3, 3) = Worksheets(1).Cells(ligne, 32)
Worksheets(6).Cells(val3, 7) = Worksheets(1).Cells(ligne, 81)
Worksheets(6).Cells(val3, 8) = Worksheets(1).Cells(ligne, 82)
Worksheets(6).Cells(val3, 9) = Worksheets(1).Cells(ligne, 83)
val3 = val3 + 1
End If
ligne = ligne + 1
Next
'ou Loop
End Sub
Ce code rempli parfaitement sa fonction, en copiant les colonnes qui m'intéressent sur différentes feuilles, par contre il est très lent lorsque le nombre de ligne est important (Sachant que je n'ai pas terminé le tri, j'aurai d'autres colonnes à récupérer, ce qui ralentira encore plus le code...).
Ma question est donc : Existe t'il un moyen ou des fonctions pour accélérer le tri ?
Merci d'avance pour votre aide !