Créer une macro pour recherchev avec multiples conditions si

Résolu/Fermé
ZB78 Messages postés 1 Date d'inscription mercredi 13 janvier 2016 Statut Membre Dernière intervention 13 janvier 2016 - 13 janv. 2016 à 00:54
 ZB78 - 13 janv. 2016 à 11:34
Bonjour,
Je suis nouveau sur VBA ainsi que sur ce site et je souhaites créer une macro un peu compliqué.
Voila mon problème j'ai 6 banques, en fonction de ces derniers je veux découvrir les prix des titres via des dates.
Je veux traduire cette fonction par exemple :
Si (A2 ="bnp";recherchev (A3;feuillebanque!B4:c198;2;Faux);Si (A2 ="societe generale";recherchev (A3;feuillebanque!B4:c198;3;Faux);Si (A2 ="credit agricole";recherchev (A3;feuillebanque!B4:c198;4;Faux);Si (A2 ="Oddo";recherchev (A3;feuillebanque!B4:c198;5;Faux);Si (A2 ="Natixis";recherchev (A3;feuillebanque!B4:c198;6;Faux);Si (A2 ="Bpce";recherchev (A3;feuillebanque!B4:c198;7;Faux);Si (A2 ="Merilllynch";recherchev (A3;feuillebanque!B4:c198;8;Faux)))).
Puis je vous envoyer mon fichier afin de bien vous expliquer?
Merci d'avance pour votre aide
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 janv. 2016 à 10:22
la formule que vous avez mentionné ne m'aide pas du tout

sympa comme appréciation ...

toujours avoir en tête que l'on a que ce qui est écrit pour essayer d'aider...

et tel quel, je ne vois pas l'utilité d'utiliser VBA puisque la fonction classique EQUIV existe... avant de penser VBA penser Excel

et d'autre part en interpolant (boule de cristal) ton laïus tu voudrais le résultat en A3 ? alors pourquoi le mettre comme clé de recherche dans ta formule---> référence circulaire
1
désolé si elle vous a géné ma phrase, tout en sachant que ce n'etait pas du tout mon intention. Je suis la pour chercher de l'aide et non pas pour juger vos connaissances.
La cellule A3 contient une date. C'est a partir de cette cellule ou je vais chercher mon prix de titres dans une autre feuille(banques) bien évidement en fonction du nom de la banque.
Merci et je m'excuse encore une fois pour ma maladresse.
Cordialement
0
Juste une petite remarque!! votre fonction est nickel!!mais que je tire en bas vers les autres cellules je recois N/A :(
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 13/01/2016 à 02:01
Bonjour,

Pour faire des recherches en VBA il existe la méthode FIND (c'est un peu la même chose que quand tu fais un CTRL + F sur ta feuille excel... sauf que là c'est par macro )
=> https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel

Ensuite, pour faire des conditions en VBA ( tes "SI" ) .. on utilise des "IF" ou des "SELECT CASE"
=> https://www.excel-pratique.com/fr/vba/conditions.php

Pour lire le contenu d'une cellule :
mavaleur = Range("A1").value


Pour écrire dans une cellule
 Range("A1").value = mavaleur


nb: on peut utiliser VALUE ou, pour des formule, FORMULALOCAL par exemple.

Nb²: Tout ou presque est expliqué dans ton aide Excel (Via la touche F1 lorsque tu es dans ton éditeur de macros)
Et sinon il existe de nombreux cours et tutoriels sur le net pour apprendre le VBA.


Mais bon, si le but est d'avoir une formule... pourquoi vouloir la convertir en macro ?



Cordialement, 
Jordane                                                                 
0
Bonjour,
Merci pour ta réponse. Pourquoi la convertir en vba?... pour la simple raison que ma formule contient beacoup de si imbriqués (dépassant les j conditions) ensuite ces conditions sont complètes par des recherchev avec un numéro de colonne qui change...d'ou la nécessité d'une macro (création de 3 compteurs pour la recherche de nombres de lignes changement de condition "banques" et changement de nul de colones en fonction des conditions)
Cordialement
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 13/01/2016 à 09:14
Bonjour
je vois pas pourquoi on a A3 et A2...

tu as intérêt à mettre la liste de tes banques dans une validation de données car l'erreur dans A2 n'est pas gérée;
pour la liste:
tu mets cette liste par exemple dans Z1:Z7 et la formule deviendrait
=RECHERCHEV(A3;feuillebanque!B4:C198;EQUIV(A2;Z1:Z7;0)+1;0)

Quant à A3?....

 Michel
0
Bonjour Michel,
Le probleme ici c'est que je veux chercher A3 en fonction de A2(les selections de banques). Donc la formule que vous avez mentionné ne m'aide pas du tout?
Si vous voulez je peux vous transferer mon fichier
Cordialemnt
0
A B C E= la il y a une liste déroulante ou il y a les banques
date fin Periodes titres
30/11/2015 1 La ou je veux executer ma macro
31/10/2016 2
30/11/2016 3
31/12/2016 4
31/01/2017 5
A travers cet onglet il faut que j'aille cherchercher les info dans un autre onglet( la ou il y a les prix des titres) :
Date Fin BNP HSBC Societe generale Credit agricole Natixis Oddo BPCE Merilllynch
31/12/2014 -4 516 618 691 -1 380 177 212 -2 177 039 318 -158 755 594 -4 281 821 608 -63 037 5 987 411 320 000
31/01/2015 -4 505 578 338 -1 391 139 781 -2 157 284 225 -156 466 277 -4 268 292 535 -60 671 65 987 412 7 568 241
l'ideal c'est que je vous tranfére mon fichier
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
13 janv. 2016 à 11:13
=RECHERCHEV(A3;feuillebanque!B$4:C$198;EQUIV(A$2;Z$1:Z$7;0)+1;0)
0
Parfait.. mille merci michel..ca fonctionne bien..
A bientot
0