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 : 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
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