Bonjour Tictok
Renseigne la variable désignée dans la procédure...
pas le temps de tester
'--------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
Dim NomCeClasseur As String
Dim NomAutreClasseur As String
NomCeClasseur = ThisWorkbook.Name
'à renseigner la variable
NomAutreClasseur = Workbooks("NomDuClasseur).Name
With Workbooks(NomCeClasseur).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(NomAutreClasseur).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg(A, B).Offset(, 4) = "Cb"
End If
On Error GoTo 0
Else
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg(A, B).Offset(, 4) = "ok"
Rg1(A, B).Offset(, 4) = "ok"
End If
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg1(A, B).Offset(, 4) = "CaC"
End If
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'--------------------------
Salutations!
"tictok" a écrit dans le message de
news:
Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai arrete. :(
Je ne veux pas avoir une liste des donnees uniques et trouvees dans les
deux
fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison des
colonnes A), ALORS (la donnee de la cellule de la colonne C du premier
fichier est egale a celle du second fichier) ET (ecrire "OK" dans la
cellule
de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le second,
ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le premier,
ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des colonnes E de
chaque fichier ne devrait etre vide. Chaque cellule des colonnes E devrait
contenir "OK" ou "CB" ou "Cac", mais ne peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue dans un
fichier externe : de ce fichier contentant la macro, je vais traiter les
deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai chauffer
le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans le
second appel .
C ) résultats dans le classeur contenant cette procédure dans la feuille
résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers
Colonne B " " : les données uniques au classeur contenant
cette macroColonne C " " : les données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour comparer
la
cellule A d'un fichier avec la cellule A d'autre. Chaque fichier
contient
environ 27000 lignes, donc ce n'est pas un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte (non
desvaleurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure des
heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison entre les
deux fichiers ou de copier le contenu du second dans le premier ?
Ca ne me gene pas du tout de copier le contenu, j'ai un PC assez
puissant
pour ca. C'est surtout pour un probleme de vitesse d'execution et de
stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action
ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le second,
alors
faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le premier,
alors
faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du premier
fichierdans le second (et vice versa), peut on le faire en meme temps ou vaut
t'ilmieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de données a
traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de http://www.excelabo.net/xl/comparer.php
mais sans grand succes.)
Bonjour Tictok
Renseigne la variable désignée dans la procédure...
pas le temps de tester
'--------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
Dim NomCeClasseur As String
Dim NomAutreClasseur As String
NomCeClasseur = ThisWorkbook.Name
'à renseigner la variable
NomAutreClasseur = Workbooks("NomDuClasseur).Name
With Workbooks(NomCeClasseur).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(NomAutreClasseur).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg(A, B).Offset(, 4) = "Cb"
End If
On Error GoTo 0
Else
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg(A, B).Offset(, 4) = "ok"
Rg1(A, B).Offset(, 4) = "ok"
End If
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg1(A, B).Offset(, 4) = "CaC"
End If
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'--------------------------
Salutations!
"tictok" <nomail@yet.com> a écrit dans le message de
news:uVaNbbOPEHA.3328@TK2MSFTNGP09.phx.gbl...
Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai arrete. :(
Je ne veux pas avoir une liste des donnees uniques et trouvees dans les
deux
fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison des
colonnes A), ALORS (la donnee de la cellule de la colonne C du premier
fichier est egale a celle du second fichier) ET (ecrire "OK" dans la
cellule
de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le second,
ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le premier,
ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des colonnes E de
chaque fichier ne devrait etre vide. Chaque cellule des colonnes E devrait
contenir "OK" ou "CB" ou "Cac", mais ne peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue dans un
fichier externe : de ce fichier contentant la macro, je vais traiter les
deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai chauffer
le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" <michdenis@hotmail.com> escreveu na mensagem
news:eDEuO3NPEHA.3632@TK2MSFTNGP10.phx.gbl...
Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans le
second appel .
C ) résultats dans le classeur contenant cette procédure dans la feuille
résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers
Colonne B " " : les données uniques au classeur contenant
cette macro
Colonne C " " : les données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" <nomail@yet.com> a écrit dans le message de
news:e$BN6iNPEHA.640@TK2MSFTNGP12.phx.gbl...
Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour comparer
la
cellule A d'un fichier avec la cellule A d'autre. Chaque fichier
contient
environ 27000 lignes, donc ce n'est pas un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte (non
des
valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure des
heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison entre les
deux fichiers ou de copier le contenu du second dans le premier ?
Ca ne me gene pas du tout de copier le contenu, j'ai un PC assez
puissant
pour ca. C'est surtout pour un probleme de vitesse d'execution et de
stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action
ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le second,
alors
faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le premier,
alors
faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du premier
fichier
dans le second (et vice versa), peut on le faire en meme temps ou vaut
t'il
mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de données a
traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de http://www.excelabo.net/xl/comparer.php
mais sans grand succes.)
Bonjour Tictok
Renseigne la variable désignée dans la procédure...
pas le temps de tester
'--------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
Dim NomCeClasseur As String
Dim NomAutreClasseur As String
NomCeClasseur = ThisWorkbook.Name
'à renseigner la variable
NomAutreClasseur = Workbooks("NomDuClasseur).Name
With Workbooks(NomCeClasseur).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(NomAutreClasseur).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
Application.ScreenUpdating = False
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg(A, B).Offset(, 4) = "Cb"
End If
On Error GoTo 0
Else
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg(A, B).Offset(, 4) = "ok"
Rg1(A, B).Offset(, 4) = "ok"
End If
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
If Rg(A, B).Offset(, 2) = Rg1(A, B).Offset(, 2) Then
Rg1(A, B).Offset(, 4) = "CaC"
End If
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'--------------------------
Salutations!
"tictok" a écrit dans le message de
news:
Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai arrete. :(
Je ne veux pas avoir une liste des donnees uniques et trouvees dans les
deux
fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison des
colonnes A), ALORS (la donnee de la cellule de la colonne C du premier
fichier est egale a celle du second fichier) ET (ecrire "OK" dans la
cellule
de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le second,
ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le premier,
ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des colonnes E de
chaque fichier ne devrait etre vide. Chaque cellule des colonnes E devrait
contenir "OK" ou "CB" ou "Cac", mais ne peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue dans un
fichier externe : de ce fichier contentant la macro, je vais traiter les
deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai chauffer
le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans le
second appel .
C ) résultats dans le classeur contenant cette procédure dans la feuille
résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers
Colonne B " " : les données uniques au classeur contenant
cette macroColonne C " " : les données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour comparer
la
cellule A d'un fichier avec la cellule A d'autre. Chaque fichier
contient
environ 27000 lignes, donc ce n'est pas un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte (non
desvaleurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure des
heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison entre les
deux fichiers ou de copier le contenu du second dans le premier ?
Ca ne me gene pas du tout de copier le contenu, j'ai un PC assez
puissant
pour ca. C'est surtout pour un probleme de vitesse d'execution et de
stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action
ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le second,
alors
faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le premier,
alors
faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du premier
fichierdans le second (et vice versa), peut on le faire en meme temps ou vaut
t'ilmieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de données a
traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de http://www.excelabo.net/xl/comparer.php
mais sans grand succes.)
Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou on
va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." escreveu na mensagem
news:Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des colonnes
E de chaque fichier ne devrait etre vide. Chaque cellule des
colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne peut
etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je vais
traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans
le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas un
petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte
(non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure
des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:
Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou on
va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." <pav4006@skynet.be> escreveu na mensagem
news:O2tmaoOPEHA.3016@tk2msftngp13.phx.gbl...
Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:
Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des colonnes
E de chaque fichier ne devrait etre vide. Chaque cellule des
colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne peut
etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je vais
traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" <michdenis@hotmail.com> escreveu na mensagem
news:eDEuO3NPEHA.3632@TK2MSFTNGP10.phx.gbl...
Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans
le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" <nomail@yet.com> a écrit dans le message de
news:e$BN6iNPEHA.640@TK2MSFTNGP12.phx.gbl...
Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas un
petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte
(non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure
des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou on
va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." escreveu na mensagem
news:Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des colonnes
E de chaque fichier ne devrait etre vide. Chaque cellule des
colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne peut
etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je vais
traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans
le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas un
petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte
(non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure
des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
J'ai deux fichiers.
Ces fichiers ont plusieurs colonnes remplies.
Je veux comparer les colonnes A de chaque fichier.
Chaque cellule de la colonne A contient un code.
Quand j'ecris dans la colonne C, c'est exprès et je sais ce que je
fais. J'utilise la colonne E car elle n'est pas remplie et je peux
donc m'en servir.
Pour l'instant, je me base sur le second code donne par michdenis
(pas le premier !).
Mais j'ai du mal a comprendre pourquoi ca ne marche pas.
Pour repondre a ta question, on devrait se retrouver a la fois dans
les deuxiemes et troisiemes cas :
- deuxieme car il ne trouve pas "Toto"
- troisieme car il ne trouve pas "PasToto"
Si ca marche comme ca, c'est bon car pour moi Toto et PasToto sont
bien deux choses differentes !
Justement, le Application.Match fait bien une comparaison EXACTE ?
"Paul V." escreveu na mensagem
news:Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou
on va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." escreveu na mensagem
news:Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des
colonnes E de chaque fichier ne devrait etre vide. Chaque cellule
des colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne
peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je
vais traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur
dans le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas
un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type
texte (non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca
dure des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
J'ai deux fichiers.
Ces fichiers ont plusieurs colonnes remplies.
Je veux comparer les colonnes A de chaque fichier.
Chaque cellule de la colonne A contient un code.
Quand j'ecris dans la colonne C, c'est exprès et je sais ce que je
fais. J'utilise la colonne E car elle n'est pas remplie et je peux
donc m'en servir.
Pour l'instant, je me base sur le second code donne par michdenis
(pas le premier !).
Mais j'ai du mal a comprendre pourquoi ca ne marche pas.
Pour repondre a ta question, on devrait se retrouver a la fois dans
les deuxiemes et troisiemes cas :
- deuxieme car il ne trouve pas "Toto"
- troisieme car il ne trouve pas "PasToto"
Si ca marche comme ca, c'est bon car pour moi Toto et PasToto sont
bien deux choses differentes !
Justement, le Application.Match fait bien une comparaison EXACTE ?
"Paul V." <pav4006@skynet.be> escreveu na mensagem
news:OquneMPPEHA.3944@tk2msftngp13.phx.gbl...
Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:
Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou
on va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." <pav4006@skynet.be> escreveu na mensagem
news:O2tmaoOPEHA.3016@tk2msftngp13.phx.gbl...
Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:
Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des
colonnes E de chaque fichier ne devrait etre vide. Chaque cellule
des colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne
peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je
vais traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" <michdenis@hotmail.com> escreveu na mensagem
news:eDEuO3NPEHA.3632@TK2MSFTNGP10.phx.gbl...
Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur
dans le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" <nomail@yet.com> a écrit dans le message de
news:e$BN6iNPEHA.640@TK2MSFTNGP12.phx.gbl...
Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas
un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type
texte (non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca
dure des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
J'ai deux fichiers.
Ces fichiers ont plusieurs colonnes remplies.
Je veux comparer les colonnes A de chaque fichier.
Chaque cellule de la colonne A contient un code.
Quand j'ecris dans la colonne C, c'est exprès et je sais ce que je
fais. J'utilise la colonne E car elle n'est pas remplie et je peux
donc m'en servir.
Pour l'instant, je me base sur le second code donne par michdenis
(pas le premier !).
Mais j'ai du mal a comprendre pourquoi ca ne marche pas.
Pour repondre a ta question, on devrait se retrouver a la fois dans
les deuxiemes et troisiemes cas :
- deuxieme car il ne trouve pas "Toto"
- troisieme car il ne trouve pas "PasToto"
Si ca marche comme ca, c'est bon car pour moi Toto et PasToto sont
bien deux choses differentes !
Justement, le Application.Match fait bien une comparaison EXACTE ?
"Paul V." escreveu na mensagem
news:Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou
on va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." escreveu na mensagem
news:Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des
colonnes E de chaque fichier ne devrait etre vide. Chaque cellule
des colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne
peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je
vais traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur
dans le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas
un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type
texte (non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca
dure des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
On avance.
Quelle action vois tu si on est à la fois dans le deuxième et troisième
cas.
Autre question faut-il que la donnée dans A du premier classeur se
retrouve
dans la même ligne dans la deuxième classeur ou peut-elle se retrouver
dans
une autre ligne?
--
HTH
Paul V.
tictok wrote:J'ai deux fichiers.
Ces fichiers ont plusieurs colonnes remplies.
Je veux comparer les colonnes A de chaque fichier.
Chaque cellule de la colonne A contient un code.
Quand j'ecris dans la colonne C, c'est exprès et je sais ce que je
fais. J'utilise la colonne E car elle n'est pas remplie et je peux
donc m'en servir.
Pour l'instant, je me base sur le second code donne par michdenis
(pas le premier !).
Mais j'ai du mal a comprendre pourquoi ca ne marche pas.
Pour repondre a ta question, on devrait se retrouver a la fois dans
les deuxiemes et troisiemes cas :
- deuxieme car il ne trouve pas "Toto"
- troisieme car il ne trouve pas "PasToto"
Si ca marche comme ca, c'est bon car pour moi Toto et PasToto sont
bien deux choses differentes !
Justement, le Application.Match fait bien une comparaison EXACTE ?
"Paul V." escreveu na mensagem
news:Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou
on va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." escreveu na mensagem
news:Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des
colonnes E de chaque fichier ne devrait etre vide. Chaque cellule
des colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne
peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je
vais traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur
dans le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas
un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type
texte (non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca
dure des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
On avance.
Quelle action vois tu si on est à la fois dans le deuxième et troisième
cas.
Autre question faut-il que la donnée dans A du premier classeur se
retrouve
dans la même ligne dans la deuxième classeur ou peut-elle se retrouver
dans
une autre ligne?
--
HTH
Paul V.
tictok wrote:
J'ai deux fichiers.
Ces fichiers ont plusieurs colonnes remplies.
Je veux comparer les colonnes A de chaque fichier.
Chaque cellule de la colonne A contient un code.
Quand j'ecris dans la colonne C, c'est exprès et je sais ce que je
fais. J'utilise la colonne E car elle n'est pas remplie et je peux
donc m'en servir.
Pour l'instant, je me base sur le second code donne par michdenis
(pas le premier !).
Mais j'ai du mal a comprendre pourquoi ca ne marche pas.
Pour repondre a ta question, on devrait se retrouver a la fois dans
les deuxiemes et troisiemes cas :
- deuxieme car il ne trouve pas "Toto"
- troisieme car il ne trouve pas "PasToto"
Si ca marche comme ca, c'est bon car pour moi Toto et PasToto sont
bien deux choses differentes !
Justement, le Application.Match fait bien une comparaison EXACTE ?
"Paul V." <pav4006@skynet.be> escreveu na mensagem
news:OquneMPPEHA.3944@tk2msftngp13.phx.gbl...
Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:
Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou
on va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." <pav4006@skynet.be> escreveu na mensagem
news:O2tmaoOPEHA.3016@tk2msftngp13.phx.gbl...
Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:
Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des
colonnes E de chaque fichier ne devrait etre vide. Chaque cellule
des colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne
peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je
vais traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" <michdenis@hotmail.com> escreveu na mensagem
news:eDEuO3NPEHA.3632@TK2MSFTNGP10.phx.gbl...
Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur
dans le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" <nomail@yet.com> a écrit dans le message de
news:e$BN6iNPEHA.640@TK2MSFTNGP12.phx.gbl...
Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas
un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type
texte (non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca
dure des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
On avance.
Quelle action vois tu si on est à la fois dans le deuxième et troisième
cas.
Autre question faut-il que la donnée dans A du premier classeur se
retrouve
dans la même ligne dans la deuxième classeur ou peut-elle se retrouver
dans
une autre ligne?
--
HTH
Paul V.
tictok wrote:J'ai deux fichiers.
Ces fichiers ont plusieurs colonnes remplies.
Je veux comparer les colonnes A de chaque fichier.
Chaque cellule de la colonne A contient un code.
Quand j'ecris dans la colonne C, c'est exprès et je sais ce que je
fais. J'utilise la colonne E car elle n'est pas remplie et je peux
donc m'en servir.
Pour l'instant, je me base sur le second code donne par michdenis
(pas le premier !).
Mais j'ai du mal a comprendre pourquoi ca ne marche pas.
Pour repondre a ta question, on devrait se retrouver a la fois dans
les deuxiemes et troisiemes cas :
- deuxieme car il ne trouve pas "Toto"
- troisieme car il ne trouve pas "PasToto"
Si ca marche comme ca, c'est bon car pour moi Toto et PasToto sont
bien deux choses differentes !
Justement, le Application.Match fait bien une comparaison EXACTE ?
"Paul V." escreveu na mensagem
news:Moi toujours pas comprendre.
Ok pour le début de ma comprenure ou compréhensivité. Je sais jamais.
Imaginons que dans le premier fichier tu ais Toto et dans le deuxième
fichier PasToto.
Est-on dans le deuxième cas ou le troisième. A mon avis, les deux ;-)
Alors que faire?
--
HTH
Paul V.
tictok wrote:Bonjour Paul V.
- Les DEUX fichiers sont triés dans l'ordre croissant de la colonne
A, de la meme facon.
- Oui, les colonnes A a D contiennent des donnees. Je ne peux pas
trop modifier la structure de mes fichiers pour comparer.
- Oui et non. Je veux bien ecraser les valeurs, que la cellule ou
on va mettre la valeur (le premier ficheir donc) soit vide ou non.
- Je ne fais une comparaison que par rapport a la colonne A. Si les
colonnes B sont differentes, je m'en fous : je ne fais aucun manip
sur cette colonne B.
J'espere avoir bien repondu a tes questions.
Le code de michdenis n'a l'air pas mal, je vais le tester.
"Paul V." escreveu na mensagem
news:Le problème est effectivement la quantité de données;
J'ai quelques questions.
Les données sont elles triées ?
Y a t-il autre chose dans les colonnes autres que C et E
Y a t-il toujours des données dans les deux fichiers pour les deux
classeurs?
Que faire si il y une donnée dans le premier qui n'est pas dans le
second fichier et que sur la même ligne il y a une donnée dans le
deuxième fichier qui n'est pas dans le premier?
--
HTH
Paul V.
tictok wrote:Apres 10 minutes, la macro tournait toujours a 100% ... Je l'ai
arrete. :( Je ne veux pas avoir une liste des donnees uniques et
trouvees dans les deux fichiers.
Je vais preciser les ACTION 1,2,3 de mon premier message.
- SI je trouve la meme donnee dans les deux fichiers (comparaison
des colonnes A), ALORS (la donnee de la cellule de la colonne C du
premier fichier est egale a celle du second fichier) ET (ecrire
"OK" dans la cellule de la colonne E des deux fichiers ).
- SI je trouve la donnee dans le premier fichier et pas dans le
second, ALORS ecrire dans la cellule de la colonne E "CB".
- SI je trouve la donnee dans le second fichier et pas dans le
premier, ALORS ecrire dans la cellule de la colonne E "CaC".
Commme ca (si le programme marche bien), aucune cellule des
colonnes E de chaque fichier ne devrait etre vide. Chaque cellule
des colonnes E devrait contenir "OK" ou "CB" ou "Cac", mais ne
peut etre vide.
Je vais corser le probleme car je veux que la macro soit contenue
dans un fichier externe : de ce fichier contentant la macro, je
vais traiter les deux fichiers. Est-ce possible ?
Voila, c'est complique mais si ca marche, ah je sens que je ferai
chauffer le processeur comme il a jamais vu ! LOL
En attendant une reponse
Tictok
"michdenis" escreveu na mensagem
news:Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur
dans le second appel .
C ) résultats dans le classeur contenant cette procédure dans la
feuille résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2
fichiers Colonne B " " : les données uniques au
classeur contenant cette macro Colonne C " " : les
données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour
comparer la cellule A d'un fichier avec la cellule A d'autre.
Chaque fichier contient environ 27000 lignes, donc ce n'est pas
un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type
texte (non des valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca
dure des heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison
entre les deux fichiers ou de copier le contenu du second dans le
premier ? Ca ne me gene pas du tout de copier le contenu, j'ai un
PC assez puissant pour ca. C'est surtout pour un probleme de
vitesse d'execution et de stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire
l'action ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le
second, alors faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le
premier, alors faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du
premier fichier dans le second (et vice versa), peut on le faire
en meme temps ou vaut t'il mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de
données a traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de
http://www.excelabo.net/xl/comparer.php mais sans grand succes.)
Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans le
second appel .
C ) résultats dans le classeur contenant cette procédure dans la feuille
résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2 fichiers
Colonne B " " : les données uniques au classeur contenant
cette macro
Colonne C " " : les données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$
Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour comparer la
cellule A d'un fichier avec la cellule A d'autre. Chaque fichier contient
environ 27000 lignes, donc ce n'est pas un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte (non
des
valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure des
heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison entre les
deux fichiers ou de copier le contenu du second dans le premier ?
Ca ne me gene pas du tout de copier le contenu, j'ai un PC assez puissant
pour ca. C'est surtout pour un probleme de vitesse d'execution et de
stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire l'action
ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le second, alors
faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le premier, alors
faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du premier
fichier
dans le second (et vice versa), peut on le faire en meme temps ou vaut
t'il
mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de données a
traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de http://www.excelabo.net/xl/comparer.php
mais sans grand succes.)
Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans le
second appel .
C ) résultats dans le classeur contenant cette procédure dans la feuille
résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2 fichiers
Colonne B " " : les données uniques au classeur contenant
cette macro
Colonne C " " : les données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" <nomail@yet.com> a écrit dans le message de
news:e$BN6iNPEHA.640@TK2MSFTNGP12.phx.gbl...
Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour comparer la
cellule A d'un fichier avec la cellule A d'autre. Chaque fichier contient
environ 27000 lignes, donc ce n'est pas un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte (non
des
valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure des
heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison entre les
deux fichiers ou de copier le contenu du second dans le premier ?
Ca ne me gene pas du tout de copier le contenu, j'ai un PC assez puissant
pour ca. C'est surtout pour un probleme de vitesse d'execution et de
stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire l'action
ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le second, alors
faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le premier, alors
faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du premier
fichier
dans le second (et vice versa), peut on le faire en meme temps ou vaut
t'il
mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de données a
traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de http://www.excelabo.net/xl/comparer.php
mais sans grand succes.)
Bonjour Titok,
Voici une procédure qui compare les colonnes A de 2 fichiers.
A ) les 2 fichiers doivent être ouverts.
B ) Remplace ceci "ThisWorkbook.Name" par le nom du classeur dans le
second appel .
C ) résultats dans le classeur contenant cette procédure dans la feuille
résultat qui sera ajouté
Colonne A contiendra : les données qui sont présentes dans les 2 fichiers
Colonne B " " : les données uniques au classeur contenant
cette macro
Colonne C " " : les données uniques à l'autre classeur
'----------------------------------
Sub Comparer()
Dim Rg As Range, Rg1 As Range
Dim A As Long, B As Long
Dim X As Long, D As Long, G As Long
Dim Tblo As Variant, Tblo1 As Variant
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil1")
Set Rg = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo = Rg
End With
With Workbooks(ThisWorkbook.Name).Worksheets("Feuil2")
Set Rg1 = .Range("A1:A" & Range("A65536").End(xlUp).Row)
Tblo1 = Rg1
End With
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Résultat").Delete
Application.DisplayAlerts = False
On Error GoTo 0
Worksheets.Add.Name = "Résultat"
For A = 1 To UBound(Tblo, 1)
For B = 1 To UBound(Tblo, 2)
If IsError(Application.Match(Tblo(A, B), Tblo1, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
X = X + 1
Worksheets("Résultat").Range("B" & X) = Tblo(A, B)
On Error GoTo 0
Else
'Donnée est ds les 2 tableaux tblo = tblo1
'Appelle de ta procédure
G = G + 1
Worksheets("Résultat").Range("A" & G) = Tblo(A, B)
End If
Next
Next
'ON INVERSE, COMPARAISON FAITE À PARTIR DE L'AUTRE PLAGE
For A = 1 To UBound(Tblo1, 1)
For B = 1 To UBound(Tblo1, 2)
If IsError(Application.Match(Tblo1(A, B), Tblo, 0)) Then
'donnée ds tblo n'existe pas dans tblo1)
'Appelle de ta procédure Exemple pour faire copie
'Dans la feuille résultat de la données du claseur
'où est écrite la macro
D = D + 1
Worksheets("Résultat").Range("C" & D) = Tblo1(A, B)
On Error GoTo 0
End If
Next
Next
Set Rg = Nothing: Set Rg1 = Nothing
End Sub
'----------------------------------
Salutations!
"tictok" a écrit dans le message de
news:e$
Bonjour a tous.
J'ai quelques problemes (doux euphemisme il est vrai :D) pour comparer la
cellule A d'un fichier avec la cellule A d'autre. Chaque fichier contient
environ 27000 lignes, donc ce n'est pas un petit fichier !
Les donnees des cellules a comparer sont des donnnees de type texte (non
des
valeurs).
Je voudrais evidemment automatiser cette comparaison avec VBA.
Le temps d'execution en lui meme n'est pas trop genant. Si ca dure des
heures mais que ca marche c'est parfait !
Premier probleme : est t'il preferable de faire la comparaison entre les
deux fichiers ou de copier le contenu du second dans le premier ?
Ca ne me gene pas du tout de copier le contenu, j'ai un PC assez puissant
pour ca. C'est surtout pour un probleme de vitesse d'execution et de
stabilite.
Second probleme : j'ai differents cas :
Si je trouve la meme donnée dans les deux listes, alors faire l'action
ACTION1.
Si j'ai la donnée dans le premier fichier et pas dans le second, alors
faire ACTION2.
Si j'ai la donnée dans le second fichier et pas dans le premier, alors
faire ACTION3.
Troisième probleme : le fait de ne pas trouver une donnée du premier
fichier
dans le second (et vice versa), peut on le faire en meme temps ou vaut
t'il
mieux separer ces procedures ?
A la fin, il faudra avoir tout analyser.
Mon probleme est difficile, surtout a cause de la quantite de données a
traiter.
Je remercie beaucoup d'avance toute personne pouvant m'aider !
(J'ai essaye une macro venant de http://www.excelabo.net/xl/comparer.php
mais sans grand succes.)