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 :

Recherchev() avec index() et equiv() [XL-2007]


Sujet :

Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Points : 106
    Points
    106
    Par défaut Recherchev() avec index() et equiv()
    Bonsoir,

    Comment combiner les fonctions RECHERCHEV;INDEX;EQUIV

    pour rechercher un client dans une matrice en tenant compte
    de son dernier achat et ce qu'il a acheté ?

    Exemple :

    dans la matrice
    Le Client 12
    Dernier achat le 03/01/2011
    quoi ? un vêtement.

    Je tape le N° du client en G10
    En H10 j'ai la date du dernier achat
    Excel doit me trouver "Vêtement" en J10 ou est la formule combinée avec RECHERCHEV;INDEX; et EQUIV

    Merci.

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    C'est une matricielle (ou SOMMEPROD) qui te sortira d'affaires.


    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Points : 106
    Points
    106
    Par défaut
    Merci Pierre, je ferais des essais demain et je te dirais si ça va.

    D'accord ?

    Bonne soirée

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Points : 106
    Points
    106
    Par défaut
    Bonjour Pierre,

    ça ne fonctionne pas, la colonne "achat" n'est pas prise en compte pour renvoyer le résultat du dernier achat du client N° 12 par exemple.

    Encore merci.

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2011
    Messages : 106
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Apparemment, je n'ai pas compris la même chose que Pierre Fauconnier ... Au départ de son exemple, une proposition différente:
    Images attachées Images attachées  
    .
    U. Milité

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    U. Milité,

    Je pense que le résultat est identique (à données égales).


    Le but étant de chercher la date du dernier achat d'un client X, puis de chercher ce qu'il a acheté...

    Tu y réponds en deux formules différentes et moi en une, mais il me semble que le résultat devrait être identique, à données identiques... Et ta façon de faire est plus simple...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2011
    Messages : 106
    Points : 153
    Points
    153
    Par défaut
    Bonjour Pierre Fauconnier,

    En fait je me suis d'abord centré sur le résultat affiché dans ton message et, selon ce que j'avais compris, le résultat escompté ne pouvait être celui-là: le client 12 n'ayant pas acheté de gants le 24/01/11.
    En voyant ton second message, je me suis dit que nous avions compris la même chose et que, peut-être, au moment de ta capture d'écran, tu n'avais pas encore recopié ta formule en F3 ... ce qui aurait expliqué la différence de résultats.
    Depuis, j'ai beau les retourner dans tous les sens, je n'arrive pas à obtenir des résultats cohérents avec nos formules (en tout cas pas dans tous les cas!)
    .
    U. Milité

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Bien vu!

    Index pointait une ligne trop bas... Il faut en effet diminuer le résultat de SOMMEPROD de 1.




    Par contre, je pense que ta formule pour récupérer le vêtement pose problème dans la mesure où min(...) renverra 0 dès que la condition du SI n'est pas respectée... C'est pourquoi j'ai remplacé ta formule et j'ai utilisé INDEX et EQUIV, en basant la recherche de EQUIV sur une concaténation matricielle.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2011
    Messages : 106
    Points : 153
    Points
    153
    Par défaut
    Bonsoir,

    C'est pourquoi j'ai remplacé ta formule et j'ai utilisé INDEX et EQUIV, en basant la recherche de EQUIV sur une concaténation matricielle
    D'accord! (de toute façon, je n'avais pas eu le temps de vraiment m'y attacher )

    P.S.: oserais-je avouer que la tienne, modifiée, me semble encore poser problème avec le client 34?
    .
    U. Milité

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par U. Milité Voir le message
    ...

    P.S.: oserais-je avouer que la tienne, modifiée, me semble encore poser problème avec le client 34?
    Oui et non

    Oui pour la date via SOMMEPROD (je vais rechercher l'erreur)

    Non pour les vêtements. En fait, les deux réponses me semblent "justes" car le client 34 a acheté deux vêtements ce jour-là (lignes 3 et 6)...

    Il se fait qu'une formule renvoie le premier achat renseigné pour ce jour et que l'autre renvoie le dernier vêtement acheté ce jour...

    On va y arriver ?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2011
    Messages : 106
    Points : 153
    Points
    153
    Par défaut
    On va y arriver ?
    Ben ... Euh ...
    Cette partie de ta formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LIGNE($A$2:$A$10)*((($A$2:$A$10=$F$1)*$B$2:$B$10)=MAX(($A$2:$A$10=$F$1)*$B$2:$B$10))
    Renvoie bien la matrice 3 et 6 sont bien les n° de ligne du client 34, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SOMMEPROD(LIGNE($A$2:$A$10)*((($A$2:$A$10=$F$1)*$B$2:$B$10)=MAX(($A$2:$A$10=$F$1)*$B$2:$B$10)))
    donne 9! (même en soustrayant 1 au résultat ... on n'obtient jamais que 8 ... qui n'est plus du tout un n° de ligne correspondant audit client
    .
    U. Milité

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    En fait, c'est tout à fait logique que la formule avec SOMMEPROD ne fonctionne pas lorsqu'il y a plusieurs réponses possibles...

    Dans le cas illustré, les lignes 3 et 6 renvoient le bon résultat. Or (3+6)-1 = 8 ...

    Donc, ma technique ne peut renvoyer un résultat correct que si une seule ligne correspond aux conditions énoncées.

    Par contre, en cas d'ex equo, la deuxième formule (Index(...;Equiv(...)) avec Equiv sur deux colonnes renverra toujours la première ligne trouvée, et on loupera donc une info...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2011
    Messages : 106
    Points : 153
    Points
    153
    Par défaut
    Bonjour,


    Citation Envoyé par Pierre Fauconnier Voir le message
    Par contre, en cas d'ex equo, la deuxième formule (Index(...;Equiv(...)) avec Equiv sur deux colonnes renverra toujours la première ligne trouvée, et on loupera donc une info...
    Il ne reste qu'à espérer que cette demande ne faisait pas partie du "cahier des charges"

    Merci pour cet échange et bon dimanche!
    .
    U. Milité

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Dans ce cas, on poussera l'utilisation de la matricielle jusqu'au bout, avec l'utilisation de GRANDE.VALEUR.

    Dans l'illustration ci-dessous, je démarre la liste récupérée en ligne 13. Je peux donc utiliser (13-12)=1 pour récupérer la première grande.valeur, puis en tirant la formule vers le bas, (14-12)=2 pour récupérer la deuxième grande.valeur, et ainsi de suite jusqu'à récupérer un #VALEUR!




    Mais dans ce cas, je trouve plus pertinent de récupérer les données par filtre avancé...

    D'une façon générale, il serait intéressant pour la lisibilité de la formule, d'utiliser les tableaux 2007/2010 qui permettent d'obtenir des plages dynamiques dont les noms (nom du tableau puis nom de la colonne) sont plus significatifs que les adresses de plage.

    Bon dimanche également...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Points : 106
    Points
    106
    Par défaut
    Merci beaucoup à vous deux, ne vous inquiétez pas, il me faut uniquement le dernier achat, le dernier des derniers, je n'ai pas encore testé mais je pense que cela sera le bon résultat, si vous voulez refaire des tests je vous en remercie par avance.

    Par contre j'ai rajouté une colonne,

    En A = code client
    En B = type "Achat" "Vente" "location" "autre"
    En C = la date du type
    En D = les vêtements

    Donc pour le client 12 dont le dernier "Achat" (uniquement achat)
    du 02/02/2011
    EXCEL doit me renvoyer par exemple "pantalon" si c'est un pantalon acheté le 02/02/2011.

    J'espère mettre bien expliqué.

    Encore merci pour votre aide.

    Bon Dimanche

  16. #16
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Alors, tu pourras "simplement" utiliser MAX qui renverra la dernière valeur saisie répondant aux conditions (au cas où il y en aurait plusieurs)...

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #17
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2011
    Messages : 106
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Il suffit d'ajouter la condition dans les formules ...
    F8 sera ici la cellule dans laquelle j'ai indiqué "Achat"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(SI((A2:A10=F7)*(B2:B10=F8);C2:C10))
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(D2:D10;EQUIV(F7&F8&F9;A2:A10&B2:B10&C2:C10;0))
    Ne pas oublier de valider avec Ctrl+Maj+Enter
    .
    U. Milité

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Points : 106
    Points
    106
    Par défaut
    Merci,

    Tu peux me mettre une image comme exemple ou un petit fichier pour moi étudier les formules ?

    Merci.

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Attention que, si plusieurs lignes répondent aux conditions:
    • la formule de u.milité renvoie le premier vêtement acheté qui répond aux conditions
    • la mienne renvoie le dernier vêtement acheté qui répond aux conditions
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 300
    Points : 106
    Points
    106
    Par défaut
    Merci Pierre,

    Je qu'elle formule ?

    Étant donné :

    En A = code client
    En B = type "Achat" "Vente" "location" "autre"
    En C = la date du type
    En D = les vêtements

    Donc pour le client 12 dont le dernier "Achat" (uniquement achat)
    du 02/02/2011
    EXCEL doit me renvoyer par exemple "pantalon" si c'est un pantalon acheté le 02/02/2011.



    Merci.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Somme avec index et equiv
    Par TORTUVIRA dans le forum Excel
    Réponses: 2
    Dernier message: 12/07/2014, 03h43
  2. [XL-2003] Index et Equiv avec données identiques
    Par chrystobale dans le forum Excel
    Réponses: 10
    Dernier message: 21/10/2011, 16h13
  3. [XL-2003] Index et Equiv avec données identiques
    Par chrystobale dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/09/2011, 18h22
  4. [DeskI XiR2] Equivalent rechercheV ou index/equiv sous BO
    Par courti01 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/01/2011, 16h23
  5. [XL-2003] RechercheV RechercheH Index/Equiv
    Par kev24gones dans le forum Excel
    Réponses: 5
    Dernier message: 23/02/2010, 09h57

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