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 :

Lookup pour recuperer deux colonnes


Sujet :

Excel

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Lookup pour recuperer deux colonnes
    Bonjour,

    J'essaye de faire un lookup en excell pour recuperer deux colonne mais je ne sais pas si c'est possible en tout cas ca ne marche pas

    But dans une sheet j'ai des codes postaux et des valeurs associées
    Dans une autre sheet j'ai des codes postaux avec population et code département

    J'aimerais recuperer la population et le code departement de la deuxieme sheet sur la premiere

    Le code ci apres me permet de recuperer la colone population
    Mais est-il possible de recuperer deux colonnes contigues en une seule instruction ?
    Ou dois-je faire deux lookup ?

    Merci pour vos conseils

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =LOOKUP(A2;be_pop_cp!C:C;be_pop_cp!A:A)

  2. #2
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonsoir,

    LookUp, s'agirai-t'il d'une version anglaise d'Excel ? étonnant avec des point virgules !

    bon en français je dirai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =RECHERCHEV(A2;Feuil2!$A:$C;3;0)



    Jacques.

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci

    Malheureusement, J'ai retraduis en utilisant VLOOKUP mais ca marche pas mieux

    =VLOOKUP(A2;be_pop_cp!$A:$C;3;0)

    J'avais aussi essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =LOOKUP(A2;be_pop_cp!C:C;be_pop_cp!A:B)
    J'ai un message #N/A dans les deux cas

    A mon avis il n'est pas possible de recuperer plus d'une valeur a la fois avec Lookup ou Vlookup
    J'ai donc fais deux lookup différents... c'est un peu idiot quand meme !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =LOOKUP(A2;be_pop_cp!C:C;be_pop_cp!A:A)
    =LOOKUP(A2;be_pop_cp!C:C;be_pop_cp!B:B)

  4. #4
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par olibara Voir le message
    ...

    A mon avis il n'est pas possible de recuperer plus d'une valeur a la fois avec Lookup ou Vlookup...
    Bonjour,

    tu n'as pas répondu, as tu une version anglaise d'Excel ?

    Pour RechercheV celle-ci ne renvoi bien qu'une seule valeur , je comprends pas comment tu veux renvoyer plusieurs valeurs dans la même cellule ?




    Jacques.

  5. #5
    Membre éprouvé
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Points : 1 079
    Points
    1 079
    Par défaut
    Bonjour,

    la fonction recherchev ne peut récupérer deux valeurs à la fois mais avec un concatener de deux recherchev ça le fait facilement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCATENER(recherchev(A1; Feuil1!A:G;3;0);recherchev(A1; Feuil1!A:C;5;0)

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    Oui j'ai une version anglaise d'excel

    Comme j'avais essayer de l'expliquer je ne cherche pas a concatener deux valeurs dans la meme cellule

    Mais profiter d'un lookup sur code postal pour recuperer deux colonnes adjacentes B et C Departement et population du tableau 1 et les remettre dans deux colonnes adjacente du tableau 2 D et E par exemple

    Pour le moment, je fais deux lookup

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 140
    Points : 186
    Points
    186
    Par défaut
    Bonjour,

    Dans la mesure où tu cherches à récupérer deux informations, il est normal qu'il faille deux formules.

    Cela dit, pour une réponse plus précise, il faudrait que tu nous envoies un extrait de ton fichier (sans données confidentielles) avec en manuel, ce que tu souhaites obtenir.

    A te (re)lire

    @+

  8. #8
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    Malheureusement c'est plus de chipo de déconfidentialiser les données que de reexpliquer simplement le besoin

    J'ai une feuille xls contenant une table de reference a trois colonnes

    A,B et C

    Une autre feuille contient deux colonnes A et B
    Les colones C a ZZ de cette feuille sont vides
    Je veux faire un lookup sur A entre les deux feuilles pour recuperer les valeurs B et C de la feuille un dans les colonnes C et D de la feuille 2

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 140
    Points : 186
    Points
    186
    Par défaut
    re,

    ça aurait été sympa quand même de joindre un fichier exemple (à défaut d'anonymiser le vrai).

    Pour ma part, sur la base de ce que je comprends de tes explications, je partirais sur un RECHERCHEV ou VLOOKUP :

    =VLOOKUP($A1,base_de_données,2)

    puis

    =VLOOKUP($A1,base_de_données,3)


    remplace les , par des ; si nécessaire

    Mais il est nécessaire et obligatoire de passer par deux formules.

    @+

  10. #10
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci

    S'il est effectivement obligatoire d'utiliser deux formulles, ce que je fais est tout a fait correct !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =LOOKUP(A2;be_pop_cp!C:C;be_pop_cp!A:A)
    =LOOKUP(A2;be_pop_cp!C:C;be_pop_cp!B:B)
    Decidement je pense que lookup et compagnie ca ne marche pas bien !
    En plus c'est dangereux car ca donne des résultats non conforme a la réalité !!

    Je viens de faire un nouvel essai, le but etant de marquer les lignes d'une sheet dont l'id est present dans une autre sheet

    Le resultat est tout a fait bidon !!

    Je joint un exemple de ce que j'essaye de faire

  11. #11
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour,

    J'ai continué mes essais et les résultats sont vraiment fantaisistes'


    Avec Lookup
    Tant qu'il ne trouve rien il donne #N/A

    Et puis dés qu'il a trouvé un match, il prends la valeur demandée qu'il applique a toute les ligne meme celles qui ne matchent pas


    J'ai aussi essayé VLOOKUP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VLOOKUP(A9;tbl!A:A;tbl!B:B;FALSE)

    Là on dirait que les codes varient bien selon qu'il trouve ou pas SAUF que quand c'est trouvé, plutot que de donner la valeur demandée je recois #REF!

    Je pense que je vais faire un module en VBA, j'aurai des resultats mieux maitrisés !

  12. #12
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonjour,

    Il faudrai que tu revoit la syntaxe de rechercheV ( et celle de recherche aussi ...), voir aide en ligne !

    Syntaxe

    RECHERCHEV(valeur_cherchée;table_matrice;no_index_col;valeur_proche)

    Le 3°Paramétre :
    no_index_col est le numéro de la colonne de l'argument table_matrice dont la valeur correspondante doit être renvoyée. Si l'argument no_index_col est égal à 1, la fonction renvoie la valeur dans la première colonne de l'argument table_matrice ; si l'argument no_index_col est égal à 2, la valeur est renvoyée dans la deuxième colonne de l'argument table_matrice, et ainsi de suite. Si l'argument no_index_col est inférieur à 1, la fonction RECHERCHEV renvoie la valeur d'erreur #VALEUR! et si l'argument no_index_col est supérieur au nombre de colonnes de l'argument table_matrice, la fonction RECHERCHEV renvoie la valeur d'erreur #REF!.
    pourquoi t'obstine tu à y placer une plage de cellule alors que ce n'est pas cela qu'on te propose dans nos exemples.


    Citation Envoyé par olibara
    Avec Lookup
    Tant qu'il ne trouve rien il donne #N/A

    Et puis dés qu'il a trouvé un match, il prends la valeur demandée qu'il applique a toute les ligne meme celles qui ne matchent pas
    toujour l'aide en ligne le 4° paramétre.
    Citation Envoyé par Aide en ligne
    valeur_proche représente une valeur logique indiquant si vous souhaitez que la fonction RECHERCHEV recherche une valeur exacte ou voisine de celle que vous avez spécifiée. Si cet argument est VRAI ou omis, une donnée proche est renvoyée. En d'autres termes, si aucune valeur exacte n'est trouvée, la valeur immédiatement inférieure à valeur_cherchée est renvoyée. Si valeur_proche est FAUX, la fonction RECHERCHEV renvoie exactement la valeur recherchée. Si aucune valeur ne correspond, la valeur d'erreur #N/A est renvoyée.

    tu peu utiliser RechercheV, qui renvoi #N/A si pas trouvé... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(A2;tbl!A:B;2;0)
    à oui j'ai oublié le 2° paramétre :
    Citation Envoyé par Aide en ligne
    table_matrice est la table de données dans laquelle est exécutée la recherche de la valeur. Utilisez une référence à une plage ou un nom de plage, par exemple Base de données ou Liste.
    pour afficher la valeur contenu dans la 2° colonne de ta zone de recherche ( tes x..) il faut bien évidemment que la Zone de recherche comporte 2 colonnes sinon cela donne !REF ...

    tu aurai pu te passer de ta colone de "x" , est utiliser une combinaison de ESTNA et SI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI(ESTNA(RECHERCHEV(A2;tbl!A:A;1;0));"O";"X")
    PS : Je crois pas avoir eu de réponse à la question "Version anglaise d'excel".. mais au cas où en anglais cela devrai donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(ISNA(VLOOKUP(A2,tbl!A:A,1,0)),"O","X")
    comme aurai dit un autre Jacques "Bon Dimanche"

    JacqueS.

  13. #13
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci beaucoup

    Oui mon Excell est anglais

    Non je ne m'obstinne pas a placer une plage de cellule, mon nouvel essai dans l'exemple joint essaye de reprendre la valeur de la collonne TP de la sheet tbl en fonction de AddrID


    J'ai utilisé le Wizard pour definir la syntaxe donc je n'ai rien inventé

    Ceci

    =VLOOKUP(A10;tbl!A:A;B:B)

    Me rends
    #N/A
    ou #REF!

    Ceci

    =VLOOKUP(A10;tbl!A:A;0:1)

    Donne une erreur

    Merci pour ton aide, Bravo si tu sais faire touner la fonction FR dans mon exemple

    Je vais relire a fond ton explication mais si j'avais programmé ca en VBA ou meme en C dans un fichier texte exporté j'aurais fini depuis longtemps !

    Merci Excel !!

  14. #14
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par olibara Voir le message
    ....
    =VLOOKUP(A10;tbl!A:A;B:B)

    Me rends
    #N/A
    ou #REF!





    Ceci


    Non je ne m'obstinne pas a placer une plage de cellule, mon nouvel essai dans l'exemple joint essaye de reprendre la valeur de la collonne TP de la sheet tbl en fonction de AddrID


    J'ai utilisé le Wizard pour definir la syntaxe donc je n'ai rien inventé
    ton Wizard qu'est ce qu'il te demande en 3° paramétre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VLOOKUP(A2;tbl!A:B;2;0)
    à mettre cellule D2 de ta feuille data



    Citation Envoyé par olibara Voir le message
    Ceci

    =VLOOKUP(A10;tbl!A:A;0:1)

    Donne une erreur
    c'est pas 0:1), c'est ;1;0) ! 1 = Colonne 1, 1° colonne de la zone de recherche, 0 = "égalité"


    JacqueS.

  15. #15
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Et voilà
    J'ai ressorti mes vieilles connaissance Basic du grenier
    Ca m'a pris 5 minutes a ecrire, 30 secondes a tourner
    Et c'est bon !
    Certainement pas tres propre : je pourrais trouver dynamiquement les count de rows utile (quoique .... : je me méfie d'excell !)

    Mais j'ai mon resultat bien plus vite qu'avec ce brol de lookup !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub vLookup()
     
      For i = 1 To 1107
        a = Sheets("data").Cells(i, 1)
        For j = 1 To 500
          b = Sheets("tbl").Cells(j, 1)
          If a = b Then
            Sheets("data").Cells(i, 4) = "X"
            GoTo nexti
          End If
        Next j
    nexti:
      Next i
    End Sub

  16. #16
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    ton Wizard qu'est ce qu'il te demande en 3° paramétre ?
    à mettre cellule D2 de ta feuille data
    La je comprends plus rien !! la cellule D2 de ma feuille data c'est celle qui doit recevoir la valeur (le X) de ma feuille TBL
    Pourquoi je dois la mettre en parametre c'est celle ou je définis le=Vlookup

    Ce truc est completement tordu et dangereux, je prefere ma macro, elle ne rends pas n'importe quoi

    En resumé

    Je prends un AddrID de la feuille Data (1ere colonne : colonne A)
    Je cherche cet AddrID dans la feuille TBL (1ere colonne : colonne A)

    Si je trouve cet ADDRID je flague la ligne dans la colonne D avec un X
    J'avais effectivemennt créé une colonne de X dans tbl pour la cause

    Mais la cause est perdue avec (Bazar)Lookup

  17. #17
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    ...

    As tu essayé de mettre la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VLOOKUP(A2;tbl!A:B;2;0)
    en D2 de ta feuille DATA ?

  18. #18
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut



    Ca ca marche
    Sauf que les #N/A!

    C'est pas tres heureux
    Est si je dois encore associer ca avec un IF pour eviter le NA je pense que mon petit module vba a l'avantage d'etre plus clair et plus souple

    Mais bon au moins je sais qu'il y a moyen d'utiliser ces lookup tellements hermetiques : ca marche mais je n'ai toujours pas compris la syntaxe tordue

    =VLOOKUP(A2;tbl!A:B;2;0)

    Pourquoi A:B : je cherche dans A et je recupere B de tbl pour mettre dans D de DATA
    Pourquoi tout a coup l'usage d'ordinaux 2;0 et ca represente quoi 2;0


    Qu'est ce que ca donnerait si je cherchais dans B pour recuperer E de tbl pour mettre dans G de DATA ???

    En plus les nuances entre LOOKUP, VLOOKUP et HLOOKUP, que je lise les explications en Francais ou Anglais me semblent tout aussi obcures

    Mais j'admire ta connaisance du sujet ! Je n'ai trouvé personne manipulant Excell qui a pu m'aider

  19. #19
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Citation Envoyé par olibara Voir le message
    ..Pourquoi A:B : je cherche dans A et je recupere B de tbl pour mettre dans D de DATA
    Pourquoi tout a coup l'usage d'ordinaux 2;0 et ca represente quoi 2;0
    ...
    Je t'ai mis la définition des paramétres de la fonction VLOOKUP plus haut..


    Le 2 : Signifie que tu veux récupérer l'élément de la 2° colonne dans ta matrice ..

    VLOOKUP ne cherche que sur la 1° Colonne de la matrice qu'elle prends en 2° paramétre et renvoi la valeur contenue dans la colonne de cette matrice dont le numéro et définit par le 3° paramétre de ta fonction ...

    donc ici le 2 veux dire que tu veux trouver le résultat dans la 2° colonne de ta matrice, qui bien évidamment doit comporter au moins 2 colonnes (sinon renvoi !REF) ...


    pour le dernier paramétre (le 0) , si tu met 1 VLOOKUP parcours la colonne 1 de haut (A1) en bas (A65535) et arrête la recherche dés que la valeur contenue dans la premiére colonne est supérieure ou égale à la valeur cherchée et la renvoi.
    si tu met 0 il recherche la premiére valeur "exactement égale" et renvoi N/A s'il ne trouve pas


    L'avantage d'utiliser des formules, c'est qu'ainsi tu évite tous les problémes de sécurités et d'autorisation d'utilisation de tes macros.


    JacqueS.

  20. #20
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 111
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    J'ai voulu essayer votre code pour voir ce que cela faisait. J'ai mis plusieurs "F" dans la feuille "tbl" à la place de quelques "X" et je m'attendais à voir une modification dans la première feuille après avoir exécuté la macro. Mais rien ne s'est passé. Pourtant j'aimerais bien comprendre comment ce code fonctionne.

    Merci de votre aide

Discussions similaires

  1. [XL-2007] Quel controle utiliser sur feuille pour visualiser deux colonnes
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2011, 23h59
  2. Requête pour comparer cote à cote deux colonnes
    Par Andry dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/11/2008, 13h52
  3. Requête pour fusionner deux colonnes
    Par david71 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/12/2007, 21h44
  4. [EXCEL] Recuperer un match entre deux colonnes
    Par biggir dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2006, 21h43
  5. Swap entre deux colonnes pour 2 enregistrements
    Par Erakis dans le forum SQL Procédural
    Réponses: 12
    Dernier message: 15/12/2005, 20h09

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