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 :
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 Subklin89
Merci beaucoup Klin89, c'est génial, ça fonctionne parfaitement !!!!
Heureusement que vous êtes là !!!