Perso, je ferais ceci (si j'ai bien compris): Sur une troisième feuille, copier la liste A ET la liste B. Ensuite, je filtrerais sur place avec l'option "sans doux blonds".
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
Bonjour Alfred
Perso, je ferais ceci (si j'ai bien compris):
Sur une troisième feuille, copier la liste A ET la liste B.
Ensuite, je filtrerais sur place avec l'option "sans doux blonds".
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
39161334-080f-4a68-8a4b-7595f9eee93e@m7g2000vbq.googlegroups.com...
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets.
en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C"
qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS
les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une
macro ?
Perso, je ferais ceci (si j'ai bien compris): Sur une troisième feuille, copier la liste A ET la liste B. Ensuite, je filtrerais sur place avec l'option "sans doux blonds".
Jacquouille
" Le vin est au repas ce que le parfum est à la femme." "Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
LSteph
Bonjour,
Supposons tes Listes en Feuil1 2 3 de A2:A50 et en A le titre Objet
et que la listeB soity composée d'items issus de la Liste A par filtre élaboré ne semble pas pratique dans ce cas, par macro forcément on boucle et ca y est,
je choisis donc une proposition par formule puisque prioritairement c'est possible ainsi:
en colonne b adjacente à ta liste de Feuil1 =NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000 en A2:A50 de Feuil3 =SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));""; INDEX(Feuil1!$A$2:A50;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B $50;LIGNE()-1);Feuil1!$B$2:$B$50;0)))
-- LSteph
On 22 fév, 10:31, Alfred WALLACE wrote:
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
Bonjour,
Supposons tes Listes en Feuil1 2 3 de A2:A50 et en A le titre Objet
et que la listeB soity composée d'items issus de la Liste A
par filtre élaboré ne semble pas pratique dans ce cas, par macro
forcément on boucle et ca y est,
je choisis donc une proposition par formule puisque prioritairement
c'est possible ainsi:
en colonne b adjacente à ta liste de Feuil1
=NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000
en A2:A50 de Feuil3
=SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));"";
INDEX(Feuil1!$A$2:A50;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B
$50;LIGNE()-1);Feuil1!$B$2:$B$50;0)))
--
LSteph
On 22 fév, 10:31, Alfred WALLACE <jos...@gmail.com> wrote:
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets.
en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C"
qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS
les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une
macro ?
Supposons tes Listes en Feuil1 2 3 de A2:A50 et en A le titre Objet
et que la listeB soity composée d'items issus de la Liste A par filtre élaboré ne semble pas pratique dans ce cas, par macro forcément on boucle et ca y est,
je choisis donc une proposition par formule puisque prioritairement c'est possible ainsi:
en colonne b adjacente à ta liste de Feuil1 =NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000 en A2:A50 de Feuil3 =SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));""; INDEX(Feuil1!$A$2:A50;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B $50;LIGNE()-1);Feuil1!$B$2:$B$50;0)))
-- LSteph
On 22 fév, 10:31, Alfred WALLACE wrote:
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
LSteph
Bonjour Jacquouille,
il me semble que le résultat de cette extraction reprend la liste en A certes sans doublons mais sans éliminer ceux qui sont en la liste B
Cordialement.
-- LSteph (Mieux vaut partir à point que d'arriver saignant )
On 22 fév, 12:26, "Jacquouille" wrote:
Bonjour Alfred
Perso, je ferais ceci (si j'ai bien compris): Sur une troisi me feuille, copier la liste A ET la liste B. Ensuite, je filtrerais sur place avec l'option "sans doux blonds".
Jacquouille
" Le vin est au repas ce que le parfum est la femme." "Alfred WALLACE" a crit dans le message de groupe de discussion :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la r sultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elabor peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
Jos
Bonjour Jacquouille,
il me semble que le résultat de cette extraction reprend la liste en
A
certes sans doublons mais sans éliminer ceux qui sont en la liste B
Cordialement.
--
LSteph
(Mieux vaut partir à point que d'arriver saignant )
On 22 fév, 12:26, "Jacquouille" <j.thierne...@skynet.be> wrote:
Bonjour Alfred
Perso, je ferais ceci (si j'ai bien compris):
Sur une troisi me feuille, copier la liste A ET la liste B.
Ensuite, je filtrerais sur place avec l'option "sans doux blonds".
Jacquouille
" Le vin est au repas ce que le parfum est la femme."
"Alfred WALLACE" a crit dans le message de groupe de discussion :
39161334-080f-4a68-8a4b-7595f9eee...@m7g2000vbq.googlegroups.com...
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets.
en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C"
qui serait la r sultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS
les objets de la liste "B".
est ce qu'un filtre elabor peut le faire ? ou une formule ? ou une
macro ?
il me semble que le résultat de cette extraction reprend la liste en A certes sans doublons mais sans éliminer ceux qui sont en la liste B
Cordialement.
-- LSteph (Mieux vaut partir à point que d'arriver saignant )
On 22 fév, 12:26, "Jacquouille" wrote:
Bonjour Alfred
Perso, je ferais ceci (si j'ai bien compris): Sur une troisi me feuille, copier la liste A ET la liste B. Ensuite, je filtrerais sur place avec l'option "sans doux blonds".
Jacquouille
" Le vin est au repas ce que le parfum est la femme." "Alfred WALLACE" a crit dans le message de groupe de discussion :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la r sultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elabor peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
Jos
Alfred WALLACE
Bonjour à vous deux, merci.
pour Jacquouille, effectivement, celà enleve les doublons, mais celà laisse les valeurs initiales, c'est à dire que, si j'ai 3 objets A, il m'en laisse 1.
Pour Lsteph : je vais essayer de faire fonctionner tes formules, mais je voulais préciser que liste A = liste GLOBALE (plus de 1000 lignes) liste B = une liste saisie "a la mano" : ce sont les objets que l'on souhaite "sortir" de la liste A. la liste C = c'est le resultat, c'est à dire Liste A moins liste B.
bon, ceci dit, j'essaye de comprendre .... ta première formule permet de savoir si, dans la liste globale, le nom de la ligne en cours est présent dans la liste B... mais, pourquoi tu rajoutes le numéro de ligne en cours / 10000 ?
pour ta 2ieme formule ... heu ... j'é malalatêêêêteuuuuu....
-> SI ! bon, là..... je comprend ...
=SI(
-> là je comprend pas, mais, c'est le cas où l'objet ne doit pas être remis en liste C
-> SINON ... heu et alors là ... heu .... je capte plus rien !!!!
; -> heu, l'aide sur INDEX .... me dit pas trop comment tu utilises ces formules.....
INDEX(
Feuil1!$A$2:A50 ;
EQUIV(
PETITE.VALEUR(Feuil1!$B$2:$B$50 ; LIGNE()-1 );
Feuil1!$B$2:$B$50;0 ) ) )
EN TOUT CAS Çà marche !!!! (et je ne cris pas...)
MERCI pour ton aide ! et j'espère que tu voudras bien m'expliquer comment çà fonctionne...
cordialement José
Lsteph à écrit : Bonjour,
Supposons tes Listes en Feuil1 2 3 de A2:A50 et en A le titre Objet
et que la listeB soity composée d'items issus de la Liste A par filtre élaboré ne semble pas pratique dans ce cas, par macro forcément on boucle et ca y est,
je choisis donc une proposition par formule puisque prioritairement c'est possible ainsi:
en colonne b adjacente à ta liste de Feuil1 =NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000 en A2:A50 de Feuil3 =SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));""; INDEX(Feuil1!$A$2:A50;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B $50;LIGNE()-1);Feuil1!$B$2:$B$50;0)))
-- LSteph
On 22 fév, 10:31, Alfred WALLACE wrote:
Bonjour à vous deux, merci.
pour Jacquouille, effectivement, celà enleve les doublons, mais celà
laisse les valeurs initiales,
c'est à dire que, si j'ai 3 objets A, il m'en laisse 1.
Pour Lsteph :
je vais essayer de faire fonctionner tes formules, mais je voulais
préciser que
liste A = liste GLOBALE (plus de 1000 lignes)
liste B = une liste saisie "a la mano" : ce sont les objets que l'on
souhaite "sortir" de la liste A.
la liste C = c'est le resultat, c'est à dire Liste A moins liste B.
bon, ceci dit, j'essaye de comprendre .... ta première formule permet
de savoir
si, dans la liste globale, le nom de la ligne en cours est présent
dans la liste B...
mais, pourquoi tu rajoutes le numéro de ligne en cours / 10000 ?
pour ta 2ieme formule ... heu ... j'é malalatêêêêteuuuuu....
-> SI ! bon, là..... je comprend ...
=SI(
-> là je comprend pas, mais, c'est le cas où l'objet ne doit pas être
remis en liste C
-> SINON ... heu et alors là ... heu .... je capte plus rien !!!!
;
-> heu, l'aide sur INDEX .... me dit pas trop comment tu utilises ces
formules.....
INDEX(
Feuil1!$A$2:A50 ;
EQUIV(
PETITE.VALEUR(Feuil1!$B$2:$B$50 ; LIGNE()-1 );
Feuil1!$B$2:$B$50;0
)
)
)
EN TOUT CAS Çà marche !!!! (et je ne cris pas...)
MERCI pour ton aide ! et j'espère que tu voudras bien m'expliquer
comment çà fonctionne...
cordialement
José
Lsteph à écrit :
Bonjour,
Supposons tes Listes en Feuil1 2 3 de A2:A50 et en A le titre Objet
et que la listeB soity composée d'items issus de la Liste A
par filtre élaboré ne semble pas pratique dans ce cas, par macro
forcément on boucle et ca y est,
je choisis donc une proposition par formule puisque prioritairement
c'est possible ainsi:
en colonne b adjacente à ta liste de Feuil1
=NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000
en A2:A50 de Feuil3
=SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));"";
INDEX(Feuil1!$A$2:A50;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B
$50;LIGNE()-1);Feuil1!$B$2:$B$50;0)))
--
LSteph
On 22 fév, 10:31, Alfred WALLACE <jos...@gmail.com> wrote:
pour Jacquouille, effectivement, celà enleve les doublons, mais celà laisse les valeurs initiales, c'est à dire que, si j'ai 3 objets A, il m'en laisse 1.
Pour Lsteph : je vais essayer de faire fonctionner tes formules, mais je voulais préciser que liste A = liste GLOBALE (plus de 1000 lignes) liste B = une liste saisie "a la mano" : ce sont les objets que l'on souhaite "sortir" de la liste A. la liste C = c'est le resultat, c'est à dire Liste A moins liste B.
bon, ceci dit, j'essaye de comprendre .... ta première formule permet de savoir si, dans la liste globale, le nom de la ligne en cours est présent dans la liste B... mais, pourquoi tu rajoutes le numéro de ligne en cours / 10000 ?
pour ta 2ieme formule ... heu ... j'é malalatêêêêteuuuuu....
-> SI ! bon, là..... je comprend ...
=SI(
-> là je comprend pas, mais, c'est le cas où l'objet ne doit pas être remis en liste C
-> SINON ... heu et alors là ... heu .... je capte plus rien !!!!
; -> heu, l'aide sur INDEX .... me dit pas trop comment tu utilises ces formules.....
INDEX(
Feuil1!$A$2:A50 ;
EQUIV(
PETITE.VALEUR(Feuil1!$B$2:$B$50 ; LIGNE()-1 );
Feuil1!$B$2:$B$50;0 ) ) )
EN TOUT CAS Çà marche !!!! (et je ne cris pas...)
MERCI pour ton aide ! et j'espère que tu voudras bien m'expliquer comment çà fonctionne...
cordialement José
Lsteph à écrit : Bonjour,
Supposons tes Listes en Feuil1 2 3 de A2:A50 et en A le titre Objet
et que la listeB soity composée d'items issus de la Liste A par filtre élaboré ne semble pas pratique dans ce cas, par macro forcément on boucle et ca y est,
je choisis donc une proposition par formule puisque prioritairement c'est possible ainsi:
en colonne b adjacente à ta liste de Feuil1 =NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000 en A2:A50 de Feuil3 =SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));""; INDEX(Feuil1!$A$2:A50;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B $50;LIGNE()-1);Feuil1!$B$2:$B$50;0)))
-- LSteph
On 22 fév, 10:31, Alfred WALLACE wrote:
Igor
Bonjour Un filtre élaboré avec une formule semble pas mal aussi... A condition qu'il y ait une colonne qui serve de comparaison pour le "dédoublonnage" entre Feuil1 et Feuil2. (Et s'il faut comparer plusieurs infos : une petite concaténation dans chaque feuille) On va dire qu'on compare la colonne F de Feuil1 à la colonne G de Feuil2.
On veut extraire de Feuil1 en Feuil3 : se placer dans une zone vide de Feuil3.
La plage de données source : la liste de données de Feuil1.
Le critère est par exemple en Feuil3, cellules Feuil3!A1:A2 La cellule A1 est vide (cause critère sur formule). La cellule A2 contient la formule =NB.SI(Feuil2!$G$2:$G$2000;Feuil1!F2)=0 Le filtre élaboré va compter le nombre d'occurences de chaque cellule de la colonne F de Feuil1 dans la G2:G2000 de Feuil2. Egal à 0, la ligne est extraite.
La destination, par exemple Feuil3!A4
Et hop. Igor
"Alfred WALLACE" a écrit dans le message de news: Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
Bonjour
Un filtre élaboré avec une formule semble pas mal aussi...
A condition qu'il y ait une colonne qui serve de comparaison pour le "dédoublonnage" entre Feuil1 et Feuil2.
(Et s'il faut comparer plusieurs infos : une petite concaténation dans chaque feuille)
On va dire qu'on compare la colonne F de Feuil1 à la colonne G de Feuil2.
On veut extraire de Feuil1 en Feuil3 : se placer dans une zone vide de Feuil3.
La plage de données source : la liste de données de Feuil1.
Le critère est par exemple en Feuil3, cellules Feuil3!A1:A2
La cellule A1 est vide (cause critère sur formule).
La cellule A2 contient la formule
=NB.SI(Feuil2!$G$2:$G$2000;Feuil1!F2)=0
Le filtre élaboré va compter le nombre d'occurences de chaque cellule de la colonne F de Feuil1 dans la G2:G2000 de Feuil2.
Egal à 0, la ligne est extraite.
La destination, par exemple Feuil3!A4
Et hop.
Igor
"Alfred WALLACE" <jose6a@gmail.com> a écrit dans le message de
news:39161334-080f-4a68-8a4b-7595f9eee93e@m7g2000vbq.googlegroups.com...
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets.
en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C"
qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS
les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une
macro ?
Bonjour Un filtre élaboré avec une formule semble pas mal aussi... A condition qu'il y ait une colonne qui serve de comparaison pour le "dédoublonnage" entre Feuil1 et Feuil2. (Et s'il faut comparer plusieurs infos : une petite concaténation dans chaque feuille) On va dire qu'on compare la colonne F de Feuil1 à la colonne G de Feuil2.
On veut extraire de Feuil1 en Feuil3 : se placer dans une zone vide de Feuil3.
La plage de données source : la liste de données de Feuil1.
Le critère est par exemple en Feuil3, cellules Feuil3!A1:A2 La cellule A1 est vide (cause critère sur formule). La cellule A2 contient la formule =NB.SI(Feuil2!$G$2:$G$2000;Feuil1!F2)=0 Le filtre élaboré va compter le nombre d'occurences de chaque cellule de la colonne F de Feuil1 dans la G2:G2000 de Feuil2. Egal à 0, la ligne est extraite.
La destination, par exemple Feuil3!A4
Et hop. Igor
"Alfred WALLACE" a écrit dans le message de news: Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
LSteph
.... L'explication: en colonne b adjacente à ta liste de Feuil1 =NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000
sert à determiner si la valeur liste Feuil1 est dans l'autre liste Feuil2 et à lui attribuer ainsi la valeur zero si on a pas trouvé + sa position en décimal lorsque on ajoute son num de ligne/10000 on obtient ainsi un classement 0,000..le num de ligne ou 1,000..le num de ligne qui sera forcément plus grand si la valeur a été trouvée donc si tu as vraiment beaucoup de lignes /1000000 au lieu de 10000
Ensuite on s'en servira dans le index equiv pour renvoyer la valeur de colonne A selon le rang en colonne B
Petite.valeur (matrice;k) k est l'indice donc le rang pris en compte soit, 1 la plus petite 2 la suivante ..etc .. le but est de s'arrêter et mettre "" quand il n'y en a plus c'est pourquoi on prends le nb de liste A - le nombre de liste B SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));"";
...liste GLOBALE (plus de 1000 lignes)
dans ce cas tu peux adapter SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$5000)-NBVAL(Feuil2!$A$2:$A $5000));""; INDEX(Feuil1!$A$2:A5000;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B $5000;LIGNE()-1);Feuil1!$B$2:$B$5000;0))
Exemple en Feuil1 Objet truc1 truc2 truc3 truc4 truc5
en Feuil2 Objet truc2 truc3
on obtient les rangs suivants Objet rang truc1 0.000002 truc2 1.000003 truc3 1.000004 truc4 0.000005 truc5 0.000006
Ainsi au delà des 5-2 = 3 éléments restants SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$6)-NBVAL(Feuil2!$A$2:$A$6));""; renverra "" sinon matriceþuil1!$B$2:$B$6 petite.valeur(matrice;1) renverra 0.00002 petite.valeur(matrice;2) ..... 0.00005 petite.valeur(matrice;3) ...... 0.00006
soit ainsi index(listeFeuil1colonnea;equiv(petite.valeur(..);matrice;0) renverra respectivement truc1 truc4 truc5
J'espère que cette explication ne donne pas plus mal à latête ;o))
-- LSteph
On 22 fév, 14:19, Alfred WALLACE wrote:
Bonjour à vous deux, merci.
....
L'explication:
en colonne b adjacente à ta liste de Feuil1
=NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000
sert à determiner si la valeur liste Feuil1 est dans l'autre liste
Feuil2
et à lui attribuer ainsi la valeur zero si on a pas trouvé + sa
position en décimal lorsque on ajoute son num de ligne/10000
on obtient ainsi un classement 0,000..le num de ligne
ou 1,000..le num de ligne qui sera forcément plus grand si la valeur a
été trouvée
donc si tu as vraiment beaucoup de lignes /1000000 au lieu de 10000
Ensuite on s'en servira dans le index equiv pour renvoyer la valeur de
colonne A selon le rang en colonne B
Petite.valeur (matrice;k)
k est l'indice donc le rang pris en compte soit, 1 la plus petite 2
la suivante ..etc .. le but est de s'arrêter et mettre "" quand il n'y
en a plus
c'est pourquoi on prends le nb de liste A - le nombre de liste B
SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));"";
...liste GLOBALE (plus de 1000 lignes)
dans ce cas tu peux adapter
SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$5000)-NBVAL(Feuil2!$A$2:$A
$5000));"";
INDEX(Feuil1!$A$2:A5000;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B
$5000;LIGNE()-1);Feuil1!$B$2:$B$5000;0))
Exemple en Feuil1
Objet
truc1
truc2
truc3
truc4
truc5
en Feuil2
Objet
truc2
truc3
on obtient les rangs suivants
Objet rang
truc1 0.000002
truc2 1.000003
truc3 1.000004
truc4 0.000005
truc5 0.000006
Ainsi au delà des 5-2 = 3 éléments restants
SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$6)-NBVAL(Feuil2!$A$2:$A$6));"";
renverra "" sinon
matrice=Feuil1!$B$2:$B$6
petite.valeur(matrice;1) renverra 0.00002
petite.valeur(matrice;2) ..... 0.00005
petite.valeur(matrice;3) ...... 0.00006
soit ainsi
index(listeFeuil1colonnea;equiv(petite.valeur(..);matrice;0)
renverra respectivement
truc1
truc4
truc5
J'espère que cette explication ne donne pas plus mal à latête ;o))
--
LSteph
On 22 fév, 14:19, Alfred WALLACE <jos...@gmail.com> wrote:
.... L'explication: en colonne b adjacente à ta liste de Feuil1 =NB.SI(Feuil2!$A$2:$A$50;Feuil1!A2)+LIGNE()/10000
sert à determiner si la valeur liste Feuil1 est dans l'autre liste Feuil2 et à lui attribuer ainsi la valeur zero si on a pas trouvé + sa position en décimal lorsque on ajoute son num de ligne/10000 on obtient ainsi un classement 0,000..le num de ligne ou 1,000..le num de ligne qui sera forcément plus grand si la valeur a été trouvée donc si tu as vraiment beaucoup de lignes /1000000 au lieu de 10000
Ensuite on s'en servira dans le index equiv pour renvoyer la valeur de colonne A selon le rang en colonne B
Petite.valeur (matrice;k) k est l'indice donc le rang pris en compte soit, 1 la plus petite 2 la suivante ..etc .. le but est de s'arrêter et mettre "" quand il n'y en a plus c'est pourquoi on prends le nb de liste A - le nombre de liste B SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$50)-NBVAL(Feuil2!$A$2:$A$50));"";
...liste GLOBALE (plus de 1000 lignes)
dans ce cas tu peux adapter SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$5000)-NBVAL(Feuil2!$A$2:$A $5000));""; INDEX(Feuil1!$A$2:A5000;EQUIV(PETITE.VALEUR(Feuil1!$B$2:$B $5000;LIGNE()-1);Feuil1!$B$2:$B$5000;0))
Exemple en Feuil1 Objet truc1 truc2 truc3 truc4 truc5
en Feuil2 Objet truc2 truc3
on obtient les rangs suivants Objet rang truc1 0.000002 truc2 1.000003 truc3 1.000004 truc4 0.000005 truc5 0.000006
Ainsi au delà des 5-2 = 3 éléments restants SI(LIGNE()-1>(NBVAL(Feuil1!$A$2:$A$6)-NBVAL(Feuil2!$A$2:$A$6));""; renverra "" sinon matriceþuil1!$B$2:$B$6 petite.valeur(matrice;1) renverra 0.00002 petite.valeur(matrice;2) ..... 0.00005 petite.valeur(matrice;3) ...... 0.00006
soit ainsi index(listeFeuil1colonnea;equiv(petite.valeur(..);matrice;0) renverra respectivement truc1 truc4 truc5
J'espère que cette explication ne donne pas plus mal à latête ;o))
-- LSteph
On 22 fév, 14:19, Alfred WALLACE wrote:
Bonjour à vous deux, merci.
LSteph
...autre solution , cette fois en VBA
'dans Thisworkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Not (Sh.Name = "Feuil1" Or Sh.Name = "Feuil2") Then Exit Sub Application.EnableEvents = False If Target.Column = 1 Then Call faitliste Application.EnableEvents = True End Sub
'dans Module1
Sub faitliste() Dim c As Range, d As Range, x As Boolean Feuil3.[a2:a5000].ClearContents For Each c In Feuil1.[a2:a5000].Cells x = False For Each d In Feuil2.[a2:a5000].Cells If d = c Then x = True: Exit For Next If Not x Then Feuil3.[a65536].End(xlUp)(2) = c.Value Next End Sub
'-- 'LSteph
...autre solution , cette fois en VBA
'dans Thisworkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)
If Not (Sh.Name = "Feuil1" Or Sh.Name = "Feuil2") Then Exit Sub
Application.EnableEvents = False
If Target.Column = 1 Then Call faitliste
Application.EnableEvents = True
End Sub
'dans Module1
Sub faitliste()
Dim c As Range, d As Range, x As Boolean
Feuil3.[a2:a5000].ClearContents
For Each c In Feuil1.[a2:a5000].Cells
x = False
For Each d In Feuil2.[a2:a5000].Cells
If d = c Then x = True: Exit For
Next
If Not x Then Feuil3.[a65536].End(xlUp)(2) = c.Value
Next
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Not (Sh.Name = "Feuil1" Or Sh.Name = "Feuil2") Then Exit Sub Application.EnableEvents = False If Target.Column = 1 Then Call faitliste Application.EnableEvents = True End Sub
'dans Module1
Sub faitliste() Dim c As Range, d As Range, x As Boolean Feuil3.[a2:a5000].ClearContents For Each c In Feuil1.[a2:a5000].Cells x = False For Each d In Feuil2.[a2:a5000].Cells If d = c Then x = True: Exit For Next If Not x Then Feuil3.[a65536].End(xlUp)(2) = c.Value Next End Sub
'-- 'LSteph
isabelle
bonjour José,
Sub Macro1() Dim c As Range, plg1 As Range, plg2 As Range, ligne As Integer Set plg1 = Sheets("Feuil1").Range("A2:A" & Sheets("Feuil1").Range("A65536").End(xlUp).Row) Set plg2 = Sheets("Feuil2").Range("A2:A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row) For Each c In plg1 If IsError(Application.Match(c, plg2, 0)) Then ligne = Sheets("Feuil3").Range("A65536").End(xlUp).Row + 1 Sheets("Feuil1").Rows(c.Row).Copy Sheets("Feuil3").Rows(ligne) Application.CutCopyMode = False End If Next End Sub
isabelle
Le 2011-02-22 04:31, Alfred WALLACE a écrit :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
bonjour José,
Sub Macro1()
Dim c As Range, plg1 As Range, plg2 As Range, ligne As Integer
Set plg1 = Sheets("Feuil1").Range("A2:A" &
Sheets("Feuil1").Range("A65536").End(xlUp).Row)
Set plg2 = Sheets("Feuil2").Range("A2:A" &
Sheets("Feuil2").Range("A65536").End(xlUp).Row)
For Each c In plg1
If IsError(Application.Match(c, plg2, 0)) Then
ligne = Sheets("Feuil3").Range("A65536").End(xlUp).Row + 1
Sheets("Feuil1").Rows(c.Row).Copy Sheets("Feuil3").Rows(ligne)
Application.CutCopyMode = False
End If
Next
End Sub
isabelle
Le 2011-02-22 04:31, Alfred WALLACE a écrit :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets.
en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C"
qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS
les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une
macro ?
Sub Macro1() Dim c As Range, plg1 As Range, plg2 As Range, ligne As Integer Set plg1 = Sheets("Feuil1").Range("A2:A" & Sheets("Feuil1").Range("A65536").End(xlUp).Row) Set plg2 = Sheets("Feuil2").Range("A2:A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row) For Each c In plg1 If IsError(Application.Match(c, plg2, 0)) Then ligne = Sheets("Feuil3").Range("A65536").End(xlUp).Row + 1 Sheets("Feuil1").Rows(c.Row).Copy Sheets("Feuil3").Rows(ligne) Application.CutCopyMode = False End If Next End Sub
isabelle
Le 2011-02-22 04:31, Alfred WALLACE a écrit :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
LSteph
..j'ai oublié de préciser que la liste se met à jour qd on modifie un e valeur dans liste feuil1 ou feuil2 mais tu l'aura sans doute compris en lisant le code
On 22 fév, 16:02, LSteph wrote:
...autre solution , cette fois en VBA
..j'ai oublié de préciser que la liste se met à jour qd on modifie un e
valeur dans liste feuil1 ou feuil2
mais tu l'aura sans doute compris en lisant le code
On 22 fév, 16:02, LSteph <gmlst...@gmail.com> wrote:
..j'ai oublié de préciser que la liste se met à jour qd on modifie un e valeur dans liste feuil1 ou feuil2 mais tu l'aura sans doute compris en lisant le code
On 22 fév, 16:02, LSteph wrote:
...autre solution , cette fois en VBA
michdenis
Bonjour,
une autre approche,
Tu pourrais utiliser une formule comme RechecheV ou la combinaison Index-equiv()
Dans une colonne, tu inscris que tu recopies sur la colonne. =Recherche(Feuil1!A1;Feuil2!A1:A50;1;Faux) Si la donnée en Feuil1!A1 n'est pas présente dans la feuil2, tu obtiens NA
Tu fais un filtre automatique pour afficher seulement les NA et tu supprimes les lignes visibles seulement
MichD -------------------------------------------- "Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?
merci pour vos conseils.
José
Bonjour,
une autre approche,
Tu pourrais utiliser une formule comme RechecheV ou la combinaison Index-equiv()
Dans une colonne, tu inscris que tu recopies sur la colonne.
=Recherche(Feuil1!A1;Feuil2!A1:A50;1;Faux)
Si la donnée en Feuil1!A1 n'est pas présente dans la feuil2, tu obtiens NA
Tu fais un filtre automatique pour afficher seulement les NA
et tu supprimes les lignes visibles seulement
MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :
39161334-080f-4a68-8a4b-7595f9eee93e@m7g2000vbq.googlegroups.com...
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets.
en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C"
qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS
les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une
macro ?
Tu pourrais utiliser une formule comme RechecheV ou la combinaison Index-equiv()
Dans une colonne, tu inscris que tu recopies sur la colonne. =Recherche(Feuil1!A1;Feuil2!A1:A50;1;Faux) Si la donnée en Feuil1!A1 n'est pas présente dans la feuil2, tu obtiens NA
Tu fais un filtre automatique pour afficher seulement les NA et tu supprimes les lignes visibles seulement
MichD -------------------------------------------- "Alfred WALLACE" a écrit dans le message de groupe de discussion :
Bonjour,
j'aimerai faite la chose suivante :
en feuille 1, j'ai une liste "A" d'objets. en feuille 2, j'ai une liste "B" d'objets.
J'aimerai, en feuille 3 (ou ailleurs) une liste "C" qui serait la résultante de A moins B.
En d'autre terme, j'aimerai retrouver la liste "A" SANS les objets de la liste "B".
est ce qu'un filtre elaboré peut le faire ? ou une formule ? ou une macro ?