Comparaison de deux fichiers avec même données

Tara_23

XLDnaute Nouveau
Bonjour à tous,
J'aurai besoin de vos compétences pour résoudre cette problématique:
J'ai deux fichiers Excel avec des tableaux de données, Ces tableaux sont des extractions de deux systèmes différents, et mon but est de comparer les données dans les deux systèmes, et de voir s'il n y a aucun écrat entre les deux systèmes.
Les extractions comportent des milliers de lignes, faire cette comparaison manuellement va prendre bcp de temps et peut être source d'erreur.
Ce que j'aimerai c'est automatiser la comparaison.
J'ai mis en PJ le type de fichier que je voudrais comparer avec un autre de même type.
J'y ai aussi expliquer en qqs lignes la façon dont la comparaison doit se faire.

Merci pour vos éventuelles aides et propositions, je ne suis pas très forte en Excel !
 

Pièces jointes

  • ExpInput.xlsx
    9.3 KB · Affichages: 73

Robert

XLDnaute Barbatruc
Repose en paix
Re : Comparaison de deux fichiers avec même données

Bonjour Tara et bienvenue, bonjour le forum,

Une macro à adapter à ton cas au niveau du nom du classeur cible (ici ClasseurCible.xlsx), des noms des onglets de chaque classeur (ici Feuil1") et de la position de départ des tableaux (ici A1) :
Code:
Sub Macro1()
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim os As Object 'déclare la variable os (Onglet Source)
Dim oc As Object 'déclare la variable oc (Onglet Cible)
Dim tbs As Variant 'déclare la variable tbs (TaBleau Source)
Dim tbc As Variant 'déclare la variable tbc (TaBleau Cible)
Dim li As Long 'déclare la variable li (LIgne)
Dim col As Integer 'déclare la variable col (COLonne)
Dim tcp() As Long 'déclare la variable tcp (Tableau ComParateur)
Dim i As Long 'déclare la variable i (Incrément)

Set cs = ThisWorkbook 'définit le classeur source
'il faut impérativement que le classeur cible soit ouvert !
Set cc = Workbooks("ClasseurCible.xlsx") 'définit la classeur cible (à adapter à ton cas (renommer)
Set os = cs.Sheets("Feuil1") 'définit l'onglet source (à adapter à ton cas)
Set oc = cc.Sheets("Feuil1") 'définit l'onglet cible (à adapter à ton cas)
tbs = os.Range("A1").CurrentRegion.Value 'définit le tableau tbs (position de départ à adapter à ton cas)
tbc = oc.Range("A1").CurrentRegion.Value 'définit le tableau tbc (position de départ à adapter à ton cas)
For li = 1 To UBound(tbs, 1) 'boucle 1 : sur toutes les lignes du tableau source
    For col = 1 To UBound(tbs, 2) 'boucle 2 : sur toutes les colonnes du tableau source
        If tbs(li, col) <> tbc(li, col) Then 'si les valeurs de la même position des deux tableaux sont différentes
            ReDim Preserve tcp(1, i) 'redimensionne le tableau comparateur
            tcp(0, i) = li: tcp(1, i) = col 'récupère le numéro de ligne et le numéro de colonne
            i = i + 1 'incrémente i
        End If 'fin de la condition
    Next col 'prochaine colonne de la boucle 2
Next li 'prochaine ligne de la boucle 1
On Error GoTo fin 'gestion des erreurs, en cas d'erreur va à l'étiquette "fin"
MsgBox "Nombre de valeurs différentes : " & UBound(tcp, 1) 'message (génère une erreur si aucune valeur différente)
For i = 0 To UBound(tcp, 1) - 1 'boucle sur toutes les valeurs du tableau tcp 
    'repérage par couleur rouge des cellules différentes
    os.Cells(tcp(0, i), tcp(1, i)).Interior.ColorIndex = 3 'onglet source
    oc.Cells(tcp(0, i), tcp(1, i)).Interior.ColorIndex = 3 'onglet cible
Next i 'prochaine valeur de la boucle
Exit Sub 'sort de la procédure
fin: 'étiquette
MsgBox "Les deux classeurs sont identiques !"
End Sub
 

Tara_23

XLDnaute Nouveau
Re : Comparaison de deux fichiers avec même données

Bonjour Rober,
Vraiment merci pour ton aide.

Désolée pour la version du fichier, la prochaine fois j'y penserai.

En tout cas merci pour la solution, je vais essayer de l'implémenter et l'éxecuter.
Je te tiendrai au courant asap.

Encore merci bcp!
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel