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.
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.
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.
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.
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.
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.
Salut,
je peux t'adapter ma procédure si tu le désire...
--
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
"tictok" a écrit dans le message de news:Bonjour a tous !
Je debute en VB et j'ai voici mon probleme : comparer deux gros fichiers
etfaire 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
ordrecroissant, 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
unpeu 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,
ALORSLa 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
fautqu'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.
Salut,
je peux t'adapter ma procédure si tu le désire...
--
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
"tictok" <nomail@yet.com> a écrit dans le message de news:
OzOtR8XPEHA.904@TK2MSFTNGP12.phx.gbl...
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.
Salut,
je peux t'adapter ma procédure si tu le désire...
--
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
"tictok" a écrit dans le message de news:Bonjour a tous !
Je debute en VB et j'ai voici mon probleme : comparer deux gros fichiers
etfaire 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
ordrecroissant, 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
unpeu 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,
ALORSLa 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
fautqu'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.
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.
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.
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.
Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
S'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide de
la
colonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
Apres reflexion, ma traduction conditionnelle ne doit pas etre bonne.
Car, pour chaque cellule, le programme doit faire commme la fonction
"Rechercher" d'Office.
S'il trouve, il me selectionne la cellule. S'il ne la trouve pas, il me
dit
"Mot recherché non trouvé".
Dans mon cas, s'il trouve la meme valeur, il fait les 4 actions demandees.
S'il ne trouve pas, il doit aller jusqu'a la derniere cellule non vide de
la
colonne pour ecrire une chaine dans la colonne F.
"tictok" escreveu na mensagem
news:Bonjour a tous !
Je debute en VB et j'ai voici mon probleme : comparer deux gros fichiers
etfaire 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
ordrecroissant, 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
unpeu 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,
ALORSLa 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
fautqu'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.
Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
S'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide de
la
colonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
Apres reflexion, ma traduction conditionnelle ne doit pas etre bonne.
Car, pour chaque cellule, le programme doit faire commme la fonction
"Rechercher" d'Office.
S'il trouve, il me selectionne la cellule. S'il ne la trouve pas, il me
dit
"Mot recherché non trouvé".
Dans mon cas, s'il trouve la meme valeur, il fait les 4 actions demandees.
S'il ne trouve pas, il doit aller jusqu'a la derniere cellule non vide de
la
colonne pour ecrire une chaine dans la colonne F.
"tictok" <nomail@yet.com> escreveu na mensagem
news:OzOtR8XPEHA.904@TK2MSFTNGP12.phx.gbl...
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.
Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
S'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide de
la
colonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
Apres reflexion, ma traduction conditionnelle ne doit pas etre bonne.
Car, pour chaque cellule, le programme doit faire commme la fonction
"Rechercher" d'Office.
S'il trouve, il me selectionne la cellule. S'il ne la trouve pas, il me
dit
"Mot recherché non trouvé".
Dans mon cas, s'il trouve la meme valeur, il fait les 4 actions demandees.
S'il ne trouve pas, il doit aller jusqu'a la derniere cellule non vide de
la
colonne pour ecrire une chaine dans la colonne F.
"tictok" escreveu na mensagem
news:Bonjour a tous !
Je debute en VB et j'ai voici mon probleme : comparer deux gros fichiers
etfaire 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
ordrecroissant, 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
unpeu 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,
ALORSLa 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
fautqu'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.
Salut,
ça le fait.
voir dans le code ce qu'il faut modifier....
Option Explicit
Dim tA1 As Variant 'colonne A du premier fichier
Dim tA2 As Variant 'colonne A du second fichier
Dim tC1 As Variant 'colonne C du premier fichier
Dim tD1 As Variant 'colonne D du premier fichier
Dim tC2 As Variant 'colonne C du second fichier
Dim tD2 As Variant 'colonne D du second fichier
Dim tF1 As Variant 'colonne F du premier fichier
Dim tF2 As Variant 'colonne F du second fichier
Sub appareillage()
Debug.Print Time
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim plA1 As Range 'colonne A du premier fichier
Dim derA1 As Range 'cellule butoir colonne A du premier fichier
Dim plA2 As Range 'colonne A du second fichier
Dim derA2 As Range 'cellule butoir colonne A du second fichier
Dim plC1 As Range 'colonne C du premier fichier
Dim plC2 As Range 'colonne C du second fichier
Dim plD1 As Range 'colonne D du premier fichier
Dim plD2 As Range 'colonne D du second fichier
Dim plF1 As Range 'colonne F du premier fichier
Dim plF2 As Range 'colonne F du second fichier
Dim pt1 As Long
Dim pt2 As Long
Dim supPt1 As Long
Dim supPt2 As Long
Application.ScreenUpdating = False
Const maxValeur = "zzzzzzzzzzzzzzzzzzz"
'remplacer les lignes du test ================================== > Set wb1 = ActiveWorkbook
Set wb2 = ActiveWorkbook
'par
'Set wb1 = Workbooks.Open("fic1.xls")
'Set wb2 = Workbooks.Open("fic2.xls")
Set sh1 = wb1.Sheets(1)
'============================================================== > 'remplacer les lignes du test ================================== > Set sh2 = wb2.Sheets(2)
'par
'Set sh2 = wb2.Sheets(1)
'============================================================== > 'classeur 1
Set derA1 = sh1.Range("A65536").End(xlUp).Offset(1)
derA1.Value = maxValeur 'valeur destinée à borner le fichier
supPt1 = derA1.Row
Set plA1 = Range(sh1.Range("A1"), derA1)
tA1 = plA1.Value
'classeur 2
Set derA2 = sh2.Range("A65536").End(xlUp).Offset(1)
derA2.Value = maxValeur 'valeur destinée à borner le fichier
supPt2 = derA2.Row
Set plA2 = Range(sh2.Range("A1"), derA2)
tA2 = plA2.Value
'colonnes C et E
Set plC1 = Range(sh1.Range("C1"), sh1.Range("C" & supPt1))
Set plD1 = Range(sh1.Range("D1"), sh1.Range("D" & supPt1))
Set plF1 = Range(sh1.Range("F1"), sh1.Range("F" & supPt1))
Set plC2 = Range(sh2.Range("C1"), sh2.Range("C" & supPt2))
Set plD2 = Range(sh2.Range("D1"), sh2.Range("D" & supPt2))
Set plF2 = Range(sh2.Range("F1"), sh2.Range("F" & supPt2))
tC1 = plC1.Value
tD1 = plD1.Value
tF1 = plF1.Value
tC2 = plC2.Value
tD2 = plD2.Value
tF2 = plF2.Value
' Lire la première cellule du fichier Fic1, (et l'appeler cellFic1);
pt1 = 1 'on utilise les pointeurs
' Lire la première cellule du fichier Fic2, (et l'appeler cellFic2);
pt2 = 1
' DO WHILE < il y a des cellules non vides dans Fic1 ou Fic2 >
Do While (pt1 < supPt1) Or (pt2 < supPt2)
' IF cellFic1.Value < cellFic2.Value
If tA1(pt1, 1) < tA2(pt2, 1) Then
' THEN < traitement présent dans Fic2 seulement >;
action2 pt1
'< remplacer cellFic1 par la cellule
' suivante du fichier Fic1 >
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' ELSE
' IF cellFic1.Value = cellFic2.Value
ElseIf tA1(pt1, 1) = tA2(pt2, 1) Then
' THEN < traitement présent dans les deux>;
action1 pt1, pt2
' < remplacer cellFic1 par la cellule
' suivante du fichier Fic1>
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
' ELSE < traitement présent dans Fic2 seulement>
Else
action3 pt2
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
End If
Loop
'écriture sur les feuilles
plC1.Value = tC1
plD1.Value = tD1
plF1.Value = tF1
plF2.Value = tF2
derA1.EntireRow.Delete 'efface la ligne maxValue
derA2.EntireRow.Delete 'efface la ligne maxValue
Application.ScreenUpdating = True
Debug.Print Time
End Sub
Sub action1(pt1 As Long, pt2 As Long)
'--> Les tableaux des deux fichiers sont tries selon la colonne A, par
ordre
'croissant, de la même façon. <--
'La colonne A sera celle a comparer.
'La colonne B ne sera jamais modifie ni comparée.
'Les colonnes C, D, E seront modifies dans certains cas mais aucunement
'comparées.
'Les colonnes A contiennent des codes (chaîne des caractères au format
texte).
'Je veux comparer les cellules des colonnes A de la façon 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.
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
"OK"
' Écrire dans la cellule de la colonne F du deuxième fichier la chaîne
"CaS".
tC1(pt1, 1) = tC2(pt2, 1)
tD1(pt1, 1) = tD2(pt2, 1)
tF1(pt1, 1) = "OK"
tF2(pt2, 1) = "CaS"
End Sub
Sub action2(pt1 As Long)
'LE CODE EST DANS LE PREMIER FICHIER MAIS PAS DANS LE DEUXIEME
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
'"CaB".
tF1(pt1, 1) = "CB"
End Sub
Sub action3(pt2 As Long)
'LE CODE EST DANS LE DEUXIEME FICHIER MAIS PAS DANS LE PREMIER :
' Écrire dans la cellule de la colonne F du deuxième fichier la chaîne
'"CaC".
tF2(pt2, 1) = "CaC"
End Sub
--
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
Salut,
ça le fait.
voir dans le code ce qu'il faut modifier....
Option Explicit
Dim tA1 As Variant 'colonne A du premier fichier
Dim tA2 As Variant 'colonne A du second fichier
Dim tC1 As Variant 'colonne C du premier fichier
Dim tD1 As Variant 'colonne D du premier fichier
Dim tC2 As Variant 'colonne C du second fichier
Dim tD2 As Variant 'colonne D du second fichier
Dim tF1 As Variant 'colonne F du premier fichier
Dim tF2 As Variant 'colonne F du second fichier
Sub appareillage()
Debug.Print Time
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim plA1 As Range 'colonne A du premier fichier
Dim derA1 As Range 'cellule butoir colonne A du premier fichier
Dim plA2 As Range 'colonne A du second fichier
Dim derA2 As Range 'cellule butoir colonne A du second fichier
Dim plC1 As Range 'colonne C du premier fichier
Dim plC2 As Range 'colonne C du second fichier
Dim plD1 As Range 'colonne D du premier fichier
Dim plD2 As Range 'colonne D du second fichier
Dim plF1 As Range 'colonne F du premier fichier
Dim plF2 As Range 'colonne F du second fichier
Dim pt1 As Long
Dim pt2 As Long
Dim supPt1 As Long
Dim supPt2 As Long
Application.ScreenUpdating = False
Const maxValeur = "zzzzzzzzzzzzzzzzzzz"
'remplacer les lignes du test ================================== > Set wb1 = ActiveWorkbook
Set wb2 = ActiveWorkbook
'par
'Set wb1 = Workbooks.Open("fic1.xls")
'Set wb2 = Workbooks.Open("fic2.xls")
Set sh1 = wb1.Sheets(1)
'============================================================== > 'remplacer les lignes du test ================================== > Set sh2 = wb2.Sheets(2)
'par
'Set sh2 = wb2.Sheets(1)
'============================================================== > 'classeur 1
Set derA1 = sh1.Range("A65536").End(xlUp).Offset(1)
derA1.Value = maxValeur 'valeur destinée à borner le fichier
supPt1 = derA1.Row
Set plA1 = Range(sh1.Range("A1"), derA1)
tA1 = plA1.Value
'classeur 2
Set derA2 = sh2.Range("A65536").End(xlUp).Offset(1)
derA2.Value = maxValeur 'valeur destinée à borner le fichier
supPt2 = derA2.Row
Set plA2 = Range(sh2.Range("A1"), derA2)
tA2 = plA2.Value
'colonnes C et E
Set plC1 = Range(sh1.Range("C1"), sh1.Range("C" & supPt1))
Set plD1 = Range(sh1.Range("D1"), sh1.Range("D" & supPt1))
Set plF1 = Range(sh1.Range("F1"), sh1.Range("F" & supPt1))
Set plC2 = Range(sh2.Range("C1"), sh2.Range("C" & supPt2))
Set plD2 = Range(sh2.Range("D1"), sh2.Range("D" & supPt2))
Set plF2 = Range(sh2.Range("F1"), sh2.Range("F" & supPt2))
tC1 = plC1.Value
tD1 = plD1.Value
tF1 = plF1.Value
tC2 = plC2.Value
tD2 = plD2.Value
tF2 = plF2.Value
' Lire la première cellule du fichier Fic1, (et l'appeler cellFic1);
pt1 = 1 'on utilise les pointeurs
' Lire la première cellule du fichier Fic2, (et l'appeler cellFic2);
pt2 = 1
' DO WHILE < il y a des cellules non vides dans Fic1 ou Fic2 >
Do While (pt1 < supPt1) Or (pt2 < supPt2)
' IF cellFic1.Value < cellFic2.Value
If tA1(pt1, 1) < tA2(pt2, 1) Then
' THEN < traitement présent dans Fic2 seulement >;
action2 pt1
'< remplacer cellFic1 par la cellule
' suivante du fichier Fic1 >
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' ELSE
' IF cellFic1.Value = cellFic2.Value
ElseIf tA1(pt1, 1) = tA2(pt2, 1) Then
' THEN < traitement présent dans les deux>;
action1 pt1, pt2
' < remplacer cellFic1 par la cellule
' suivante du fichier Fic1>
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
' ELSE < traitement présent dans Fic2 seulement>
Else
action3 pt2
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
End If
Loop
'écriture sur les feuilles
plC1.Value = tC1
plD1.Value = tD1
plF1.Value = tF1
plF2.Value = tF2
derA1.EntireRow.Delete 'efface la ligne maxValue
derA2.EntireRow.Delete 'efface la ligne maxValue
Application.ScreenUpdating = True
Debug.Print Time
End Sub
Sub action1(pt1 As Long, pt2 As Long)
'--> Les tableaux des deux fichiers sont tries selon la colonne A, par
ordre
'croissant, de la même façon. <--
'La colonne A sera celle a comparer.
'La colonne B ne sera jamais modifie ni comparée.
'Les colonnes C, D, E seront modifies dans certains cas mais aucunement
'comparées.
'Les colonnes A contiennent des codes (chaîne des caractères au format
texte).
'Je veux comparer les cellules des colonnes A de la façon 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.
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
"OK"
' Écrire dans la cellule de la colonne F du deuxième fichier la chaîne
"CaS".
tC1(pt1, 1) = tC2(pt2, 1)
tD1(pt1, 1) = tD2(pt2, 1)
tF1(pt1, 1) = "OK"
tF2(pt2, 1) = "CaS"
End Sub
Sub action2(pt1 As Long)
'LE CODE EST DANS LE PREMIER FICHIER MAIS PAS DANS LE DEUXIEME
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
'"CaB".
tF1(pt1, 1) = "CB"
End Sub
Sub action3(pt2 As Long)
'LE CODE EST DANS LE DEUXIEME FICHIER MAIS PAS DANS LE PREMIER :
' Écrire dans la cellule de la colonne F du deuxième fichier la chaîne
'"CaC".
tF2(pt2, 1) = "CaC"
End Sub
--
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
Salut,
ça le fait.
voir dans le code ce qu'il faut modifier....
Option Explicit
Dim tA1 As Variant 'colonne A du premier fichier
Dim tA2 As Variant 'colonne A du second fichier
Dim tC1 As Variant 'colonne C du premier fichier
Dim tD1 As Variant 'colonne D du premier fichier
Dim tC2 As Variant 'colonne C du second fichier
Dim tD2 As Variant 'colonne D du second fichier
Dim tF1 As Variant 'colonne F du premier fichier
Dim tF2 As Variant 'colonne F du second fichier
Sub appareillage()
Debug.Print Time
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim plA1 As Range 'colonne A du premier fichier
Dim derA1 As Range 'cellule butoir colonne A du premier fichier
Dim plA2 As Range 'colonne A du second fichier
Dim derA2 As Range 'cellule butoir colonne A du second fichier
Dim plC1 As Range 'colonne C du premier fichier
Dim plC2 As Range 'colonne C du second fichier
Dim plD1 As Range 'colonne D du premier fichier
Dim plD2 As Range 'colonne D du second fichier
Dim plF1 As Range 'colonne F du premier fichier
Dim plF2 As Range 'colonne F du second fichier
Dim pt1 As Long
Dim pt2 As Long
Dim supPt1 As Long
Dim supPt2 As Long
Application.ScreenUpdating = False
Const maxValeur = "zzzzzzzzzzzzzzzzzzz"
'remplacer les lignes du test ================================== > Set wb1 = ActiveWorkbook
Set wb2 = ActiveWorkbook
'par
'Set wb1 = Workbooks.Open("fic1.xls")
'Set wb2 = Workbooks.Open("fic2.xls")
Set sh1 = wb1.Sheets(1)
'============================================================== > 'remplacer les lignes du test ================================== > Set sh2 = wb2.Sheets(2)
'par
'Set sh2 = wb2.Sheets(1)
'============================================================== > 'classeur 1
Set derA1 = sh1.Range("A65536").End(xlUp).Offset(1)
derA1.Value = maxValeur 'valeur destinée à borner le fichier
supPt1 = derA1.Row
Set plA1 = Range(sh1.Range("A1"), derA1)
tA1 = plA1.Value
'classeur 2
Set derA2 = sh2.Range("A65536").End(xlUp).Offset(1)
derA2.Value = maxValeur 'valeur destinée à borner le fichier
supPt2 = derA2.Row
Set plA2 = Range(sh2.Range("A1"), derA2)
tA2 = plA2.Value
'colonnes C et E
Set plC1 = Range(sh1.Range("C1"), sh1.Range("C" & supPt1))
Set plD1 = Range(sh1.Range("D1"), sh1.Range("D" & supPt1))
Set plF1 = Range(sh1.Range("F1"), sh1.Range("F" & supPt1))
Set plC2 = Range(sh2.Range("C1"), sh2.Range("C" & supPt2))
Set plD2 = Range(sh2.Range("D1"), sh2.Range("D" & supPt2))
Set plF2 = Range(sh2.Range("F1"), sh2.Range("F" & supPt2))
tC1 = plC1.Value
tD1 = plD1.Value
tF1 = plF1.Value
tC2 = plC2.Value
tD2 = plD2.Value
tF2 = plF2.Value
' Lire la première cellule du fichier Fic1, (et l'appeler cellFic1);
pt1 = 1 'on utilise les pointeurs
' Lire la première cellule du fichier Fic2, (et l'appeler cellFic2);
pt2 = 1
' DO WHILE < il y a des cellules non vides dans Fic1 ou Fic2 >
Do While (pt1 < supPt1) Or (pt2 < supPt2)
' IF cellFic1.Value < cellFic2.Value
If tA1(pt1, 1) < tA2(pt2, 1) Then
' THEN < traitement présent dans Fic2 seulement >;
action2 pt1
'< remplacer cellFic1 par la cellule
' suivante du fichier Fic1 >
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' ELSE
' IF cellFic1.Value = cellFic2.Value
ElseIf tA1(pt1, 1) = tA2(pt2, 1) Then
' THEN < traitement présent dans les deux>;
action1 pt1, pt2
' < remplacer cellFic1 par la cellule
' suivante du fichier Fic1>
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
' ELSE < traitement présent dans Fic2 seulement>
Else
action3 pt2
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
End If
Loop
'écriture sur les feuilles
plC1.Value = tC1
plD1.Value = tD1
plF1.Value = tF1
plF2.Value = tF2
derA1.EntireRow.Delete 'efface la ligne maxValue
derA2.EntireRow.Delete 'efface la ligne maxValue
Application.ScreenUpdating = True
Debug.Print Time
End Sub
Sub action1(pt1 As Long, pt2 As Long)
'--> Les tableaux des deux fichiers sont tries selon la colonne A, par
ordre
'croissant, de la même façon. <--
'La colonne A sera celle a comparer.
'La colonne B ne sera jamais modifie ni comparée.
'Les colonnes C, D, E seront modifies dans certains cas mais aucunement
'comparées.
'Les colonnes A contiennent des codes (chaîne des caractères au format
texte).
'Je veux comparer les cellules des colonnes A de la façon 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.
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
"OK"
' Écrire dans la cellule de la colonne F du deuxième fichier la chaîne
"CaS".
tC1(pt1, 1) = tC2(pt2, 1)
tD1(pt1, 1) = tD2(pt2, 1)
tF1(pt1, 1) = "OK"
tF2(pt2, 1) = "CaS"
End Sub
Sub action2(pt1 As Long)
'LE CODE EST DANS LE PREMIER FICHIER MAIS PAS DANS LE DEUXIEME
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
'"CaB".
tF1(pt1, 1) = "CB"
End Sub
Sub action3(pt2 As Long)
'LE CODE EST DANS LE DEUXIEME FICHIER MAIS PAS DANS LE PREMIER :
' Écrire dans la cellule de la colonne F du deuxième fichier la chaîne
'"CaC".
tF2(pt2, 1) = "CaC"
End Sub
--
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
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
la derniere cellule non vide de la colonne A fichier2 pour ecrire une chaine
Salut,Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
OKS'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide
de
lacolonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
Écris un exemple avec cinq ou six lignes présentant tous les cas possibles
fic1 avant traitement
A B C D E F
A1 a a a a a
fic1 après traitement
A B C D E F
A1 a b b a OK
fic2 avant traitement
A B C D E F
A1 b b b b b
fic2 après traitement
A B C D E F
A1 b b b b OK
etc.
--
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
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
la derniere cellule non vide de la colonne A fichier2 pour ecrire une chaine
Salut,
Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
OK
S'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide
de
la
colonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
Écris un exemple avec cinq ou six lignes présentant tous les cas possibles
fic1 avant traitement
A B C D E F
A1 a a a a a
fic1 après traitement
A B C D E F
A1 a b b a OK
fic2 avant traitement
A B C D E F
A1 b b b b b
fic2 après traitement
A B C D E F
A1 b b b b OK
etc.
--
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
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
la derniere cellule non vide de la colonne A fichier2 pour ecrire une chaine
Salut,Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
OKS'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide
de
lacolonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
Écris un exemple avec cinq ou six lignes présentant tous les cas possibles
fic1 avant traitement
A B C D E F
A1 a a a a a
fic1 après traitement
A B C D E F
A1 a b b a OK
fic2 avant traitement
A B C D E F
A1 b b b b b
fic2 après traitement
A B C D E F
A1 b b b b OK
etc.
--
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
Excuses moi, je me suis trompe quelque part !
Revoici ce qu'il faut faire :
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 E du premier fichier est égale à celle du
deuxième fichier.
Ecrire dans la cellule de la colonne D du premier fichier la chaîne
"N"
Ecrire dans la cellule de la colonne F du premier fichier la chaîne
"OK".
Ecrire dans la cellule de la colonne F du deuxième fichier la chaîne
"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 chaîne
"CaB".
Ecrire dans la cellule de la colonne D du premier fichier la chaîne
"B".
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 chaîne
"CaC".
Ecrire dans la cellule de la colonne F du deuxième fichier la chaîne
"N".
Il ne fallait pas ecraser la valeur de la colonne D mais E.
Cela explique pourquoi ca ne marche pas trop (Cf. la suite).
J'ai donc excute ton code (avec les deux modifs que tu as precise) :
- moins de 5 secondes pour le faire, chapeau !
- Les colonnes F des deux fichiers sont entierement remplies. Aucune
cellule n'est vide : c'est bon signe !
- J'ai modifie ton code pour que ce soit la cellule E qui soit modifiee
(et
pas D).
Ca marche.
MAIS
- Si le code contient des lettres ou un /, il dit qu'il faut le creer.
Les
valeurs des colonnes A ne sont pas a traiter comme des valeurs
(numeriques)
mais comme des chaines de caracteres (donc le fait que ca soit inferieur
ou
superieur n'a pas de sens ...)
- J'ai essaye avec un autre couple de fichiers et la ton programme n'a
pas
marche.
Un code qui existe pourtant dans les deux fichiers (je l'ai verifie) a ete
marque comme CB (fichier1) et Cac (fichier2).
Les procedures action2 et action3 ont ete faites au lieu de action1.
Ca a marche avec le premier couple de fichiers car le code etait a la
ligne
30 (fichier1) et la ligne 70 (fichier2).
Ca n'a pas marche avec le second couple de fichiers car le code etait a la
ligne 150 (fichier1) et la ligne 40 (fichier2).
Donc, si le meme code est plus bas dans le fichier1 que dans le fichier2,
il
y a une erreur ...
C'est pour ca qu'il faudrait que le programme balaie toute la colonne de
haut en bas jusqu'a trouver le code identique ... ou ne pas le trouver.
Donc, la procedure sur la colonne E ne marche pas. Mais le reste a l'air
et
c'est deja une grande avance Pascal.
Serait t'il possible de poursuivre cette discussion par mail ? Je te
contacterai a ton mail (sans le "_spam" :D ).
"Pascal Engelmajer" escreveu na
mensagem
news:Salut,
ça le fait.
voir dans le code ce qu'il faut modifier....
Option Explicit
Dim tA1 As Variant 'colonne A du premier fichier
Dim tA2 As Variant 'colonne A du second fichier
Dim tC1 As Variant 'colonne C du premier fichier
Dim tD1 As Variant 'colonne D du premier fichier
Dim tC2 As Variant 'colonne C du second fichier
Dim tD2 As Variant 'colonne D du second fichier
Dim tF1 As Variant 'colonne F du premier fichier
Dim tF2 As Variant 'colonne F du second fichier
Sub appareillage()
Debug.Print Time
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim plA1 As Range 'colonne A du premier fichier
Dim derA1 As Range 'cellule butoir colonne A du premier fichier
Dim plA2 As Range 'colonne A du second fichier
Dim derA2 As Range 'cellule butoir colonne A du second fichier
Dim plC1 As Range 'colonne C du premier fichier
Dim plC2 As Range 'colonne C du second fichier
Dim plD1 As Range 'colonne D du premier fichier
Dim plD2 As Range 'colonne D du second fichier
Dim plF1 As Range 'colonne F du premier fichier
Dim plF2 As Range 'colonne F du second fichier
Dim pt1 As Long
Dim pt2 As Long
Dim supPt1 As Long
Dim supPt2 As Long
Application.ScreenUpdating = False
Const maxValeur = "zzzzzzzzzzzzzzzzzzz"
'remplacer les lignes du test ================================== > > Set wb1 = ActiveWorkbook
Set wb2 = ActiveWorkbook
'par
'Set wb1 = Workbooks.Open("fic1.xls")
'Set wb2 = Workbooks.Open("fic2.xls")
Set sh1 = wb1.Sheets(1)
'============================================================== > > 'remplacer les lignes du test ================================== > > Set sh2 = wb2.Sheets(2)
'par
'Set sh2 = wb2.Sheets(1)
'============================================================== > > 'classeur 1
Set derA1 = sh1.Range("A65536").End(xlUp).Offset(1)
derA1.Value = maxValeur 'valeur destinée à borner le fichier
supPt1 = derA1.Row
Set plA1 = Range(sh1.Range("A1"), derA1)
tA1 = plA1.Value
'classeur 2
Set derA2 = sh2.Range("A65536").End(xlUp).Offset(1)
derA2.Value = maxValeur 'valeur destinée à borner le fichier
supPt2 = derA2.Row
Set plA2 = Range(sh2.Range("A1"), derA2)
tA2 = plA2.Value
'colonnes C et E
Set plC1 = Range(sh1.Range("C1"), sh1.Range("C" & supPt1))
Set plD1 = Range(sh1.Range("D1"), sh1.Range("D" & supPt1))
Set plF1 = Range(sh1.Range("F1"), sh1.Range("F" & supPt1))
Set plC2 = Range(sh2.Range("C1"), sh2.Range("C" & supPt2))
Set plD2 = Range(sh2.Range("D1"), sh2.Range("D" & supPt2))
Set plF2 = Range(sh2.Range("F1"), sh2.Range("F" & supPt2))
tC1 = plC1.Value
tD1 = plD1.Value
tF1 = plF1.Value
tC2 = plC2.Value
tD2 = plD2.Value
tF2 = plF2.Value
' Lire la première cellule du fichier Fic1, (et l'appeler cellFic1);
pt1 = 1 'on utilise les pointeurs
' Lire la première cellule du fichier Fic2, (et l'appeler cellFic2);
pt2 = 1
' DO WHILE < il y a des cellules non vides dans Fic1 ou Fic2 >
Do While (pt1 < supPt1) Or (pt2 < supPt2)
' IF cellFic1.Value < cellFic2.Value
If tA1(pt1, 1) < tA2(pt2, 1) Then
' THEN < traitement présent dans Fic2 seulement >;
action2 pt1
'< remplacer cellFic1 par la cellule
' suivante du fichier Fic1 >
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' ELSE
' IF cellFic1.Value = cellFic2.Value
ElseIf tA1(pt1, 1) = tA2(pt2, 1) Then
' THEN < traitement présent dans les deux>;
action1 pt1, pt2
' < remplacer cellFic1 par la cellule
' suivante du fichier Fic1>
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
' ELSE < traitement présent dans Fic2 seulement>
Else
action3 pt2
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
End If
Loop
'écriture sur les feuilles
plC1.Value = tC1
plD1.Value = tD1
plF1.Value = tF1
plF2.Value = tF2
derA1.EntireRow.Delete 'efface la ligne maxValue
derA2.EntireRow.Delete 'efface la ligne maxValue
Application.ScreenUpdating = True
Debug.Print Time
End Sub
Sub action1(pt1 As Long, pt2 As Long)
'--> Les tableaux des deux fichiers sont tries selon la colonne A, par
ordre'croissant, de la même façon. <--
'La colonne A sera celle a comparer.
'La colonne B ne sera jamais modifie ni comparée.
'Les colonnes C, D, E seront modifies dans certains cas mais aucunement
'comparées.
'Les colonnes A contiennent des codes (chaîne des caractères au format
texte).
'Je veux comparer les cellules des colonnes A de la façon 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.
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
"OK"
' Écrire dans la cellule de la colonne F du deuxième fichier la
chaîne
"CaS".
tC1(pt1, 1) = tC2(pt2, 1)
tD1(pt1, 1) = tD2(pt2, 1)
tF1(pt1, 1) = "OK"
tF2(pt2, 1) = "CaS"
End Sub
Sub action2(pt1 As Long)
'LE CODE EST DANS LE PREMIER FICHIER MAIS PAS DANS LE DEUXIEME
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
'"CaB".
tF1(pt1, 1) = "CB"
End Sub
Sub action3(pt2 As Long)
'LE CODE EST DANS LE DEUXIEME FICHIER MAIS PAS DANS LE PREMIER :
' Écrire dans la cellule de la colonne F du deuxième fichier la
chaîne
'"CaC".
tF2(pt2, 1) = "CaC"
End Sub
--
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
Excuses moi, je me suis trompe quelque part !
Revoici ce qu'il faut faire :
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 E du premier fichier est égale à celle du
deuxième fichier.
Ecrire dans la cellule de la colonne D du premier fichier la chaîne
"N"
Ecrire dans la cellule de la colonne F du premier fichier la chaîne
"OK".
Ecrire dans la cellule de la colonne F du deuxième fichier la chaîne
"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 chaîne
"CaB".
Ecrire dans la cellule de la colonne D du premier fichier la chaîne
"B".
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 chaîne
"CaC".
Ecrire dans la cellule de la colonne F du deuxième fichier la chaîne
"N".
Il ne fallait pas ecraser la valeur de la colonne D mais E.
Cela explique pourquoi ca ne marche pas trop (Cf. la suite).
J'ai donc excute ton code (avec les deux modifs que tu as precise) :
- moins de 5 secondes pour le faire, chapeau !
- Les colonnes F des deux fichiers sont entierement remplies. Aucune
cellule n'est vide : c'est bon signe !
- J'ai modifie ton code pour que ce soit la cellule E qui soit modifiee
(et
pas D).
Ca marche.
MAIS
- Si le code contient des lettres ou un /, il dit qu'il faut le creer.
Les
valeurs des colonnes A ne sont pas a traiter comme des valeurs
(numeriques)
mais comme des chaines de caracteres (donc le fait que ca soit inferieur
ou
superieur n'a pas de sens ...)
- J'ai essaye avec un autre couple de fichiers et la ton programme n'a
pas
marche.
Un code qui existe pourtant dans les deux fichiers (je l'ai verifie) a ete
marque comme CB (fichier1) et Cac (fichier2).
Les procedures action2 et action3 ont ete faites au lieu de action1.
Ca a marche avec le premier couple de fichiers car le code etait a la
ligne
30 (fichier1) et la ligne 70 (fichier2).
Ca n'a pas marche avec le second couple de fichiers car le code etait a la
ligne 150 (fichier1) et la ligne 40 (fichier2).
Donc, si le meme code est plus bas dans le fichier1 que dans le fichier2,
il
y a une erreur ...
C'est pour ca qu'il faudrait que le programme balaie toute la colonne de
haut en bas jusqu'a trouver le code identique ... ou ne pas le trouver.
Donc, la procedure sur la colonne E ne marche pas. Mais le reste a l'air
et
c'est deja une grande avance Pascal.
Serait t'il possible de poursuivre cette discussion par mail ? Je te
contacterai a ton mail (sans le "_spam" :D ).
"Pascal Engelmajer" <pascal.engelmajer@ilyapa_spam.net> escreveu na
mensagem
news:e73nGUYPEHA.1392@TK2MSFTNGP09.phx.gbl...
Salut,
ça le fait.
voir dans le code ce qu'il faut modifier....
Option Explicit
Dim tA1 As Variant 'colonne A du premier fichier
Dim tA2 As Variant 'colonne A du second fichier
Dim tC1 As Variant 'colonne C du premier fichier
Dim tD1 As Variant 'colonne D du premier fichier
Dim tC2 As Variant 'colonne C du second fichier
Dim tD2 As Variant 'colonne D du second fichier
Dim tF1 As Variant 'colonne F du premier fichier
Dim tF2 As Variant 'colonne F du second fichier
Sub appareillage()
Debug.Print Time
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim plA1 As Range 'colonne A du premier fichier
Dim derA1 As Range 'cellule butoir colonne A du premier fichier
Dim plA2 As Range 'colonne A du second fichier
Dim derA2 As Range 'cellule butoir colonne A du second fichier
Dim plC1 As Range 'colonne C du premier fichier
Dim plC2 As Range 'colonne C du second fichier
Dim plD1 As Range 'colonne D du premier fichier
Dim plD2 As Range 'colonne D du second fichier
Dim plF1 As Range 'colonne F du premier fichier
Dim plF2 As Range 'colonne F du second fichier
Dim pt1 As Long
Dim pt2 As Long
Dim supPt1 As Long
Dim supPt2 As Long
Application.ScreenUpdating = False
Const maxValeur = "zzzzzzzzzzzzzzzzzzz"
'remplacer les lignes du test ================================== > > Set wb1 = ActiveWorkbook
Set wb2 = ActiveWorkbook
'par
'Set wb1 = Workbooks.Open("fic1.xls")
'Set wb2 = Workbooks.Open("fic2.xls")
Set sh1 = wb1.Sheets(1)
'============================================================== > > 'remplacer les lignes du test ================================== > > Set sh2 = wb2.Sheets(2)
'par
'Set sh2 = wb2.Sheets(1)
'============================================================== > > 'classeur 1
Set derA1 = sh1.Range("A65536").End(xlUp).Offset(1)
derA1.Value = maxValeur 'valeur destinée à borner le fichier
supPt1 = derA1.Row
Set plA1 = Range(sh1.Range("A1"), derA1)
tA1 = plA1.Value
'classeur 2
Set derA2 = sh2.Range("A65536").End(xlUp).Offset(1)
derA2.Value = maxValeur 'valeur destinée à borner le fichier
supPt2 = derA2.Row
Set plA2 = Range(sh2.Range("A1"), derA2)
tA2 = plA2.Value
'colonnes C et E
Set plC1 = Range(sh1.Range("C1"), sh1.Range("C" & supPt1))
Set plD1 = Range(sh1.Range("D1"), sh1.Range("D" & supPt1))
Set plF1 = Range(sh1.Range("F1"), sh1.Range("F" & supPt1))
Set plC2 = Range(sh2.Range("C1"), sh2.Range("C" & supPt2))
Set plD2 = Range(sh2.Range("D1"), sh2.Range("D" & supPt2))
Set plF2 = Range(sh2.Range("F1"), sh2.Range("F" & supPt2))
tC1 = plC1.Value
tD1 = plD1.Value
tF1 = plF1.Value
tC2 = plC2.Value
tD2 = plD2.Value
tF2 = plF2.Value
' Lire la première cellule du fichier Fic1, (et l'appeler cellFic1);
pt1 = 1 'on utilise les pointeurs
' Lire la première cellule du fichier Fic2, (et l'appeler cellFic2);
pt2 = 1
' DO WHILE < il y a des cellules non vides dans Fic1 ou Fic2 >
Do While (pt1 < supPt1) Or (pt2 < supPt2)
' IF cellFic1.Value < cellFic2.Value
If tA1(pt1, 1) < tA2(pt2, 1) Then
' THEN < traitement présent dans Fic2 seulement >;
action2 pt1
'< remplacer cellFic1 par la cellule
' suivante du fichier Fic1 >
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' ELSE
' IF cellFic1.Value = cellFic2.Value
ElseIf tA1(pt1, 1) = tA2(pt2, 1) Then
' THEN < traitement présent dans les deux>;
action1 pt1, pt2
' < remplacer cellFic1 par la cellule
' suivante du fichier Fic1>
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
' ELSE < traitement présent dans Fic2 seulement>
Else
action3 pt2
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
End If
Loop
'écriture sur les feuilles
plC1.Value = tC1
plD1.Value = tD1
plF1.Value = tF1
plF2.Value = tF2
derA1.EntireRow.Delete 'efface la ligne maxValue
derA2.EntireRow.Delete 'efface la ligne maxValue
Application.ScreenUpdating = True
Debug.Print Time
End Sub
Sub action1(pt1 As Long, pt2 As Long)
'--> Les tableaux des deux fichiers sont tries selon la colonne A, par
ordre
'croissant, de la même façon. <--
'La colonne A sera celle a comparer.
'La colonne B ne sera jamais modifie ni comparée.
'Les colonnes C, D, E seront modifies dans certains cas mais aucunement
'comparées.
'Les colonnes A contiennent des codes (chaîne des caractères au format
texte).
'Je veux comparer les cellules des colonnes A de la façon 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.
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
"OK"
' Écrire dans la cellule de la colonne F du deuxième fichier la
chaîne
"CaS".
tC1(pt1, 1) = tC2(pt2, 1)
tD1(pt1, 1) = tD2(pt2, 1)
tF1(pt1, 1) = "OK"
tF2(pt2, 1) = "CaS"
End Sub
Sub action2(pt1 As Long)
'LE CODE EST DANS LE PREMIER FICHIER MAIS PAS DANS LE DEUXIEME
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
'"CaB".
tF1(pt1, 1) = "CB"
End Sub
Sub action3(pt2 As Long)
'LE CODE EST DANS LE DEUXIEME FICHIER MAIS PAS DANS LE PREMIER :
' Écrire dans la cellule de la colonne F du deuxième fichier la
chaîne
'"CaC".
tF2(pt2, 1) = "CaC"
End Sub
--
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
Excuses moi, je me suis trompe quelque part !
Revoici ce qu'il faut faire :
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 E du premier fichier est égale à celle du
deuxième fichier.
Ecrire dans la cellule de la colonne D du premier fichier la chaîne
"N"
Ecrire dans la cellule de la colonne F du premier fichier la chaîne
"OK".
Ecrire dans la cellule de la colonne F du deuxième fichier la chaîne
"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 chaîne
"CaB".
Ecrire dans la cellule de la colonne D du premier fichier la chaîne
"B".
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 chaîne
"CaC".
Ecrire dans la cellule de la colonne F du deuxième fichier la chaîne
"N".
Il ne fallait pas ecraser la valeur de la colonne D mais E.
Cela explique pourquoi ca ne marche pas trop (Cf. la suite).
J'ai donc excute ton code (avec les deux modifs que tu as precise) :
- moins de 5 secondes pour le faire, chapeau !
- Les colonnes F des deux fichiers sont entierement remplies. Aucune
cellule n'est vide : c'est bon signe !
- J'ai modifie ton code pour que ce soit la cellule E qui soit modifiee
(et
pas D).
Ca marche.
MAIS
- Si le code contient des lettres ou un /, il dit qu'il faut le creer.
Les
valeurs des colonnes A ne sont pas a traiter comme des valeurs
(numeriques)
mais comme des chaines de caracteres (donc le fait que ca soit inferieur
ou
superieur n'a pas de sens ...)
- J'ai essaye avec un autre couple de fichiers et la ton programme n'a
pas
marche.
Un code qui existe pourtant dans les deux fichiers (je l'ai verifie) a ete
marque comme CB (fichier1) et Cac (fichier2).
Les procedures action2 et action3 ont ete faites au lieu de action1.
Ca a marche avec le premier couple de fichiers car le code etait a la
ligne
30 (fichier1) et la ligne 70 (fichier2).
Ca n'a pas marche avec le second couple de fichiers car le code etait a la
ligne 150 (fichier1) et la ligne 40 (fichier2).
Donc, si le meme code est plus bas dans le fichier1 que dans le fichier2,
il
y a une erreur ...
C'est pour ca qu'il faudrait que le programme balaie toute la colonne de
haut en bas jusqu'a trouver le code identique ... ou ne pas le trouver.
Donc, la procedure sur la colonne E ne marche pas. Mais le reste a l'air
et
c'est deja une grande avance Pascal.
Serait t'il possible de poursuivre cette discussion par mail ? Je te
contacterai a ton mail (sans le "_spam" :D ).
"Pascal Engelmajer" escreveu na
mensagem
news:Salut,
ça le fait.
voir dans le code ce qu'il faut modifier....
Option Explicit
Dim tA1 As Variant 'colonne A du premier fichier
Dim tA2 As Variant 'colonne A du second fichier
Dim tC1 As Variant 'colonne C du premier fichier
Dim tD1 As Variant 'colonne D du premier fichier
Dim tC2 As Variant 'colonne C du second fichier
Dim tD2 As Variant 'colonne D du second fichier
Dim tF1 As Variant 'colonne F du premier fichier
Dim tF2 As Variant 'colonne F du second fichier
Sub appareillage()
Debug.Print Time
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim plA1 As Range 'colonne A du premier fichier
Dim derA1 As Range 'cellule butoir colonne A du premier fichier
Dim plA2 As Range 'colonne A du second fichier
Dim derA2 As Range 'cellule butoir colonne A du second fichier
Dim plC1 As Range 'colonne C du premier fichier
Dim plC2 As Range 'colonne C du second fichier
Dim plD1 As Range 'colonne D du premier fichier
Dim plD2 As Range 'colonne D du second fichier
Dim plF1 As Range 'colonne F du premier fichier
Dim plF2 As Range 'colonne F du second fichier
Dim pt1 As Long
Dim pt2 As Long
Dim supPt1 As Long
Dim supPt2 As Long
Application.ScreenUpdating = False
Const maxValeur = "zzzzzzzzzzzzzzzzzzz"
'remplacer les lignes du test ================================== > > Set wb1 = ActiveWorkbook
Set wb2 = ActiveWorkbook
'par
'Set wb1 = Workbooks.Open("fic1.xls")
'Set wb2 = Workbooks.Open("fic2.xls")
Set sh1 = wb1.Sheets(1)
'============================================================== > > 'remplacer les lignes du test ================================== > > Set sh2 = wb2.Sheets(2)
'par
'Set sh2 = wb2.Sheets(1)
'============================================================== > > 'classeur 1
Set derA1 = sh1.Range("A65536").End(xlUp).Offset(1)
derA1.Value = maxValeur 'valeur destinée à borner le fichier
supPt1 = derA1.Row
Set plA1 = Range(sh1.Range("A1"), derA1)
tA1 = plA1.Value
'classeur 2
Set derA2 = sh2.Range("A65536").End(xlUp).Offset(1)
derA2.Value = maxValeur 'valeur destinée à borner le fichier
supPt2 = derA2.Row
Set plA2 = Range(sh2.Range("A1"), derA2)
tA2 = plA2.Value
'colonnes C et E
Set plC1 = Range(sh1.Range("C1"), sh1.Range("C" & supPt1))
Set plD1 = Range(sh1.Range("D1"), sh1.Range("D" & supPt1))
Set plF1 = Range(sh1.Range("F1"), sh1.Range("F" & supPt1))
Set plC2 = Range(sh2.Range("C1"), sh2.Range("C" & supPt2))
Set plD2 = Range(sh2.Range("D1"), sh2.Range("D" & supPt2))
Set plF2 = Range(sh2.Range("F1"), sh2.Range("F" & supPt2))
tC1 = plC1.Value
tD1 = plD1.Value
tF1 = plF1.Value
tC2 = plC2.Value
tD2 = plD2.Value
tF2 = plF2.Value
' Lire la première cellule du fichier Fic1, (et l'appeler cellFic1);
pt1 = 1 'on utilise les pointeurs
' Lire la première cellule du fichier Fic2, (et l'appeler cellFic2);
pt2 = 1
' DO WHILE < il y a des cellules non vides dans Fic1 ou Fic2 >
Do While (pt1 < supPt1) Or (pt2 < supPt2)
' IF cellFic1.Value < cellFic2.Value
If tA1(pt1, 1) < tA2(pt2, 1) Then
' THEN < traitement présent dans Fic2 seulement >;
action2 pt1
'< remplacer cellFic1 par la cellule
' suivante du fichier Fic1 >
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' ELSE
' IF cellFic1.Value = cellFic2.Value
ElseIf tA1(pt1, 1) = tA2(pt2, 1) Then
' THEN < traitement présent dans les deux>;
action1 pt1, pt2
' < remplacer cellFic1 par la cellule
' suivante du fichier Fic1>
pt1 = IIf(pt1 < supPt1, pt1 + 1, pt1)
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
' ELSE < traitement présent dans Fic2 seulement>
Else
action3 pt2
' < remplacer cellFic2 par la cellule
' suivante du fichier Fic2>
pt2 = IIf(pt2 < supPt2, pt2 + 1, pt2)
End If
Loop
'écriture sur les feuilles
plC1.Value = tC1
plD1.Value = tD1
plF1.Value = tF1
plF2.Value = tF2
derA1.EntireRow.Delete 'efface la ligne maxValue
derA2.EntireRow.Delete 'efface la ligne maxValue
Application.ScreenUpdating = True
Debug.Print Time
End Sub
Sub action1(pt1 As Long, pt2 As Long)
'--> Les tableaux des deux fichiers sont tries selon la colonne A, par
ordre'croissant, de la même façon. <--
'La colonne A sera celle a comparer.
'La colonne B ne sera jamais modifie ni comparée.
'Les colonnes C, D, E seront modifies dans certains cas mais aucunement
'comparées.
'Les colonnes A contiennent des codes (chaîne des caractères au format
texte).
'Je veux comparer les cellules des colonnes A de la façon 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.
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
"OK"
' Écrire dans la cellule de la colonne F du deuxième fichier la
chaîne
"CaS".
tC1(pt1, 1) = tC2(pt2, 1)
tD1(pt1, 1) = tD2(pt2, 1)
tF1(pt1, 1) = "OK"
tF2(pt2, 1) = "CaS"
End Sub
Sub action2(pt1 As Long)
'LE CODE EST DANS LE PREMIER FICHIER MAIS PAS DANS LE DEUXIEME
' Écrire dans la cellule de la colonne F du premier fichier la chaîne
'"CaB".
tF1(pt1, 1) = "CB"
End Sub
Sub action3(pt2 As Long)
'LE CODE EST DANS LE DEUXIEME FICHIER MAIS PAS DANS LE PREMIER :
' Écrire dans la cellule de la colonne F du deuxième fichier la
chaîne
'"CaC".
tF2(pt2, 1) = "CaC"
End Sub
--
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
Salut,Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
OKS'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide
de
lacolonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
Écris un exemple avec cinq ou six lignes présentant tous les cas possibles
fic1 avant traitement
A B C D E F
A1 a a a a a
fic1 après traitement
A B C D E F
A1 a b b a OK
fic2 avant traitement
A B C D E F
A1 b b b b b
fic2 après traitement
A B C D E F
A1 b b b b OK
etc.
--
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
Salut,
Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
OK
S'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide
de
la
colonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
Écris un exemple avec cinq ou six lignes présentant tous les cas possibles
fic1 avant traitement
A B C D E F
A1 a a a a a
fic1 après traitement
A B C D E F
A1 a b b a OK
fic2 avant traitement
A B C D E F
A1 b b b b b
fic2 après traitement
A B C D E F
A1 b b b b OK
etc.
--
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
Salut,Dans mon cas, s'il trouve la même valeur, il fait les quatre actions
demandées.
OKS'il ne trouve pas, il doit aller jusqu'a la dernière cellule non vide
de
lacolonne pour écrire une chaîne dans la colonne F.
? la dernier cellule non vide de la colonne pour ...
la dernier cellule non vide de quelle colonne (A ? F ?) de quelle feuille
?
...
Écris un exemple avec cinq ou six lignes présentant tous les cas possibles
fic1 avant traitement
A B C D E F
A1 a a a a a
fic1 après traitement
A B C D E F
A1 a b b a OK
fic2 avant traitement
A B C D E F
A1 b b b b b
fic2 après traitement
A B C D E F
A1 b b b b OK
etc.
--
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