Bonjour;
Voilà mon problème : j'ai deux fichiers excel très volumineux (environ 10 000 lignes chacun). J'aimerais extraire les lignes différentes entre les deux fichiers. Sachant que je ne suis pas très doué en excel, comment puis-je m'y prendre
j'ai trouvé le code suivant mais ça donne une erreur lors de la compilation au niveau de la fonction Transpose(DicoF2.keys).
Merci d'avance

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Sub ExtractionDifférence()
    Application.ScreenUpdating = False
    Set F1 = ThisWorkbook
 
OuvrirFichier1:
    Fichier1 = Application.GetOpenFilename(filefilter:="tout,*.*", Title:="Sélection")
    If Fichier1 = False Then
        MsgBox "aucun fichier sélectionné", vbOKOnly + vbCritical, "fin de procédure "
        Exit Sub
    End If
    ThisWorkbook.FollowHyperlink Fichier1
    Fichier1 = ActiveWindow.Caption
 
OuvrirFichier2:
    Fichier2 = Application.GetOpenFilename(filefilter:="tout,*.*", Title:="Sélection")
    If Fichier2 = False Then
        MsgBox "aucun fichier sélectionné", vbOKOnly + vbCritical, "fin de procédure "
        Exit Sub
    End If
    If Fichier1 = Fichier2 Then
        MsgBox "Ce ficier est déjà ouvert"
        GoTo OuvrirFichier2
    End If
    ThisWorkbook.FollowHyperlink Fichier2
    Fichier2 = ActiveWindow.Caption
 
    F1.Activate
    Set F2 = Windows(Fichier1)
    Set F3 = Windows(Fichier2)
    ActiveSheet.AutoFilterMode = False
    Columns("A:C").ClearContents
 
    Set DicoF2 = CreateObject("Scripting.Dictionary")
    Set DicoF3 = CreateObject("Scripting.Dictionary")
    F2.Activate
    Sheets(1).Activate
    DerLigF2 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Row
    DerColF2 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    For Each C In Range("A2:A" & DerLigF2)
        For i = 1 To DerColF2
            If Cells(C.Row, i) = "" Then ValCell = "-" Else ValCell = Cells(C.Row, i) & "£"
            X = X & ValCell
        Next i
        DebC = C
        C = X
        DicoF2.Add C, ""
        C = DebC
        X = ""
    Next C
    F1.Activate
    [A2].Resize(DicoF2.Count) = Application.Transpose(DicoF2.keys)
 
    F3.Activate
    Sheets(1).Activate
    DerLigF3 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Row
    DerColF3 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    For Each C In Range("A2:A" & DerLigF3)
        For i = 1 To DerColF3
            If Cells(C.Row, i) = "" Then ValCell = "-" Else ValCell = Cells(C.Row, i) & "£"
            X = X & ValCell
        Next i
        DebC = C
        C = X
        DicoF3.Add C, ""
        C = DebC
        X = ""
    Next C
    F1.Activate
[B2].Resize(DicoF3.Count) = Application.Transpose(DicoF3.keys)[/I][/I]
 
    DerLigF1 = Application.WorksheetFunction.Max(DerLigF2, DerLigF3)
    Range("C2:C" & DerLigF1).FormulaR1C1 = "=IF(RC[-2]=RC[-1],"""",""Ecart"")"
    Range("A1") = Fichier1
    Range("B1") = Fichier2
    Range("C1") = "'Test"
    Columns("A:B").Select
    Selection.EntireColumn.AutoFit
    Selection.Replace What:="£", Replacement:="  ", LookAt:=xlPart
    Range("A1:C1").AutoFilter
    ActiveSheet.Range("A1:C" & DerLigF1).AutoFilter Field:=3, Criteria1:="Ecart"
End Sub