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 :

[Tutoriel] La fonction RECHERCHEV()


Sujet :

Excel

  1. #1
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 117
    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 117
    Points : 55 944
    Points
    55 944
    Billets dans le blog
    131
    Par défaut [Tutoriel] La fonction RECHERCHEV()
    Bonjour

    Voici le lien vers mon nouveau tutoriel, sous forme de fiche de fonction:

    La fonction RECHERCHEV()

    Critiques, commentaires, proposition d'amélioration ou de compléments: Tout est bienvenu dans l'esprit de Developpez.com
    "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...
    ---------------

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 334
    Points : 253
    Points
    253
    Par défaut
    Bonjour,
    Un grand merci pour ce tutoriel très bien conçu, tout commes les autres d'ailleurs.
    Une petite question toute bête :
    Ou trouver s'il vous plaît, la liste de tous les tutoriels ?
    Ce serait, je pense bien commode et utile pour les néophytes dont je suis.
    Très cordialement à vous.
    Je préfère une vérité nuisible à une erreur utile : la vérité guérit le mal qu'elle a pu causer.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Vous trouvez cette liste en haut de la page en cliquant sur le bouton "TUTORIELS EXCEL", ce qui vous amènera sur cette page : http://excel.developpez.com/cours/

    @ Pierre : comme d'habitude un excellent tuto complet sur l'utilisation de cette fonction

    Philippe

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 334
    Points : 253
    Points
    253
    Par défaut
    Je vous remercie tous deux et vous souhaite une excellente journée.
    Je préfère une vérité nuisible à une erreur utile : la vérité guérit le mal qu'elle a pu causer.

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 693
    Points
    6 693
    Par défaut
    Bonjour,

    Un beau focus sur une fonction qui suscite pas mal de questions sur le forum

    ça se lit très facilement et les screenshots sont très parlants.

    Donc bravo, on attend le N° 2

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour a tous.
    voilà une fonction que j'utilise très souvent et qui est décrite complètement et avec brio !

    le seul commentaire que je peux faire est d'attirer l'attention du lecteur sur la gourmandise en temps calcul de cette formule.
    J'ai vu une collègue utiliser =recherchev(a1;"2009!$a:$d";2;faux) réduisant la matrice de recherche à la simple référence des colonnes. A éviter à mon avis.

    Il m'arrive aussi de devoir comparer et regrouper deux tables d'articles (environ 25000 enregistrements comme dans l'exemple plus bas) sur 5 ou 6 colonnes avec cette formule. J'ai largement le temps d'aller prendre un café
    je préfère alors utiliser une combinaison d'equiv() et d'indirect() qui me semble un poil plus rapide.

    exemple:
    dans le tableau 1, j'ai la liste des articles vendu en 2009 avec leur prix moyen, la quantité vendue et achetée ainsi que le bénéfice moyen réaliser (et encore une au deux colonne comme le fournisseur principal et le statut de l'article).
    dans le tableau 2, j'ai la liste des articles de 2010 avec les même types de données et je veux y ajouter les données de 2009. Si la liste des articles était identique d'une année à l'autre, il n'y aurait pas de problème mais ce n'est évidement pas le cas.

    1ere solution; avec recherchev() , j'ajoute 6 colonnes à ma seconde table et fais une recherchev() dans la table 2009
    2eme solution: j'ajoute 7 colonnes à ma seconde table, la première contient des equiv() de l'article 2010 recherché dans la liste des articles 2009 (ce qui me donne peu ou prou, le numéro de ligne de l'article) et les 6 autres colonnes contiennent des indirect("2009!"&ligne&colonne)

    encore bravo pour ce travail !

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 117
    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 117
    Points : 55 944
    Points
    55 944
    Billets dans le blog
    131
    Par défaut
    Salut r-kelleg,

    Merci de ton appréciation.

    Concernant la rapidité du calcul, il faut comparer ce qui comparable.

    A mon avis, les algorithmes de RECHERCHEV() et de EQUIV() sont probablement très proches, voire semblables. Il ne devrait donc pas y avoir de gain significatif entre les deux fonctions. J'ai d'ailleurs testé les deux fonctions sur une colonne de 1048576 cellules en XL2007 et les temps de calcul sont similaires.

    Le gain de temps que tu constates vient du fait que, avec RECHERCHEV(), tu utilises la fonction sur 25000 lignes * 6 colonnes, soit 150000 recherches...

    Avec EQUIV(), qui renvoie la position d'une donnée, puis INDIRECT(), tu utilises 25000 recherches dont le résultat est stocké dans une colonne intermédiaire, puis des simples "pointeurs" dans un tableau bidimensionnel. C'est cette utilisation d'un tableau bidimensionnel avec INDIRECT() qui te fait gagner du temps. Sans colonne intermédiaire et en utilisant EQUIV() et INDIRECT() au sein d'une même formule sur 25000 lignes * 6 colonnes, tu pourras aussi te prendre un café .

    Ceci dit, ta technique est intéressante de "payer" ce gain de temps par l'ajout d'une colonne de travail
    "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...
    ---------------

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    absolument ! c'était tout le but de mon message : quand on a plusieurs colonnes a récupérer, la méthode Equiv()+ indirect() est plus rapide



    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut r-kelleg,

    Merci de ton appréciation.

    Concernant la rapidité du calcul, il faut comparer ce qui comparable.

    A mon avis, les algorithmes de RECHERCHEV() et de EQUIV() sont probablement très proches, voire semblables. Il ne devrait donc pas y avoir de gain significatif entre les deux fonctions. J'ai d'ailleurs testé les deux fonctions sur une colonne de 1048576 cellules en XL2007 et les temps de calcul sont similaires.

    Le gain de temps que tu constates vient du fait que, avec RECHERCHEV(), tu utilises la fonction sur 25000 lignes * 6 colonnes, soit 150000 recherches...

    Avec EQUIV(), qui renvoie la position d'une donnée, puis INDIRECT(), tu utilises 25000 recherches dont le résultat est stocké dans une colonne intermédiaire, puis des simples "pointeurs" dans un tableau bidimensionnel. C'est cette utilisation d'un tableau bidimensionnel avec INDIRECT() qui te fait gagner du temps. Sans colonne intermédiaire et en utilisant EQUIV() et INDIRECT() au sein d'une même formule sur 25000 lignes * 6 colonnes, tu pourras aussi te prendre un café .

    Ceci dit, ta technique est intéressante de "payer" ce gain de temps par l'ajout d'une colonne de travail

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 117
    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 117
    Points : 55 944
    Points
    55 944
    Billets dans le blog
    131
    Par défaut
    Plus rapide, mais pas forcément plus pratique, puisque tu utilises une donnée pour indiquer la colonne de INDIRECT.

    Donc, tu peux utiliser INDIRECT(), pour autant que tes colonnes puissent être calculées, car si tu utilises une valeur absolue comme indice de colonne, tu devras créer autant de formules que de colonnes, à moins d'utiliser un EQUIV sur les intitulés de colonnes. Cela dit, cette méthode sera plus rapide que x recherchev(), je te le concède.

    Merci en tout cas de ton apport technique
    "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...
    ---------------

  10. #10
    Membre averti Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 499
    Points : 304
    Points
    304
    Par défaut
    Salut le forum
    Merci Pierre Fauconnier pour ce tuto tres interessant en esperant qu'il y a aura d'autre car les formules incomprehensible dans excel ne monque pas
    Cordialement

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 117
    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 117
    Points : 55 944
    Points
    55 944
    Billets dans le blog
    131
    Par défaut
    r-kelleg,

    Je complèterai prochainement le tutoriel en tenant compte de ton exemple qui accélère les temps de recherche.

    Merci pour ta contribution.
    "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...
    ---------------

  12. #12
    Membre habitué Avatar de doncamelo
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Décembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2007
    Messages : 129
    Points : 164
    Points
    164
    Par défaut
    Bravo pour ce tuto !

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Juin 2009
    Messages : 58
    Points : 56
    Points
    56
    Par défaut
    merci pour ce tutoriel.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 149
    Points : 183
    Points
    183
    Par défaut
    Merci beaucoup pour ce tutoriel très bien fait et en particulier pour l'astuce d'utiliser la fonction colonne() dans le N° index, ce qui fait gagner un précieux temps.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Excellent tuto!!
    bravo et merci!

  16. #16
    Membre régulier Avatar de roxise
    Inscrit en
    Septembre 2009
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 98
    Points : 101
    Points
    101
    Par défaut
    Bonjour,
    grand merci, c'est ce qui nous manquait !!

    Cordialement
    _________________________________________
    Science sans conscience n'est que ruine de l'Âme

  17. #17
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 117
    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 117
    Points : 55 944
    Points
    55 944
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par tranzebou Voir le message
    Merci beaucoup pour ce tutoriel très bien fait et en particulier pour l'astuce d'utiliser la fonction colonne() dans le N° index, ce qui fait gagner un précieux temps.
    Ca permet, au passage, de respecter une "sacro-sainte" règle d'Excel: Ne jamais mettre de constante dans une formule Excel.
    "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...
    ---------------

  18. #18
    Candidat au Club
    Homme Profil pro
    curieux
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : curieux

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Super tuto
    bonjour
    j'ai suivi avec intérêt ce tuto clair et précis;
    Notamment l'utilisation de colonne() qui semble bien pratique mais...que je n'arrive pas à faire fonctionner si ma cellule contenant la formule rechercheV se trouve sur une autre feuille ou classeur que mon tableau de données. Sur la même feuille en rajoutant une colonne la formule "décale en conséquence", mais si je met la formule sur une autre feuille (ou classeur) cela ne prend pas en compte le "décalage". je fait donc une erreur mais ou?
    (j'utilise Excel 2010)

    merci de votre réponse (si possible).

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 117
    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 117
    Points : 55 944
    Points
    55 944
    Billets dans le blog
    131
    Par défaut
    Salut ab340,

    Pour que le numéro de colonne, renvoyé par la fonction COLONNE(), varie lors de l'insertion ou la suppression d'une colonne dans la table de données, il faut que COLONNE() pointe vers la colonne de la feuille qui contient la plage de données.

    Donc, si tu as une plage de données dans une feuille Données (par exemple, Données!A1:D1000), et que, au départ d'une autre feuille, tu veux utiliser RechercheV pour extraire une donnée de la deuxième colonne de cette plage, tu devras utiliser quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV(ValeurCherchée;Données!A2:D1000;COLONNE(données!B1);FAUX)
    .

    Note que l'utilisation de tables de données facilite la démarche...
    "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
    Candidat au Club
    Homme Profil pro
    curieux
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : curieux

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Vraiment merci de cette réponse ultra rapide.
    Je croyais pourtant avoir "essayé" cette méthode mais j'ai du planter quelque part

    Bonne journée et encore bravo pour les tutos.

Discussions similaires

  1. PB fonction "rechercheV"
    Par oliver75 dans le forum Excel
    Réponses: 5
    Dernier message: 31/05/2007, 13h05
  2. [Formule]Erreur avec la fonction recherchev
    Par solorac dans le forum Excel
    Réponses: 4
    Dernier message: 19/04/2007, 18h09
  3. [Excel] Comment utiliser la fonction RECHERCHEV
    Par forsay1 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 03/02/2006, 12h43
  4. [VBA-E]Etablir une macro d'une fonction rechercheV
    Par dani317 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2005, 12h06
  5. Equivalent Fonction RechercheV
    Par RdLg2@ dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2005, 01h31

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