Comparaison de 2 fichiers Excel et résultat dans un 3ème

Bonjour à toutes et tous,

Je suis débutant en excel et vraiment mauvais en informatique (ça pose les bases) ^^

J'espère donc que vous pourez m'aider à résoudre mon problème :

Je souhaite comparer deux versions d'un fichier excel (un ancien et l'update).

Pour ce faire, j'ai un dossier maître contenant un fichier excel vide.

En mettant dans ce dossier les deux fichiers que je veux comparer, il faudrait que mon fichier excel vide se remplisse.

Pour être plus précis :

80classeur1.xlsx (8.70 Ko)

Voilà le fichier type qui est à comparer avec sa version précédente.

grâce aux deux fichiers (ancien et update) mon fichier vide compare les lignes du fichier le plus récent avec l'autre.

Si une ligne dans le fichier le plus récent n'est pas identique à une ligne de l'ancien fichier, alors la ligne entière apparaît dans le troisième fichier vide.

Je ne sais pas si j'ai été suffisament clair et précis.

Merci d'avance pour votre aide

Bonsoir sdry, le forum

Sans plus d'explications, à tester :

Dans un même classeur, tes données à comparer en Feuil1 et Feuil2.

Restitution en Feuil3.

Option Explicit

Sub Comparaison()
Dim a, b(), txt As String, i As Long, j As Long, n As Long
    Application.ScreenUpdating = False
    a = Sheets("Feuil1").Range("A1").CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For i = 2 To UBound(a, 1)
            txt = Join$(Array(a(i, 1), a(i, 2), a(i, 3), _
                              a(i, 4), a(i, 5), a(i, 6), a(i, 7), a(i, 8)))
            .Item(txt) = Empty
        Next
        a = Sheets("Feuil2").Range("A1").CurrentRegion.Value
        ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
        For i = 2 To UBound(a, 1)
            txt = Join$(Array(a(i, 1), a(i, 2), a(i, 3), _
                              a(i, 4), a(i, 5), a(i, 6), a(i, 7), a(i, 8)))
            If Not .exists(txt) Then
                n = n + 1
                For j = 1 To UBound(b, 2)
                    b(n, j) = a(i, j)
                Next
                .Item(txt) = Empty
            End If
        Next
    End With
    If n > 0 Then
        'Restitution en Feuil3
        With Sheets("Feuil3").Cells(1)
            .CurrentRegion.Clear
            Sheets("Feuil2").Range("A1:H1").Copy .Resize(1, 8)
            .Offset(1).Resize(n, UBound(b, 2)).Value = b
            With .CurrentRegion
                With .Rows(1)
                    .Interior.ColorIndex = 40
                    .BorderAround Weight:=xlThin
                End With
                .VerticalAlignment = xlCenter
                .HorizontalAlignment = xlCenter
                .Borders(xlInsideVertical).Weight = xlThin
                .BorderAround Weight:=xlThin
                .Columns.AutoFit
            End With
            .Parent.Select
        End With
    Else
        MsgBox "Aucune donnée trouvée"
    End If
    Application.ScreenUpdating = True
End Sub

klin89

Merci beaucoup Klin89, c'est génial, ça fonctionne parfaitement !!!!

Heureusement que vous êtes là !!!

Rechercher des sujets similaires à "comparaison fichiers resultat 3eme"