Bonjour,

Je cherche a comparer 2 tableaux de structure identique dans 2 fichiers différents et si le tableau du fichier 1 a des lignes en plus on l'ajoute au tableau du fichier 2.
Aujourd'hui j'utilise un système de double boucle et je compare la valeur de la case Ax ou je stock une valeur dont je me sert en "clé unique", mais c'est tres lourd. Avez vous des truc pour optimiser ca?

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
With Workbooks.Open(fichier1)
    'fichiersuivifnc.Sheet("Suivi des NC fournisseur").range("a1").Activate
    With .Worksheets("Suivi des NC fournisseur")
        .Cells.AutoFilter ' efface les filtre
        .Cells.AutoFilter ' le remet par défaut
        With .Sort
            .SortFields.Clear
            .SortFields.Add Key _
            :=Range("A2:A500"), SortOn:=xlSortOnValues, Order:=xlAscending, _
            DataOption:=xlSortNormal
            .SetRange Range("A1:AD346")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
 
 
        For j = 2 To .Range("A" & Rows.Count).End(xlUp).Row
            If .Range("a" & j).Value = "" Then GoTo suiviRQ
            For i = 2 To Fichierfnc.Worksheets("base externe").Range("A" & Rows.Count).End(xlUp).Row
                'if Fichierfnc.Worksheets("base externe").Range("a" & i).Value=""
                If Fichierfnc.Worksheets("base externe").Range("a" & i).Value = "" Or .Range("a" & j).Value = Fichierfnc.Worksheets("base externe").Range("a" & i).Value Then
                    Fichierfnc.Worksheets("base externe").Range("u" & i).Value = "oui"
                    Fichierfnc.Worksheets("base externe").Range("a" & i).Value = .Range("a" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("b" & i).Value = .Range("f" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("c" & i).Value = .Range("b" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("d" & i).Value = .Range("e" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("g" & i).Value = .Range("k" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("h" & i).Value = .Range("j" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("i" & i).Value = .Range("i" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("j" & i).Value = .Range("l" & j).Value
                    Fichierfnc.Worksheets("base externe").Range("f" & i).Value = .Range("p" & j).Value
                    If Fichierfnc.Worksheets("base externe").Range("ah" & i).Value = "" Then
                        Fichierfnc.Worksheets("base externe").Range("ah" & i).Value = .Range("w" & j).Value
                        If .Range("a" & j).Hyperlinks.Count > 0 Then Fichierfnc.Worksheets("base externe").Range("ai" & i).Value = fichier1 & "\" & .Range("a" & j).Hyperlinks(1).Address
                    End If
                    GoTo suivantfnc
                Else
                    'Fichierfnc.Worksheets("base externe").Range("u" & i).Value = "non"
                End If
            Next i
suivantfnc:
 
        Next j
 
 
 
suiviRQ:
    End With
    .Close False
End With