Recherche de données sur Excel

Résolu/Fermé
Phil_finance - 28 mars 2009 à 01:57
 Phil_finance - 28 mars 2009 à 21:15
Bonjour,

j'utilise beaucoup excel dans le cadre de mes études en finance. Ainsi, je sais comment fonctionne les fonctions recherche et recherchev, mais j'aurais besoin d'une double recherche. Voici le problème :

Dans une feuille, j'ai 3 colonnes (disons A-B-C) : Nom de la compagnie / Date d'achat / Prix. (Actuellement, j'ai plus de 20 colonnes, mais pour ce problème seul ces 3 colonnes sont nécessaires.) Afin de simplifier le tout, voici un court exemple :
Compagnie Date d'achat Prix
Bombardier 2008-12-13 4.05
Bombardier 2009-01-06 3.67
Bombardier 2009-02-23 3.03
Wells Fargo 2008-10-20 28.50
Wells Fargo 2009-01-15 15.55
Wells Fargo 2009-03-20 14.96
...

Dans une autre feuille j'ai aussi 3 colonnes. Une contenant les noms d'une compagnie et une autre contenant des dates. Vous l'avez deviné, j'ai aussi une troisième cellule dans laquelle je veux faire entrer le prix correspondant.

Toutefois, il y a une difficulté supplémentaire. Je ne peux pas créer une variable bidon qui serait le merge de compagnie et date parce que la date inscrite par l'utilisateur est plus grande ou égale à celle dans la base de donnée.

Par exemple, je devrait trouver cela :
Compagnie Date Réponse
Bombardier 2008-12-25 4.05
Bombardier 2009-03-14 3.03
Wells Fargo 2009-01-15 15.55

J'ai essayé avec BD mais je ne suis pas familier avec le système base de donnée d'Excel.
Dans la feuille donnée, les 3 colonnes se mettent à jour seuls.
Dans la feuille résultats, les colonnes A et B (Cie et Date) sont mise à jours automatiquement.

Mon gros problème est que les dates peuvent ne pas être pareilles. Rappel : Date_réponse >= Date_data

S'il est possible de réussir sans passer par de la programmation VBA se serait génial. Non pas que je suis incapable de coder, mais le fichier est déjà assez lourd (5 tableaux croisés dynamiques, 12 onglets et beaucoup de données).

Merci,

3 réponses

wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
28 mars 2009 à 05:19
Bonjour

et que veux tu faire ?? rapatrier le prix dans la feuille résultat en fonction de la compagnie et de la dernière date ?? parce là, tu as bien expliqué ton fichier, mais je ne vois pas la question.

mais si je suis dans le juste : voici une formule matricielle
=index(Feuil1!$C$2:$C$1000; Equiv(Feuil2!A2 & max(si(Feuil1!$A$2:$A$1000=Feuil2!A2;Feuil1!$B$2:$B$1000;0));0);Feui1!$A$2:$A$1000 & Feuil1!$B$2:$B$1000)

je n'ai pas testé la formule (faite à main levée)
elle est sensée récupérer la valeur de la colonne C de la feuil1 avec une recherche concaténée de la valeur A2 de la feuil2 et la date la plus grande de la colonne B de la feuil1 si c'est la bonne compagnie.

si ce n'est pas ça, envoie une petit fichier, avec en Feuil1 une dizaine de ligne sur 3 colonnes et en Feuil2 la correspondance que tu cherches avec les résultats sur fond rouge

pour lier un fichier,
tu vas sur https://www.cjoint.com/index.php
tu charges le fichier et tu postes le line qu'il te donne
@ te lire


0
Phil_finance
28 mars 2009 à 19:39
Salut,

j'ai essayé de faire comme tu l'as dit et ça n'a pas marché. Après réflexion, ça ne marcherait pas non plus si ta description est bonne parce que je ne cherche pas NÉCESSAIREMENT la valeur pour la date la plus élevé.

J'ai fait un copier-coller de mon gros fichier de ce qui nous est utile pour le cas présent. J'ai enregistré le fichier en .xls, mais sachez que j'utilise Excel professionnel 2007.

Fichier : https://www.cjoint.com/?dEuAg6Xj5f

J'ai mis quelques commentaires dans l'onglet ventes et je vais en rajouter ici.

Si vous ne connaissez rien à la finance, les quelques prochaines lignes vont peut-être vous mêler, mais vous comprendrez-mieux ce que je cherche à faire. Dans l'onglet achat, j'ai les transactions d'achat de titre et le prix est en fait le prix de base rajusté (soit le prix moyen d'achat). Du côté de l'onglet vente, j'ai les ventes de titres boursiers.

L'objectif est ici de rapatrier le prix d'achat à côté du montant de la vente pour pouvoir calculer le profit. La vente vient nécessairement après l'achat. Or, il se peut que la vente soit la même journée que l'achat.

Prenons par exemple la transaction de vente d'E*Trade Fncl Corp le 31 décembre. Le prix du 2007-12-03
ne m'intéresse pas ... c'est celui le plus proche du 31 décembre sans être supérieur qui m'importe. Donc le 2008-11-29. Le 2009-02-04 est sans intérêt ici car lors de la vente du 31 décembre, l'achat de 2 février n'avait pas été fait.

Si on regarde Ford, il a été acheté et vendu le même jour (soit le 29 décembre). On doit donc être en mesure de rapatrier le prix d'achat de 29 décembre.

Merci,
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 244
28 mars 2009 à 20:00
bonjour

toujours une formule matricielle, (la même mais sans mon mélange de pinceaux dans le equiv), de plus je n'avais pas compris le problème des dates, je croyais que tu voulais la dernière.

il y a un problème dans le fichier envoyé en ligne 5, je trouve #N/A, normal, tu as un achat dont la date est supérieur à ta vente (en toute logique, pas d'achat à la date où tu vends, problemes : #N/A)

voici la formmule :
=INDEX(Achats!$C$2:$C$40; EQUIV(A2 & MAX(SI(Achats!$A$2:$A$40=A2;SI(Achats!$B$2:$B$40<=B2;Achats!$B$2:$B$40;0);0));Achats!$A$2:$A$40 & Achats!$B$2:$B$40;0))
Ps: j'ai oublié, c'est une formule maticielle.
elle se valide pas l'appui des touche ctrl + maj + entrée
si la validation est ok, des {} encadreront automatiquement la formule

attention, j'ai limité les plage à 2:40 (pour faire des vérifs avec l'évaluateur de formules)

édition : je viens de relire ton post, si c'est de la bourse que tu parles, il y a quelque année, on pouvait vendre avant d'acheter (un petit pari à la baisse) cela m'a fait gagné un peu en 1999 (Vente ou achat à crédit). je ne sais plus en quelle année cela a été supprimé, mais c'était un petit jeu amusant
0
Phil_finance
28 mars 2009 à 21:15
Mille fois merci.

Le problème est réglé.

Pour la ligne 5, il s'agit d'une transaction à découvert (la vente viens avant l'achat). C'est tellement rare que je vais corriger à la main. Au pire, je vois déjà comment utiliser un SI pour permettre les découverts.

Merci. Post taggé résolu !
0