Comparer deux documents

Bonjour,

J'ai besoin d'un conseil qui sera certainement très simple pour vous.

J'ai deux fichiers Excel avec les mêmes colonnes mais des données différentes. L'idée est simplement de les comparer, cela me permet de savoir qui a payé son abonnement ou non, en quelque sorte.

Avant, je faisais un copier coller du second fichier en dessous du premier pour faire ensuite un tri mais j'imagine que l'on peut faire cela plus facilement.

Merci d'avance pour votre aide précieuse

Boujour Supercoursfr. bonjour le forum,

Sans plus de détails, colonnes a comparer, noms et emplacement des fichiers, difficile de t'aider...

Ah pardon :)

C'est un fichier très simple avec des colonnes Nom, prénom, mail, numéro de téléphone, montant payé.

La ligne 1 contient le titre de la colonne.

Peut-être que l'on peut comparer les adresses mails ?

Merci

Re,

Nom et emplacements des fichiers... Si tu veux qu'on t'aide fait au moins l'effort !...

Bien sur :)

Le nom du premier fichier : paiement20202021-1

Le nom du second fichier : paiement20202021-2

L'emplacement des fichiers : sur le bureau

C'est juste que je ne saisis pas en quoi ces infos sont utiles mais je veux que tu m'expliques pour comprendre.

Merci de ton aide en tout cas

Bonjour et bienvenue,

Quelle est la version Excel utilisée ?

Cdlt.

Bonjour le fil, bonjour le forum,

Une proposition. Code à placer dans le premier fichier (qui prendra l'extension xlsm si tu utilises une version supérieure à Excel 2003).

Code à adapter au niveau des extensions : remplacer xlsx par xls si tu es sous Excel 2003, adapter aussi les variables O1 et O2 si besoin.

Comme tu le vois un code nécessite de la précision si tu ne veux pas que ça plante sans arrêt. C'est pour cela qu'il te faut être clair dans l'énoncé de tes demandes. Tu le sauras pour ton prochain post...

Sub Macro1()
Dim C1 As Workbook 'déclare la variable C1 (Classeur 1)
Dim C2 As Workbook 'déclare la variable C2 (Classeur 2)
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 21)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim DL1 As Integer 'déclare la variable DL1 (Dernière Ligne 1)
Dim DL2 As Integer 'déclare la variable DL2 (Dernière Ligne 2)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim R As Range 'déclare la variable R (Recherche)

Set C1 = ThisWorkbook 'définit le claseur 1 C1
CA = C1.Path & "\" 'définit le chemoin d'accèrs C1
Set O1 = C1.Worksheets(1) 'définit l'onglet 1 (j'ai pris le premier onglet du classeur 1, tu adapteras si ce n'est pas ça)
On Error Resume Next 'gestion des erreur (en cas d'erreur passe à la ligne suivante)
Set C2 = Workbooks("paiement20202021-2.xlsx") 'définit le classeur 2 (génère une erreur si le classeur 2 n'est pas ouvert. Attention comme tu n'as pas daigné fournir l'extension j'ai pris xlsx. Tu adapteras si ce n'est pas ça)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    Set C2 = Workbooks.Open(CA & "paiement20202021-2.xlsx") 'définit le classeur 2 C2 en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Set O2 = C2.Worksheets(1) 'définit l'onglet 2 (j'ai pris le premier onglet du classeur 2, tu adapteras si ce n'est pas ça)
DL1 = O1.Cells(Application.Rows.Count, "D").End(xlUp).Row 'définit la dernière ligne éditée DL1 de la colonne D du classeur 1
DL2 = O2.Cells(Application.Rows.Count, "D").End(xlUp).Row 'définit la dernière ligne éditée DL2 de la colonne D du classeur 2

'les cellules de la colonne D de l 'onglet O1 (du classeur C1) seront colorées de rouge si elles n'existent pas dans la colonne D de l'onglet O2 (du classeur C2)
For Each CEL In O1.Range("D2:D" & DL1) 'boucle sur toutes les cellules éditées CEL de la colonne D de l'onglet O1 de 2 à DL1
    Set R = O2.Columns(4).Find(CEL.Value, , xlValues, xlWhole) 'définit la recherche R (Recherche la valeur entière de la cellule CEL dans la colonne D de l'onglet O2)
    If R Is Nothing Then 'condition : si aucune occurrence n'est trouvée
        CEL.Interior.ColorIndex = 3 'colore la cellule de rouge
        Set R = Nothing 'vide la variable R
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle

'les cellules de la colonne D de l 'onglet O2 (du classeur C2) seront colorées de vert si elles n'existent pas dans la colonne D de l'onglet O1 (du classeur C1)
For Each CEL In O2.Range("D2:D" & DL1) 'boucle sur toutes les cellules éditées CEL de la colonne D de l'onglet O2 de 2 à DL2
    Set R = O1.Columns(4).Find(CEL.Value, , xlValues, xlWhole) 'définit la recherche R (Recherche la valeur entière de la cellule CEL dans la colonne D de l'onglet O1)
    If R Is Nothing Then 'condition : si aucune occurrence n'est trouvée
        CEL.Interior.ColorIndex = 4 'colore la cellule de vert
        Set R = Nothing 'vide la variable R
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
End Sub
Rechercher des sujets similaires à "comparer deux documents"