Créer une macro plus rapide
Bjr,
J'ai créé une macro VBA qui me permet de faire correspondre 2 fichiers Excel.
En gros, la macro va voir les valeurs de 2 colonnes dans le premier fichier et elle doit ensuite aller voir si elle retrouve ces deux mêmes valeurs dans les 2 colonnes correspondantes de l'autre fichier.
Le problème est que ces fichiers sont très lourds (15000 lignes pour le premier, 59000 pour l'autre!!), et la macro que j'ai faite vérifie à chaque fois chaque ligne... Du coup, l'exécution est trèèèèèèèèès longue...
Voici mon code (désolé pour la mise en forme, je sais que c'est pas génial...) :
Code:
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
| Sub merge()
Dim cpt1, cpt2 As Double
Application.ScreenUpdating = False
Windows("Etude Garanties 1.xls").Activate
Sheets("REM").Select
cpt1 = Range("G65536").End(xlUp).Row
Windows("RIC 5 ANS au 12062008.xls").Activate
Sheets("RIC").Select
cpt2 = Range("E65536").End(xlUp).Row
Windows("Etude Garanties 1.xls").Activate
For n = 5 To cpt1
For k = 5 To cpt2
If (Workbooks("Etude Garanties 1.xls").Sheets("REM").Range("G" & n).Value = Workbooks("RIC 5 ANS au 12062008.xls").Sheets("RIC").Range("E" & k).Value) And (Workbooks("Etude Garanties 1.xls").Sheets("REM").Range("H" & n).Value = Workbooks("RIC 5 ANS au 12062008.xls").Sheets("RIC").Range("F" & k).Value) Then
Workbooks("Etude Garanties 1.xls").Sheets("REM").Range("BA" & n).Value = Workbooks("RIC 5 ANS au 12062008.xls").Sheets("RIC").Range("A" & k).Value
Workbooks("Etude Garanties 1.xls").Sheets("REM").Range("BB" & n).Value = Workbooks("RIC 5 ANS au 12062008.xls").Sheets("RIC").Range("B" & k).Value
Workbooks("Etude Garanties 1.xls").Sheets("REM").Range("BC" & n).Value = Workbooks("RIC 5 ANS au 12062008.xls").Sheets("RIC").Range("C" & k).Value
End If
Next
Next
Application.ScreenUpdating = True
End Sub |
Est-ce qu'il existe une autre solution qui me permettrait une exécution plus rapide, parce que à ce rythme, j'en ai pour des heures, voire des jours...
Merci
SG