Comparer deux fichiers excel
Bonsoir,
j’essaie de faire une macro qui compare et affiche les différences entre deux fichiers excel.
J'en suis au code suivant qui à partir d'un fichier A et B de structure identique m'affiche les différences si une valeur à était modifier entre le fichier A et B
Mais je voudrais rajouter la ligne en question dans la colonne B.
Est-ce que vous savez comment rajouter cette info ?
Cela me permettrai de savoir qu'il y a une différence entre le fichier A et B à la ligne 450 avec une valeur qui est passé de 25 dans la colonne D du fichier A à une valeur 22 dans la même colonne D du fichier B.
Merci par avance pour votre aide.
Code:
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
|
Option Explicit
Private Sub cmdAnalyse_Click()
Dim strRepFicA As String, strRepFicB As String
Dim wbFicA As Workbook, wbFicB As Workbook, wbFicAna As Workbook
Dim wsFicA As Worksheet, wsFicB As Worksheet, wsFicAna As Worksheet
Dim lgLig As Long, lgCol As Long
Dim lgLigDeb As Long
' Répertoire et Fichier
strRepFicA = ThisWorkbook.Path & "\" & "Fichier A.xls"
strRepFicB = ThisWorkbook.Path & "\" & "Fichier B.xls"
' Classeur d'analyse
Set wbFicAna = ThisWorkbook
Set wsFicAna = wbFicAna.ActiveSheet
' Vérifier que les fichiers A et B se trouvent dans le répertoire
If Dir(strRepFicA) = "" Or Dir(strRepFicB) = "" Then
MsgBox "Le fichier A et/ou le fichier B sont introuvables", vbCritical + vbOKOnly, "Problème de fichiers..."
Exit Sub
End If
Application.ScreenUpdating = False
' Ouverture du fichier A et définition de la feuille de traitement
Set wbFicA = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "Fichier A.xls")
Set wsFicA = wbFicA.Worksheets("Fichier A")
' Ouverture du fichier B et définition de la feuille de traitement
Set wbFicB = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "Fichier B.xls")
Set wsFicB = wbFicB.Worksheets("Fichier B")
' Vider les lignes du fichier d'analyse
wsFicAna.Range("A2:P" & Cells.Rows.Count).ClearContents
' Première ligne d'affichage des résultats dans le fichier d'analyse
lgLigDeb = 2
' Traitement des lignes des 2 fichiers
' Lignes : 2 à 30000
For lgLig = 2 To 26000
' Colonnes : D à AO
For lgCol = 1 To 4
' Une différence est trouvée dans une ligne
If wsFicA.Cells(lgLig, lgCol).Value <> wsFicB.Cells(lgLig, lgCol).Value Then
' Affichage du nom du fichier en colonne A
wsFicAna.Range("A" & lgLigDeb).Value = wbFicA.Name
' Copier la ligne du fichier A dans le fichier d'analyse
wsFicA.Range("A" & lgLig & ":" & "O" & lgLig).Copy _
Destination:=wsFicAna.Range("C" & lgLigDeb)
' Affichage du nom du fichier en colonne A
wsFicAna.Range("A" & lgLigDeb + 1).Value = wbFicB.Name
' Copier la ligne du fichier B dans le fichier d'analyse
wsFicB.Range("A" & lgLig & ":" & "O" & lgLig).Copy _
Destination:=wsFicAna.Range("C" & lgLigDeb + 1)
wsFicAna.Range("B" & lgLig).Value = ActiveCell.Row
lgLigDeb = lgLigDeb + 2
Exit For
End If
Next lgCol
Next lgLig
' Fermer les fichiers A et B
wbFicA.Close savechanges:=False
wbFicB.Close savechanges:=False
MsgBox "Traitement terminé"
Application.ScreenUpdating = True
End Sub |