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
Partager