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 :

Recherchev complexe ou VBA code


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Recherchev complexe ou VBA code
    Bonjour à tous,

    Je suis bloqué par une recherchev, je n'arrive pas à trouver exactement ce que je cherche. Je pense que cela peut aussi se faire avec un code VBA.

    Je dois recherche dans un tableau le nom d'un instrument financier.
    Par exemple :
    BDMar2019C1 1/2 (cela signifie que je dois retrouver les informations pour Mars 2019 (1ère colonne) avec 1,5 dans la 2ème colonne)
    Je dois le retrouver dans une autre feuille dans laquelle son équivalant est 31-Mar-19 et 1,5 dans la 2ème colonne

    J'ai donc fait une recherchev sous cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV("??-"&A2;Bonds!A2:D1059;2)
    Cela ne marche pas...

    Merci beaucoup pour votre aide,

    Bonne journée.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ca na peut pas marcher : RECHERCHEV() ne recherche que dans une seule colonne.

    Mais ta question est trop imprécise pour pouvoir répondre.
    Que contient A2 ?
    Ta "1ère colonne" de la feuille Bond contient-elle une vraie date ou une chaine de caractères ? Si c'est une vraie date, a-t-elle des décimales ?
    Quelle valeur veux-tu récupérer ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Ca na peut pas marcher : RECHERCHEV() ne recherche que dans une seule colonne.

    Mais ta question est trop imprécise pour pouvoir répondre.
    Que contient A2 ?
    Ta "1ère colonne" de la feuille Bond contient-elle une vraie date ou une chaine de caractères ? Si c'est une vraie date, a-t-elle des décimales ?
    Quelle valeur veux-tu récupérer ?
    Merci pour ta réponse.

    Voici un extrait de mes feuilles pour plus de compréhension :
    Feuille 1 : Bonds
    Maturity Coupon
    30-Apr-17 0,500 €
    15-Apr-17 0,875 €
    ... ...

    Feuille 2 : Affichage
    Bond Mnemonic Yield To Maturity
    BDMar2019C1 1/2
    BDMay2021C3 1/8
    ...

    C'est donc dans la deuxième colonne "Yield To Maturity" de la Feuille 2 "Affichage" que je dois trouver les éléments correspondants.
    Dans la Feuille 1 les dates sont bien sous le format date (30/04/2017) et dans la 2ème c'est une chaine de caractères.
    Je dois donc rechercher la date correspondante pour en afficher l'élément de la colonne B.
    Donc pour cet exemple je dois chercher (Feuille 2 : Affichage, A2) : "BDApr2017C1 1/2" dans la colonne "Maturity" donc "30-Apr-17" et afficher "0,500€" dans la colonne "Yield to maturity" .
    J'espere que cela est un peu plus clair..

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par MCPDM Voir le message
    Donc pour cet exemple je dois chercher (Feuille 2 : Affichage, A2) : "BDApr2017C1 1/2" dans la colonne "Maturity" donc "30-Apr-17" et afficher "0,500€" dans la colonne "Yield to maturity" .
    Je ne comprends pas comment tu identifies dans la chaine de caractères que le jour est le 30.

    Tu ne réponds pas à la question : Si c'est une vraie date, a-t-elle des décimales ?
    Es-tu sûr que le dates sont des nombres entiers ?
    Mets en quelques unes au format Standard et vérifie s'il y a des décimales.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je ne comprends pas comment tu identifies dans la chaine de caractères que le jour est le 30.

    Tu ne réponds pas à la question : Si c'est une vraie date, a-t-elle des décimales ?
    Es-tu sûr que le dates sont des nombres entiers ?
    Mets en quelques unes au format Standard et vérifie s'il y a des décimales.
    Pour les dates elles sont toutes entières.

    Pour identifier le jour un exemple sera plus simple :

    La 1ère valeur à chercher est "BDMar2019C1 1/2"
    Dans la Feuille 1 nous avons toutes ces valeurs pour Mars 2019 :
    15-Mar-19 1,000 €
    31-Mar-19 1,500 €
    31-Mar-19 1,625 €
    31-Mar-19 2,500 €
    28-Mar-19 5,500 €
    31-Mar-19 8,500 €

    Nous savons que la bonne valeur es la dixième valeur car le "1 1/2" dans "BDMar2019C1 1/2" est un taux qui signifie 1,5% de 100. Par exemple "BDMay2021C3 1/8" signifie Mai 2021 avec un taux de 3,125% etc.

    Merci pour ton temps j'espère que ces informations sont complètes.

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    le "1 1/2" dans "BDMar2019C1 1/2" est un taux qui signifie 1,5% de 100. Par exemple "BDMay2021C3 1/8" signifie Mai 2021 avec un taux de 3,125% etc.
    Dans tes présentations de données, tu n'indiques nulle part où se trouve ce taux.
    A moins qu'il s'agisse de la colonne Coupon (mais un taux est en %, pas en €), mais dans ce cas, je ne comprends pas pourquoi tu recherches une valeur qui se trouve déjà dans ta donnée de base.

    Quoi qu'il en soit, à mon avis, tu devrais complètement réviser ton approche parce que convertir la chaine "May2019" en vrai date risque d'être très compliqué, sans parler de la conversion de ta fin de chaine en valeur en faisant la division.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Si j'ai bien compris ton besoin, à supposer que ton code soit en $A$1, que ta table soit dans Feuil2 avec la date en colonne A, le taux en colonne B et la valeur à récupérer en colonne C et en considérant que seuls l'année et le mois comptent (jour indifférent):

    En A2, transcription du mois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CNUM(STXT($A$1; 3; CHERCHE("20"; $A$1) + 1))
    En A3, transcription du taux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CNUM(DROITE($A$1; NBCAR($A$1) - CHERCHE("20"; $A$1) - 4))
    En A4, valeur en retour (formule matricielle à valider par Ctrl+Maj+Entrée une fois les plages adaptées):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX(Feuil2!$C$2:$C$7; EQUIV($A$2 & "@" & $A$3; Feuil2!$A$2:$A$7 - JOUR(Feuil2!$A$2:$A$7) + 1 & "@" & Feuil2!$B$2:$B$7; 0))
    C'est bien sûr regroupable en une seule formule.

Discussions similaires

  1. Convertir VBA Codes en C++
    Par 3logy dans le forum C++Builder
    Réponses: 12
    Dernier message: 13/09/2007, 13h12
  2. Réponses: 8
    Dernier message: 08/03/2007, 16h54
  3. [VBA] code pour recherche automatique de données
    Par lg022 dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/02/2007, 10h20
  4. [VBA] Code presse papier
    Par bernard38 dans le forum Général VBA
    Réponses: 3
    Dernier message: 24/04/2006, 15h55
  5. [VBA] Code entre forms
    Par Virgile59 dans le forum Access
    Réponses: 3
    Dernier message: 28/12/2005, 21h57

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