Extraire différence entre deux fichiers excel

Fermé
lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016 - 20 mai 2016 à 12:25
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 23 mai 2016 à 19:40
Bonjour,

Voilà mon problème : j'ai deux fichiers excel très volumineux (environ 10 000 lignes chacun). J'aimerais extraire les lignes différentes entre les deux fichiers. Sachant que je ne suis pas très doué en excel, comment puis-je m'y prendre ?

Merci d'avance pour votre aide !!!!
A voir également:

3 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
22 mai 2016 à 04:13
Bonjour
Voici une proposition.
Cliquez sur le lien suivant, puis clic droit sur le lien proposé et sélectionnez "Enregistrer la cible du lien sous "
https://www.cjoint.com/c/FEwb4IYMIsw
Ouvrez le fichier,
Cliquez sur le bouton "Comparer 2 classeurs"
Une fenêtre s'ouvre: sélectionnez votre premier fichier
La fenêtre s'ouvre à nouveau: sélectionnez le deuxième fichier
Patientez quelques secondes
Le contenu des 2 classeurs est recopié et les lignes en écart sont filtrées dans les colonnes A et B
Si chaque classeur comporte plusieurs colonnes à comparer, la recopie de toutes ces colonnes est concentrée dans la même cellule.
A tester
Cdlt
0
lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016
23 mai 2016 à 09:01
Bonjour,
tout d'abord, merci beaucoup pour votre aide !!
Effectivement, ça marche. Néanmoins, comme le fichier ajouter toutes les infos dans la même cellules, j'obtiens un écart à chaque ligne, puisque le fichier contient un grand nombre d'informations, et par exemple l'adresse n'est pas forcément rentrée de la même manière dans les deux classeurs. J'ai essayé de copier-coller les colonnes "nom" sur deux nouveaux fichiers pour obtenir le seul écart sur ces colonnes. Mais, lorsque je charge ces deux nouveaux fichiers créés, j'obtient le message d'erreur suivant : "les liens hypertexte peuvent endommager votre ordinateur et vos données. Pour protéger votre ordinateur, ouvrez uniquement les liens hypertexte de sources fiables. Voulez-vous continuer ?". Si je continu, j'obtient "erreur d'exécution '457' : cette clé est déjà associée à un élement de cette collection".
Avez-vous la réponse à mon problème ?
Merci d'avance.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
23 mai 2016 à 09:26
Bonjour
Avez-vous la réponse à mon problème ? Peut-être! Pour cela il faudrait que je dispose d'un échantillon des 2 fichiers pour que je vois comment ils sont faits.
Déposez sur cjoint.com un extrait de vos 2 fichiers (sans données confidentielles) . Quelques lignes suffisent.
Pour déposer un fichier en pièce jointe
aller "www.cjoint.com"
-clic sur "parcourir"
-sélectionnez le fichier à envoyer
-clic sur "créer le lien Cjoint" (bouton en bas)
-clic droit sur le lien proposé, et sélectionnez "copier l'adresse du lien"
-sur votre nouvelle demande CCM, -clic droit coller
Répétez l'opération pour y déposer le 2ème fichier.
Cdlt
0
lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016
23 mai 2016 à 09:33
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
23 mai 2016 à 10:19
Voilà, remplacez le code précédent par celui-ci
Sub ExtractionDifférence()
    Application.ScreenUpdating = False
    Set f1 = ThisWorkbook
    
OuvrirFichier1:
    Fichier1 = Application.GetOpenFilename(filefilter:="tout,*.*", Title:="Sélection")
    If Fichier1 = False Then
        MsgBox "aucun fichier sélectionné", vbOKOnly + vbCritical, "fin de procédure "
        Exit Sub
    End If
    ThisWorkbook.FollowHyperlink Fichier1
    Fichier1 = ActiveWindow.Caption
    
OuvrirFichier2:
    Fichier2 = Application.GetOpenFilename(filefilter:="tout,*.*", Title:="Sélection")
    If Fichier2 = False Then
        MsgBox "aucun fichier sélectionné", vbOKOnly + vbCritical, "fin de procédure "
        Exit Sub
    End If
    If Fichier1 = Fichier2 Then
        MsgBox "Ce ficier est déjà ouvert"
        GoTo OuvrirFichier2
    End If
    ThisWorkbook.FollowHyperlink Fichier2
    Fichier2 = ActiveWindow.Caption
    
    f1.Activate
    Set F2 = Windows(Fichier1)
    Set F3 = Windows(Fichier2)
    ActiveSheet.AutoFilterMode = False
    Columns("A:C").ClearContents
    
    Set DicoF2 = CreateObject("Scripting.Dictionary")
    Set DicoF3 = CreateObject("Scripting.Dictionary")
    F2.Activate
    Sheets(1).Activate
    DerLigF2 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Row
    DerColF2 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    For Each C In Range("A2:A" & DerLigF2)
        For i = 1 To DerColF2
            If Cells(C.Row, i) = "" Then ValCell = "£" Else ValCell = Cells(C.Row, i) & "£"
            X = X & ValCell
        Next i
        DebC = C
        C = X
        DicoF2.Add C, ""
        C = DebC
        X = ""
    Next C
Cdlt
    f1.Activate
    [A2].Resize(DicoF2.Count) = Application.Transpose(DicoF2.keys)

    F3.Activate
    Sheets(1).Activate
    DerLigF3 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Row
    DerColF3 = Sheets(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    For Each C In Range("A2:A" & DerLigF3)
        For i = 1 To DerColF3
            If Cells(C.Row, i) = "" Then ValCell = "£" Else ValCell = Cells(C.Row, i) & "£"
            X = X & ValCell
        Next i
        DebC = C
        C = X
        DicoF3.Add C, ""
        C = DebC
        X = ""
    Next C
    f1.Activate
    [B2].Resize(DicoF3.Count) = Application.Transpose(DicoF3.keys)
    
    DerLigF1 = Application.WorksheetFunction.Max(DerLigF2, DerLigF3)
    Range("C2:C" & DerLigF1).FormulaR1C1 = "=IF(RC[-2]=RC[-1],"""",""Ecart"")"
    Range("A1") = Fichier1
    Range("B1") = Fichier2
    Range("C1") = "'Test"
    Columns("A:B").Select
    Selection.EntireColumn.AutoFit
    Selection.Replace What:="£", Replacement:="  ", LookAt:=xlPart
    For i = 1 To 10
        Cells.Replace What:="  ", Replacement:=" ", LookAt:=xlPart
    Next i
    Range("A1:C1").AutoFilter
    ActiveSheet.Range("A1:C" & DerLigF1).AutoFilter Field:=3, Criteria1:="Ecart"
End Sub
0
lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016
23 mai 2016 à 10:58
Désolé, toujours le même problème, tous les écarts avec les gros fichiers. Et je n'arrive pas à comparer mes nouveaux fichiers avec les colonnes "nom" seules.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016
23 mai 2016 à 11:15
Mettez-moi des exemples qui ne marchent pas
0
lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016
23 mai 2016 à 11:19
"Cdlt" : "erreur de compilation : Sub ou Function non définie"
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338 > lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016
23 mai 2016 à 11:24
Cdlt = cordialement, que vous avez recopiez en fin de programme , effacez .
La dernière ligne du programme doit être END SUB
0
lukilelillois Messages postés 6 Date d'inscription vendredi 20 mai 2016 Statut Membre Dernière intervention 23 mai 2016
23 mai 2016 à 16:02
Maintenant c'est "DicoF2.Add C, "" " qui coince
0