IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Extraire une ligne selon contenu d'une colonne [XL-MAC 2008]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 2
    Points
    2
    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.

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    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.

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    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.

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    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.

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(D3<>"France";LIGNE(B3)-NB.SI($D$2:D3;"<>France");"")


    en feuille2 :
    formule en A2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =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 : Sélectionner tout - Visualiser dans une fenêtre à part
    =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 : Sélectionner tout - Visualiser dans une fenêtre à part
    =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

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    @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 : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(D3<>"France";LIGNE(B3)-NB.SI($D$2:D3;"<>France");"")
    […]

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    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

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci encore pour les suggestions. C'est exactement ce qu'il me fallait.

  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour le forum, jmignot
    Penses à mettre le tag et bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2002] Supprimer une ligne selon le contenu d'une cellule
    Par Alexis078 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/07/2014, 18h11
  2. copier lignes selon valeur d'une colonne
    Par steeeve34 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 13/09/2012, 17h38
  3. [AC-2003] Remplir une colonne selon contenu d'une autre
    Par alex3084 dans le forum Access
    Réponses: 2
    Dernier message: 12/04/2012, 16h54
  4. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  5. Masquer une ligne selon resultat dans une colonne
    Par amne26 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2008, 23h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo