OVH Cloud OVH Cloud

[2ND] Comparer deux fichier de plus de 20000 lignes

11 réponses
Avatar
tictok
Bonjour a tous !

Je debute en VB et j'ai voici mon probleme : comparer deux gros fichiers et
faire des actions en consequence.
J'ai deux fichiers aux structures identiques : les colonnes A a E sont
remplies de donnnees (des dizaines de milliers de lignes : entre 10000 et
50000 selon le fichier).
--> Les tableaux des deux fichiers sont tries selon la colonne A, par ordre
croissant, de la meme facon. <--
La colonne A sera celle a comparer.
La colonne B ne sera jamais modifiee ni comparee.
Les colonnes C, D, E seront modifiees dans certains cas mais aucunement
comparees.

!!! Attention a ceux qui m'ont deja repondu (merci beaucoup a eux), j'ai un
peu modifie mon probleme mais le principe est le meme !!!

Les colonnes A contiennent des codes (chaine des caracteres au format
texte).
Je veux comparer les cellules des colonnes A de la facon suivante :

LE CODE EST DANS LES DEUX FICHIERS :
La cellule de la colonne C du premier fichier est égale à celle du
deuxième fichier.
La cellule de la colonne D du premier fichier est égale à celle du
deuxième fichier.
Ecrire dans la cellule de la colonne F du premier fichier la chaine "OK"
Ecrire dans la cellule de la colonne F du deuxième fichier la chaine
"CaS".
LE CODE EST DANS LE PREMIER FICHIER MAIS PAS DANS LE DEUXIEME
Ecrire dans la cellule de la colonne F du premier fichier la chaine
"CaB".
LE CODE EST DANS LE DEUXIEME FICHIER MAIS PAS DANS LE PREMIER :
Ecrire dans la cellule de la colonne F du deuxième fichier la chaine
"CaC".

Si je le traduis en CONDITIONELLE :

POUR CHAQUE cellule de la colonne A du fichier1 :
POUR CHAQUE cellule de la colonne A du fichier2 :
SI la cellule du fichier1 est egale a celle du fichier2, ALORS
La valeur de la cellule du fichier1 decalee de 2 colonnes est
egale a celle du fichier2 decalee de 2 colonnes.ALORS
La valeur de la cellule du fichier1 decalee de 3 colonnes est
egale a celle du fichier2 decalee de 3 colonnes.
La valeur de la cellule du fichier1 decalee de 5 colonnes est
egale a la valeur "OK".
La valeur de la cellule du fichier2 decalee de 5 colonnes est
egale a la valeur "CaS".

SINON
La valeur de la cellule du fichier1 decalee de 5 colonnes est
egale a la valeur "CaB".
FIN de la deuxieme boucle "POUR CHAQUE".
FIN de la premiere boucle "POUR CHAQUE".

POUR CHAQUE cellule de la colonne A du fichier2 :
POUR CHAQUE cellule de la colonne A du fichier1 :
SI la cellule du fichier2 N'EST PAS egale a celle du fichier1, ALORS
La valeur de la cellule du fichier2 decalee de 5 colonnes est
egale a la valeur "Cac".
FIN de la deuxieme boucle "POUR CHAQUE".
FIN de la premiere boucle "POUR CHAQUE".

Cette mise en forme conditionnelle reprend en gros la structure du code
donné par michdenis.
Cependant, si le programme a trouve un code dans les deux colonnes, il faut
qu'il recommence sa procedure a la cellule suivante et non continuer a
chercher !


Voila, j'espere avoir eclairci les idees de ceux qui m'ont aide et avoir
donne assez d'infos pour m'aider.

1 réponse

1 2
Avatar
tictok
Je t'ai envoye un mail avec cet exemple au format .xls.
Pardon, je n'ai pas trie dans cet exemple mais dans les vrais fichiers a
traiter, j'ai bien fait un
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
Classement selon A par ordre croissant. Ils sont bien tries.



"Pascal Engelmajer" escreveu na mensagem
news:
Salut,
Attention le fichier n'est pas trié par rapport à la colonne A ce qui est
indispensable pour l'algorithme
il faut :
00002/44
111
111/22
R34345


et non
00002/44
111/22
R34345
111
Amicalement
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel





1 2