Voici une partie d'un script vba fait avec excel 2003. Il copie les lignes d'une feuille vers d'autres feuilles selon un critère. Le nom contenu dans la colone A correspond à une feuille ex:A1=Zootman alors la ligne complète est copiée dans une feuille dont l'onglet s'appelle Zootman. Le problème c'est qu'il est très long à executer. Je l'ai fait avec une boucle imbriquée. Ca prend presque 2h pour copier 16 500 lignes. Quelqu'un aurait une suggestion pour que ce soit plus rapide? Merci.
For i = 1 To Sheets.Count - 1 k = 1 For j = 1 To nbCell + 1 If Sheets(i).Name = Sheets("Zootman" ).Cells(j, 1).Value Then Worksheets("Zootman" ).Range("A" & j & ":" & "IV" & j).Copy Worksheets(i).Range("A" & k & ":" & "IV" & k).PasteSpecial k = k + 1 End If Next j Next i
dans mon cas précis: Sheets.Count = 112 feuilles et nbCell=16500
Marsh Posté le 04-07-2006 à 18:17:51
Voici une partie d'un script vba fait avec excel 2003. Il copie les lignes d'une feuille vers d'autres feuilles selon un critère. Le nom contenu dans la colone A correspond à une feuille ex:A1=Zootman alors la ligne complète est copiée dans une feuille dont l'onglet s'appelle Zootman. Le problème c'est qu'il est très long à executer. Je l'ai fait avec une boucle imbriquée. Ca prend presque 2h pour copier 16 500 lignes. Quelqu'un aurait une suggestion pour que ce soit plus rapide? Merci.
For i = 1 To Sheets.Count - 1
k = 1
For j = 1 To nbCell + 1
If Sheets(i).Name = Sheets("Zootman" ).Cells(j, 1).Value Then
Worksheets("Zootman" ).Range("A" & j & ":" & "IV" & j).Copy
Worksheets(i).Range("A" & k & ":" & "IV" & k).PasteSpecial
k = k + 1
End If
Next j
Next i
dans mon cas précis: Sheets.Count = 112 feuilles et nbCell=16500