RECHERCHEV sur deux clés
Toulouse31240
Messages postés
18
Statut
Membre
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Malgré l'étude de ce sujet :
https://forums.commentcamarche.net/forum/affich-23323611-combine-si-et-recherchev-excel
je n'arrive pas à imaginer un code correct pour rechercher une occurrence à partir de deux clés primaires.
Mes clés sont la date jj/mm/aaaa et l'heure hh:mm, situées en colonnes 1 et 2 de mon fichier de référence
J'aimerais obtenir, en pseudocode
si A1 = B1 et A2 = B2 alors C2 = C1
(A1, B1 et C1 étant les données lues, A2 et B2 les valeurs des clés de recherche et C2 la valeur à récupérer).
Merci pour votre aide.
Malgré l'étude de ce sujet :
https://forums.commentcamarche.net/forum/affich-23323611-combine-si-et-recherchev-excel
je n'arrive pas à imaginer un code correct pour rechercher une occurrence à partir de deux clés primaires.
Mes clés sont la date jj/mm/aaaa et l'heure hh:mm, situées en colonnes 1 et 2 de mon fichier de référence
J'aimerais obtenir, en pseudocode
si A1 = B1 et A2 = B2 alors C2 = C1
(A1, B1 et C1 étant les données lues, A2 et B2 les valeurs des clés de recherche et C2 la valeur à récupérer).
Merci pour votre aide.
A voir également:
- RECHERCHEV sur deux clés
- Comment faire deux colonnes sur word - Guide
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Cles windows 10 - Guide
- Deux whatsapp sur un téléphone - Guide
7 réponses
Bonjour et merci,
Je n'ai pas de fichier exemple.
J'ai un fichier avec trois données A, B et C sur x lignes et un autre dans lequel je dois trouver la valeur C connaissant A et B, c'est tout.
(pour les puristes, je souhaite obtenir la valeur en euros d'un paiement en US$ via Paypal et leur fichier historique, qui comporte la valeur en dollars sur une ligne et la contrepartie en euros sur la ligne suivante)
Je n'ai pas de fichier exemple.
J'ai un fichier avec trois données A, B et C sur x lignes et un autre dans lequel je dois trouver la valeur C connaissant A et B, c'est tout.
(pour les puristes, je souhaite obtenir la valeur en euros d'un paiement en US$ via Paypal et leur fichier historique, qui comporte la valeur en dollars sur une ligne et la contrepartie en euros sur la ligne suivante)
=INDEX([Classeur1.xls]Feuil1!$C$1:$C$8;SOMMEPROD(([Classeur1.xls]Feuil1!F1=[Classeur1.xls]Feuil1!$A$1:$A$8)*([Classeur1.xls]Feuil1!G1=[Classeur1.xls]Feuil1!$B$1:$B$8)*LIGNE([Classeur1.xls]Feuil1!$A$1:$A$8)))
eric
eric
Je te suis très reconnaissant d'avoir passé du temps sur ma question, mais serait-ce trop demander la signification de ta réponse ? Sinon il n'y a pas transmission de savoir et je serai obligé de revenir si j'ai une question analogue.
Si je décompose ta réponse, j'obtiens :
=INDEX
([Classeur1.xls]Feuil1!$C$1:$C$8;SOMMEPROD
(
([Classeur1.xls]Feuil1!F1=[Classeur1.xls]Feuil1!$A$1:$A$8)
*
([Classeur1.xls]Feuil1!G1=[Classeur1.xls]Feuil1!$B$1:$B$8)
*
LIGNE([Classeur1.xls]Feuil1!$A$1:$A$8)
)
)
Ce que je comprends (plus ou moins) par :
je récupère par la fonction INDEX la valeur située aux coordonnées C$1:C$8 de la ligne LIGNE si et seulement si F1 est trouvé dans la plage A$1:A$8 et G1 est trouvé dans la plage B$1:B$8
C'est cela ?
Mais alors, quid de SOMMEPROD ??? :-(
Merci.
Si je décompose ta réponse, j'obtiens :
=INDEX
([Classeur1.xls]Feuil1!$C$1:$C$8;SOMMEPROD
(
([Classeur1.xls]Feuil1!F1=[Classeur1.xls]Feuil1!$A$1:$A$8)
*
([Classeur1.xls]Feuil1!G1=[Classeur1.xls]Feuil1!$B$1:$B$8)
*
LIGNE([Classeur1.xls]Feuil1!$A$1:$A$8)
)
)
Ce que je comprends (plus ou moins) par :
je récupère par la fonction INDEX la valeur située aux coordonnées C$1:C$8 de la ligne LIGNE si et seulement si F1 est trouvé dans la plage A$1:A$8 et G1 est trouvé dans la plage B$1:B$8
C'est cela ?
Mais alors, quid de SOMMEPROD ??? :-(
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai fait un essai, pas très concluant mais j'ai dû m*rder dans les paramètres...
Fichier source EXCEL_1.xls
http://www.cijoint.fr/cjlink.php?file=cj201110/cij1VmCAH8.xls
Fichier résultat EXCEL_2.xls
http://www.cijoint.fr/cjlink.php?file=cj201110/cijRDksEwd.xls
Merci.
Fichier source EXCEL_1.xls
http://www.cijoint.fr/cjlink.php?file=cj201110/cij1VmCAH8.xls
Fichier résultat EXCEL_2.xls
http://www.cijoint.fr/cjlink.php?file=cj201110/cijRDksEwd.xls
Merci.
c'est qu'avec un fichier exemple ça aurait été plus clair...
je récupère par la fonction INDEX la valeur située aux coordonnées C$1:C$8 de la ligne LIGNE si et seulement si F1 est trouvé dans la plage A$1:A$8 et G1 est trouvé dans la plage B$1:B$8
C'est cela ?
oui
Mais alors, quid de SOMMEPROD ??? :-(
SOMMEPROD fait la somme des produits matriciels
(vrai,vrai,faux,...)*(faux,vrai,vrai,...)*(1,2,3,...)
Je pars du principe qu'il y a une réponse unique, donc un seul triplé vrai, vrai, n° de ligne dont la somme me donne le n° de ligne valide (dès qu'il y a un faux => 0)
Je dois m'absenter, je n'ai pas vu tes fichiers.
Je verrai à mon retour sauf si ces explications ont été suffisantes
eric
je récupère par la fonction INDEX la valeur située aux coordonnées C$1:C$8 de la ligne LIGNE si et seulement si F1 est trouvé dans la plage A$1:A$8 et G1 est trouvé dans la plage B$1:B$8
C'est cela ?
oui
Mais alors, quid de SOMMEPROD ??? :-(
SOMMEPROD fait la somme des produits matriciels
(vrai,vrai,faux,...)*(faux,vrai,vrai,...)*(1,2,3,...)
Je pars du principe qu'il y a une réponse unique, donc un seul triplé vrai, vrai, n° de ligne dont la somme me donne le n° de ligne valide (dès qu'il y a un faux => 0)
Je dois m'absenter, je n'ai pas vu tes fichiers.
Je verrai à mon retour sauf si ces explications ont été suffisantes
eric
Bon, j'ai essayé avec les SI et les ET
=SI(ET(A1=[excel_1.xls]Feuil1!$A:$A;B1=[excel_1.xls]Feuil1!$B:$B;[excel_1.xls]Feuil1!$D:$D="Conversion de devise");[excel_1.xls]Feuil1!$F:$F;)
et j'obtiens
FAUX
-539,67
FAUX
-44,32
FAUX
-393,08
FAUX
-11,8
FAUX
-146,93
FAUX
-97,54
FAUX
-85,75
FAUX
-540,37
FAUX
-239,47
FAUX
-409,22
FAUX
-1007,94
FAUX
-27,56
Les valeurs sont justes, donc c'est la logique qui cloche, car il n'y a pas le même nombre de lignes dans les deux fichiers.
A suivre...
=SI(ET(A1=[excel_1.xls]Feuil1!$A:$A;B1=[excel_1.xls]Feuil1!$B:$B;[excel_1.xls]Feuil1!$D:$D="Conversion de devise");[excel_1.xls]Feuil1!$F:$F;)
et j'obtiens
FAUX
-539,67
FAUX
-44,32
FAUX
-393,08
FAUX
-11,8
FAUX
-146,93
FAUX
-97,54
FAUX
-85,75
FAUX
-540,37
FAUX
-239,47
FAUX
-409,22
FAUX
-1007,94
FAUX
-27,56
Les valeurs sont justes, donc c'est la logique qui cloche, car il n'y a pas le même nombre de lignes dans les deux fichiers.
A suivre...
Je ne vois ce que les SI et les ET viennent faire dans l'histoire...
Tu avais utilisé F1 et G1 (???) et pas tenu compte des noms des classeurs.
De plus tu as 2 lignes même date, même heure, il faut ajouter un critère, j'ai pris EUR en colonne E
en [Excel_2]Feuil1!G4 :
=INDEX([Excel_1.xls]Feuil1!$F$1:$F$48;SOMMEPROD(([Excel_1.xls]Feuil1!$A$1:$A$48=A4)*([Excel_1.xls]Feuil1!$B$1:$B$48=B4)*([Excel_1.xls]Feuil1!$E$1:$E$48="EUR")*LIGNE($1:$48)))
à recopier vers le bas
eric
Tu avais utilisé F1 et G1 (???) et pas tenu compte des noms des classeurs.
De plus tu as 2 lignes même date, même heure, il faut ajouter un critère, j'ai pris EUR en colonne E
en [Excel_2]Feuil1!G4 :
=INDEX([Excel_1.xls]Feuil1!$F$1:$F$48;SOMMEPROD(([Excel_1.xls]Feuil1!$A$1:$A$48=A4)*([Excel_1.xls]Feuil1!$B$1:$B$48=B4)*([Excel_1.xls]Feuil1!$E$1:$E$48="EUR")*LIGNE($1:$48)))
à recopier vers le bas
eric