Comparaison et mise à jour de fichier

  • Initiateur de la discussion LEMARCHAND
  • Date de début
L

LEMARCHAND

Guest
Bonjour,
je suis un peu nul dans excel et j'ai besoin de votre aide !
voici le probleme :
j'ai deux fichiers avec environ 40.000 lignes chacun, et il me faut les comparer pour sortir un troisieme fichier (de mise à jour)
c'est a dire qu'il faut que les deux fichiers se comparent et que je puisse avoi uniquement la mise à jour.
je pense qu'il faut que je fasse une macro de recherche, mais je ne sais pas comment faire!
d'avacnce merci a tous et j'avoue que je ne dirais pas non pour un petit exemple a telecharger!

olivier
 
L

LEMARCHAND

Guest
Aidez-moi SVP : Voici le probleme illustré

Voici l'exemple illustre :
feuille 1 : 1ère base
feuille 2 : 2ème base
et sur la feuille 3, j'aimerais avoir en rouge par exemple les rajouts de la 2ème base par rapport à la 1ère et en bleu les supression de la base 2 par rapport à la base 1
merci de m'aider
 

Pièces jointes

  • Exemple_probleme.xls
    14 KB · Affichages: 59
F

Fred

Guest
voici une macro de pierre fauconnier que j'ai trouvée sur disciplus elle comparre deux fichier mais ca ne repond pas exactement a ce que tu veux regarde et modifie a volonte, je te previens quand meme qu'avec autant de donnees le traitement est long (quelque minutes):

Sub Comparaison1()
Application.ScreenUpdating = False
Dim Collection1 As New Collection, collection2 As New Collection
Dim Cellule1 As Range, Cellule2 As Range
Dim Element1 As Object, Element2 As Object
Dim Time1 As Date, Time2 As Date
Time1 = Now()

Workbooks("classeur1.xls").Activate
For Each Cellule1 In Range("a:a")

Collection1.Add Cellule1
Next Cellule1

Workbooks("classeur2.xls").Activate
For Each Cellule2 In Range("a:a")

collection2.Add Cellule2
Next Cellule2
For Each Element1 In Collection1
For Each Element2 In collection2
If Element1 <> Element2 Then
Element1.Font.Color = vbRed
Else
Element1.Font.Color = vbBlack
Exit For
End If
Next Element2
Next Element1
Time2 = Now()

Debug.Print "Test collection :" & Format$(Time2 - Time1, "hh:mm:ss")
Application.ScreenUpdating = True
End Sub
 
S

STéphane

Guest
pas testé la précédente mais en voilà une autre

Sub CompareDeuxFichiers()
Dim Cell As Range, Plage As Range, I As Long, Classeur1 As Workbook, Classeur2 As Workbook, SFeuil1 As Worksheet, SFeuil2 As Worksheet

Application.ScreenUpdating = False
Set Classeur1 = ActiveWorkbook 'Workbooks("Exemple_probleme.xls")
Set Classeur2 = Workbooks("Exemple_probleme_2.xls")
Set ZoneResultat = Classeur1.Sheets("feuil3")

Set SFeuil1 = Classeur1.Sheets("Feuil1")
Set SFeuil2 = Classeur2.Sheets("Feuil2")
Set Plage1 = SFeuil1.Range(SFeuil1.[A1], SFeuil1.[A1].End(xlDown))
Set Plage2 = SFeuil2.Range(SFeuil2.[A1], SFeuil2.[A1].End(xlDown))

For Each cl In Plage1
If Plage2.Find(cl, Plage2(1), xlValues, xlWhole) Is Nothing Then
I = I + 1
ZoneResultat.Cells(I, 3) = cl
End If
Next cl
Classeur1.Sheets("feuil3").Select
End Sub

'ps le classeur ou doit figurer le code est le premier et il doit être actif


bye
STephane
 
S

STéphane

Guest
bonjour

Set Plage1 = SFeuil1.Range(SFeuil1.[A1], SFeuil1.[A1].End(xlDown))
Set Plage2 = SFeuil2.Range(SFeuil2.[A1], SFeuil2.[A1].End(xlDown))

au lieu de partir de A1 pour descendre tu peux partir de A65546 pour remonter

tu peux aussi sélectionner les cellules contenant quelquechose
Set Plage1 = SFeuil1.Range(SFeuil1.[A1], SFeuil1.[A65536].End(xlup)).specialcells(xlcelltypeconstant)

bye
stephane
 
L

LEMARCHAND

Guest
Bonjour Fred, Bonjour Stéphane,


C tres sympa vos reponses mais j'y comprends rien et j' y arrive pas
pouvez-vous m'envoyer une pièce-jointe avec un exemple concret et me stipuler plus clairement la demarche.

Désole et encore merci.
 

Discussions similaires

Réponses
21
Affichages
931

Statistiques des forums

Discussions
312 194
Messages
2 086 068
Membres
103 110
dernier inscrit
Privé