Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/04/2011, 18h25   #1
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 1
Points : 1
Par défaut Extraire une ligne selon contenu d'une colonne

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.
jmignot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 20h36   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
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
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 11h45   #3
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 1
Points : 1
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:
Envoyé par carden752 Voir le message
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.
jmignot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 14h44   #4
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
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
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 14h52   #5
Expert Confirmé Sénior
 
Avatar de casefayere
 
Homme Dominique LEMAIRE
Salarié Champagne
Inscription : décembre 2006
Messages : 2 636
Détails du profil
Informations personnelles :
Nom : Homme Dominique LEMAIRE
Âge : 57
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : Salarié Champagne
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : décembre 2006
Messages : 2 636
Points : 5 075
Points : 5 075
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:
N'oubliez pas les points suivants !

Les membres qui vous répondent sont des participants bénévoles !
Quand votre problème est résolu, pensez à cliquer sur le bouton [Résolu] en bas de la discussion !
Pensez à remercier les messages qui vous ont aidé en votant positivement pour eux !
casefayere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 17h56   #6
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 1
Points : 1
@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:
Envoyé par casefayere Voir le message
Bonjour,
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");"")
[…]
jmignot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 18h12   #7
Expert Confirmé Sénior
 
Avatar de casefayere
 
Homme Dominique LEMAIRE
Salarié Champagne
Inscription : décembre 2006
Messages : 2 636
Détails du profil
Informations personnelles :
Nom : Homme Dominique LEMAIRE
Âge : 57
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : Salarié Champagne
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : décembre 2006
Messages : 2 636
Points : 5 075
Points : 5 075
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:
N'oubliez pas les points suivants !

Les membres qui vous répondent sont des participants bénévoles !
Quand votre problème est résolu, pensez à cliquer sur le bouton [Résolu] en bas de la discussion !
Pensez à remercier les messages qui vous ont aidé en votant positivement pour eux !
casefayere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 09h06   #8
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 1
Points : 1
Merci encore pour les suggestions. C'est exactement ce qu'il me fallait.
jmignot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 09h17   #9
Expert Confirmé Sénior
 
Avatar de casefayere
 
Homme Dominique LEMAIRE
Salarié Champagne
Inscription : décembre 2006
Messages : 2 636
Détails du profil
Informations personnelles :
Nom : Homme Dominique LEMAIRE
Âge : 57
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : Salarié Champagne
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : décembre 2006
Messages : 2 636
Points : 5 075
Points : 5 075
Bonjour le forum, jmignot
Penses à mettre le tag et bonne continuation
__________________
Dom

De Anomaly
Citation:
N'oubliez pas les points suivants !

Les membres qui vous répondent sont des participants bénévoles !
Quand votre problème est résolu, pensez à cliquer sur le bouton [Résolu] en bas de la discussion !
Pensez à remercier les messages qui vous ont aidé en votant positivement pour eux !
casefayere est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h41.


 
 
 
 
Partenaires

Hébergement Web