Hello world !
Je reviens vers vous après un petit silence respectable, afin de vous soumettre une question :
J'ai actuellement un bout de code :
Ce dernier fait partie d'une procédure plus complète mais je ne mets que la selection qui me pose problème.
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 Dim p0 As Long Dim p1 As Long p0 = 0 p1 = 2 For p0 = Range("E" & Rows.Count).End(xlUp).Row To 1 Step -1 If InStr(Cells(p0, 5).Value, "HA") = 1 Or InStr(Cells(p0, 5).Value, "B2") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("X2").Rows(p1) If InStr(Cells(p0, 5).Value, "BA") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("X3").Rows(p1) If InStr(Cells(p0, 5).Value, "BB") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("X3").Rows(p1) If InStr(Cells(p0, 5).Value, "BC") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("X3").Rows(p1) If InStr(Cells(p0, 5).Value, "B4") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("X4").Rows(p1) If InStr(Cells(p0, 5).Value, "BB4") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("X4").Rows(p1) If InStr(Cells(p0, 5).Value, "BB3") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("X4").Rows(p1) If InStr(Cells(p0, 5).Value, "XX") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("XY").Rows(p1) If InStr(Cells(p0, 5).Value, "XV") = 1 Then Cells(p0, 5).EntireRow.Copy Destination:=Sheets("XK").Rows(p1) p1 = p1 + 1 Next p0
J'ai un fichier qui varie de 5.000 à 30.000 lignes, et le petit code précédent, fait une recherche sur une partie de valeur dans la colonne E, et si la valeur est égale à HA (par exemple), copie la ligne complète dans l'onglet de destination (X2 pour cet exemple).
J'ai deux problèmes avec ce code.
1. Il est LONG !
Selon mon fichier, ce petit bout de code à une durée qui varie de 2minutes à 8-10minutes, et j'ai pourtant épuré la procédure autant que possible (j'ai déjà effectué une recherche sur la marche à suivre pour accelérer une macro, et suivi les conseils trouvés)
2. Je suis obligé de ré-organiser mes onglets de destination (avec un .sort)après l'utilisation de cette partie de macro, car des lignes vierges sont présentes un peu partout.
J'ai effectué des recherches plus ou moins avancées sur ces deux problèmes, mais je n'ai malheureusement que trop peu de temps par jour pour trouver une solution vraiment satisfaisante pour les besoins de mon travail.
Aussi ... Si quelqu'un avait la moindre idée d'une marche à suivre, d'une fonction, ou une boucle moins lourde ... Je serais très reconnaissant !
PS : Je ne demande pas nécessaire une solution toute faite (quoique ça ferait un bon gain de temps!), mais des idées, des conseils, des pensées...
Plusieurs cerveaux valent mieux qu'un
Par avance, merci !![]()
Partager