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

Macros et VBA Excel Discussion :

recherche de deux critères dans une ligne [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut recherche de deux critères dans une ligne
    Bonjour,

    Je souhaite recuperer une valeur d'une colonne si je vérifie deux criteres dans deux autres colonnes de la même ligne.
    Je mets en pj un extrait pour être plus clair : en feuill1 le tableau que je souhaite à la fin et dans la feuille appelée FormesOuvertes le tableau initial.
    J'ai commencé à remplir à la main le tableau final pour donner une idée précise du résultat.

    J'ai travaillé avec des index, equiv et autres somme et si, mais je n y arrive pas. Pourtant je sens que je ne suis pas loin mais je me heurte à la recuperation de la valeur de la colonne qui m interesse.
    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Un exemple :
    Imaginons une base de données plage $A$2:$G$6 avec par exemple le champ Nom en colonne B, Prénom en colonne C et Adresse en colonne D
    En cellule B9 le nom que je cherche et en C9 le prénom
    Pour obtenir en D9 la valeur du champ Adresse qui se trouve sur la même ligne que les valeurs combinées de B9 & C9, voici la formule à placer en cellule D9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX($A$2:$G$6;SOMMEPROD(($B$2:$B$6=$B$9)*($C$2:$C$6=$C$9)*(LIGNE(A2:A6)-1));EQUIV("Adresse";$A$1:$G$1;0))
    "Adresse" est ici une constante mais en réalité je fais référence à la cellule D8 qui contient le mot Adresse
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX($A$2:$G$6;SOMMEPROD(($B$2:$B$6=$B$9)*($C$2:$C$6=$C$9)*(LIGNE(A2:A6)-1));4)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    merci pour la réponse.
    J'ai essayé d adapter la premiere formule a mon tableau sans succès. Cela me donne des résultats où il ne devrait pas y en avoir (0) et des sommes dont j ignore l origine.
    Précision : la valeur que je cherche à extraire est un nombre.

    ps : je m etonne que l'on puisse utiliser sommeprod avec autre chose que des nombres...comme quoi je pars de loin

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    ps : je m etonne que l'on puisse utiliser sommeprod avec autre chose que des nombres...comme quoi je pars de loin
    Décomposons la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX($A$2:$G$6;SOMMEPROD(($B$2:$B$6=$B$9)*($C$2:$C$6=$C$9)*(LIGNE(A2:A6)-1));EQUIV("Adresse";$A$1:$G$1;0))
    A la base, on souhaite obtenir l'adresse d'une personne qui se trouve dans une base de données situées en cellules A2:G6 les étiquettes de colonnes se trouvant en ligne 1 (A1:G1)
    Imaginons que la personne cherchée se trouve en ligne 3 (A4:G4).
    L'adresse se trouvant en colonne D (4ème)
    La formule utilisée serait
    Or à la base, nous ne savons pas à quelle ligne elle se trouve.
    Pour connaître le n° de ligne (3), nous allons utiliser la formule SOMMEPROD dont on multipliera le résultat des conditions par le n° de la ligne.
    En supposant que B9 et C9 contiennent respectivement le Nom et le prénom de la personne qui est en ligne 3
    La formule ci-dessous renvoie 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(($B$2:$B$6=$B$9)*($C$2:$C$6=$C$9)*(LIGNE(A2:A6)-1))
    Si on sélectionne cette formule et que l'on clique sur F9, on pourra visualiser le résultat et de même si l'on sélectionne chaque élément de la formule.
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(({FAUX;FAUX;VRAI;FAUX;FAUX})*({FAUX;FAUX;VRAI;FAUX;FAUX})*({2;3;4;;5;6})-1)
    La partie soulignée repésente le résultat de la formule LIGNE(A2:A6)
    Nous pouvons voir que le 3ème éléments de chaque condition est à VRAI et le 3 éléments de la formule Ligne() est 4.
    VRAI * VRAI * 4 équivaut à 1 * 1 * 4 donc le résultat est 4.
    Comme la table des données commence à la ligne 2 il y a lieur de soustraire le résultat de la formule SOMMEPROD par 1. Ce qui nous donne finalement 3 qui est le résultat attendu.
    J'espère que cette explication t'aidera à résoudre ton problème.

    Bonjour,
    J'ai finalement ouvert ton classeur, ce que tu as oublié de préciser c'est que les données à chercher étaient à la première colonne ($A$2:$A$10) du tableau et les autres données à la première ligne du tableau ($B$2:$I$2)
    Donc la formule à placer en B2 est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(($A2=FormesOuvertes!$B$2:$B$18)*(Feuil1!B$1=FormesOuvertes!$A$2:$A$18) * FormesOuvertes!$C$2:$C$18)
    A copier dans l'ensemble de la plage $B$2:$I$10
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Par défaut
    impec'. Merci
    la fonction sommeprod m apparait sous un jour nouveau.

    Et pour cloturer le truc, je viens de me rendre compte que le talbeau croisé dynamique donne le résultat escompté itou !

    abondance de connaissances ne nuit pas.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Citation Envoyé par Leehan Voir le message
    impec'. Merci
    la fonction sommeprod m apparait sous un jour nouveau.
    C'est magique en effet
    Et pour cloturer le truc, je viens de me rendre compte que le talbeau croisé dynamique donne le résultat escompté itou !
    Et oui mais dès fois c'est intéressant d'avoir un tableau de bord très dynamique
    abondance de connaissances ne nuit pas.
    Absolument
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [CakePHP] Comment faire une recherche avec deux mots dans une table
    Par pierrot10 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/02/2014, 23h20
  2. Chercher une ligne selon deux critère dans un formulaire
    Par abdelkarim_1987 dans le forum Excel
    Réponses: 0
    Dernier message: 16/09/2013, 11h05
  3. Recherche d'un caractère dans une ligne
    Par Victor1 dans le forum Excel
    Réponses: 4
    Dernier message: 08/06/2013, 18h23
  4. Formule Si avec recherche d'un mot dans une ligne
    Par maximus30 dans le forum Excel
    Réponses: 2
    Dernier message: 06/12/2012, 18h20
  5. recherche entre deux dates dans une requête
    Par emmanuel4945 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/11/2006, 21h42

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