|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 4 ![]() |
Bonjour,
Je cherche à copier ligne par ligne dans une liste Excel se trouvant sur une feuille les données contenues dans une autre feuille du même classeur, mais en omettant les lignes contenant une certaine valeur dans l'une des colonnes. Par exemple : Feuille 1 NOM | VILLE | PAYS Schmidt | Berlin | Allemagne Dupont | Paris | France Brown | Londres| UK Feuille 2 (liste) (exclure clients "France") NOM | VILLE | PAYS Schmidt | Berlin | Allemagne Brown | Londres| UK C'est cette dernière contrainte (sauter des lignes selon un critère) qui me pose problème : actuellement les lignes des deux feuilles se correspondent une à une et je peux simplement réarranger les cellules ou modifier leur contenu comme je l'entends à l'aide de formules contenant la fonction Ligne(). Je ne souhaite pas utiliser des macros VBA car d'une part je ne maîtrise pas ce langage, et d'autre part VBA n'est plus intégré aux dernières versions d'Excel pour Mac. Je ne voudrais pas non plus utiliser la fonction "filtre avancé" car ça suppose une intervention de l'utilisateur chaque fois qu'il a besoin d'alimenter la seconde feuille. Est-il possible de résoudre ce problème uniquement à l'aide de fonctions Excel ? Merci de votre aide. |
|
|
00
|
|
|
#2 |
![]() ![]() |
Bonjour,
Le plus simple ne serait-ce pas de rajouter une colonne ligne a prendre (oui/non) Tu détermines la fonction qui va bien sur la feuille une pour initialiser les valeurs de cette colonne. Puis une recopie classique avec un recherchev par exemple sur cette colonne.
__________________
Cordialement, Christophe Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche |
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 4 ![]() |
Merci beaucoup pour cette réponse.
Rajouter une colonne dans la première feuille ne me pose pas de problème. Par contre je ne vois pas comment recherchev permet de recopier toutes les lignes remplissant la condition. D'après ce que j'en comprends, cette fonction s'attend à trouver une ligne unique contenant la valeur clé fournie (ici, par exemple : "oui"). Dans le cas contraire, j'imagine qu'il s'arrête à la première rencontrée. Mais comment peut-on ensuite itérer le processus pour extraire toutes les lignes valides ? En réduisant à chaque fois la plage de recherche aux lignes non encore examinées— ce qui supposerait de garder quelque part le dernier numéro de ligne validé ? Citation:
|
|
|
|
00
|
|
|
#4 |
![]() ![]() |
Bonjour,
Oui tu as raison, il y a plus simple, c'est de simplement tester la valeur de cette colonne et si c'est "oui" alors on recopie la ligne, sinon on ne la recopie pas. Par contre tu risques d'avoir des lignes vides au milieu. Pour ne pas avoir de lignes vides, il te faut récupérer le numéro de la ligne ou tu en seras dans la recopie. Pour cela, j'avais pensé à un recherchev sur une clé unique (concaténation de toutes les valeurs ou index). Puis parcours jusqu'à trouver la prochaine ligne à trouver. C'est cette dernière étape qui peut se faire à partir de la position de la précédente ligne avec un recherchev sur une matrice à position dynamique. Je ne l'ai jamais testé mais je pense que ca doit pouvoir le faire, une chose comme cela. Sans macro, c'est pas facile de recréer le principe de filtrage avancée.
__________________
Cordialement, Christophe Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche |
|
|
00
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() Dominique LEMAIRESalarié Champagne Inscription : décembre 2006 Messages : 2 636 ![]() |
Bonjour,
une idée comme une autre : en feuille1, une nouvelle colonne mais en A, avec une formule en A à partir de a3, formule à tirer vers le bas Code :
=SI(D3<>"France";LIGNE(B3)-NB.SI($D$2:D3;"<>France");"") en feuille2 : formule en A2 : Code :
=SI(ESTNA(RECHERCHEV(LIGNE(B2);Feuil1!$A$2:$D$9;2;FAUX));"";RECHERCHEV(LIGNE(B2);Feuil1!$A$2:$D$9;2;FAUX)) formule en B2 : Code :
=SI(ESTNA(RECHERCHEV(LIGNE(B2);Feuil1!$A$2:$D$9;2;FAUX));"";RECHERCHEV(LIGNE(B2);Feuil1!$A$2:$D$9;3;FAUX)) formule en C2 : Code :
=SI(ESTNA(RECHERCHEV(LIGNE(B2);Feuil1!$A$2:$D$9;2;FAUX));"";RECHERCHEV(LIGNE(B2);Feuil1!$A$2:$D$9;4;FAUX)) le tout à tirer vers le bas ce n'est pas beau mais après essai, ça fonctionne
__________________
Dom De Anomaly Citation:
|
|
|
|
00
|
|
|
#6 | |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 4 ![]() |
@casefayere : Merci beaucoup. Effectivement c'est la fonction NB.SI qui donne la clé du problème. Mon ignorance des ressources d'Excel est encore vaste
J'ai d'ailleurs l'impression qu'on devrait pouvoir se dispenser de la colonne A supplémentaire dans la feuille 1 en utilisant NB.SI judicieusement dans la formule de la feuille2. Je vais y réfléchir !… Par contre, je pense qu'il faut mettre "=France" dans la formule ci-dessous puisqu'on doit décaler le numéro de ligne du nombre de lignes OMISES, (c'est à dire celles dans lesquelles le contenu de la colonne D est ÉGAL à "France"). Citation:
|
|
|
|
00
|
|
|
#7 | |
|
Expert Confirmé Sénior
![]() Dominique LEMAIRESalarié Champagne Inscription : décembre 2006 Messages : 2 636 ![]() |
Tu as raison, j'avais corrigé, mais je ne sais pas ce que j'ai fait après donc 2eme condition "=France",, je me suis amusé également à mettre une liste de validation en A1, avec les pays et la référence devient A1
Bonne soirée
__________________
Dom De Anomaly Citation:
|
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 4 ![]() |
Merci encore pour les suggestions. C'est exactement ce qu'il me fallait.
|
|
|
00
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() Dominique LEMAIRESalarié Champagne Inscription : décembre 2006 Messages : 2 636 ![]() |
Bonjour le forum, jmignot
Penses à mettre le tag et bonne continuation
__________________
Dom De Anomaly Citation:
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com