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 :

Création d'une fonction un peu du style rechercheV [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2018
    Messages : 40
    Par défaut Création d'une fonction un peu du style rechercheV
    Bonjour à tous ceux qui voudront bien m'aider,

    étant novice en programmation, j'ai un problème qui est le suivant :

    Je recherche à créer une fonction qui :
    - me recherche des valeurs (dans différentes listes) que je lui mettrai en argument ( 4 arguments exactement)
    - une fois ces valeurs trouvées, me retourner la valeur correspondant à la combinaison de mes 4 arguments.

    En gros, je suis entrain de créer un pricer et pour certains calculs dans mon pricer, j'ai un fichier qui contient des taux et je veux retrouver ces taux selon certains critères qui sont mes 4 arguments. Ce taux sera ensuite utilisé pour faire d'autre calculs.

    Je mets en PJ, un exemple du fichier en question. Mes argumetns dans mon fichier sont :a1 a2 a3 a4 et la valeur a retourner est ar.


    Merci beaucoup
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent 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
    Par défaut
    Citation Envoyé par ayudame_joel Voir le message
    Je recherche à créer une fonction qui :
    - me recherche des valeurs (dans différentes listes) que je lui mettrai en argument ( 4 arguments exactement)
    - une fois ces valeurs trouvées, me retourner la valeur correspondant à la combinaison de mes 4 arguments.
    Tu crées une colonne (éventuellement masquée) dans laquelle tu mets la concaténation des quatre autres colonnes et ton problème se résume à l'utilisation d'une simple fonction RECHERCHEV().

  3. #3
    Membre averti
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2018
    Messages : 40
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Tu crées une colonne (éventuellement masquée) dans laquelle tu mets la concaténation des quatre autres colonnes et ton problème se résume à l'utilisation d'une simple fonction RECHERCHEV().
    Merci beaucoup d'avoir répondu mais je me suis fait mal expliqué je crois. Initialement, je n'ai que les colonnes A et B. Tous ce qui suit je l'ai fais moi même histoire de dé-concatener la colonne A.
    Je me suis re-expliqué dans un nouveau fichier que j'ai mis en PJ.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Je ne vois pas ce que cela change.
    SANS VBA
    Tu effectues une rechercheV dans la colonne A sur la concaténation de tes 4 arguments, en retournant la donnée correspondante en colonne B.
    Exemple en 5ème ligne,
    =RECHERCHEV(N8&"-"&O8&"-"&TEXTE(P8;"0#")&SI(NBCAR(Q8)>0;"-"&Q8;"");A2:B13;2)
    te retourne bien
    3.1
    Attention.
    Au préalable.
    Purge les cellules de la colonne A des blancs se trouvant en début et/ou fin de cellule
    (En VBA, TRIM, RTRIM, LTRIM)

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Franchement, pas facile de comprendre !
    Bon, de ce que j'ai compris, tu veux savoir le pourcentage de présence du code indiqué dans tes cellules N8 à Q8 par rapport à l'ensemble des codes de la colonne A ? Si c'est ça, tu peux tester avec SommeProd()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SOMMEPROD((I2:I13=N8)*(J2:J13=O8)*(K2:K13=P8)*(L2:L13=Q8))/(NBVAL(A:A)-1)
    Dans tes codes, il y a des espaces parasites qui vont fausser les résultats (utilises NBCAR() pour voir !)
    Pour l'exemple, si je prend la ligne 8 dont le code est "0-2-10-3D" (après suppression des espaces) le pourcentage indiqué par la formule est 8,33% (0,0833) car le code est seul

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Theze,

    Sauf erreur, la table qui retourne la valeur cherchée ne contient que 2 colonnes.
    La recherche doit donc s'effectuer sur la concaténation des 4 paramètres entrés.

  7. #7
    Membre averti
    Homme Profil pro
    Stagiaire
    Inscrit en
    Juin 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Stagiaire
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2018
    Messages : 40
    Par défaut Solution trouvée
    Merci beaucoup pour toutes vos propositions. Vos idées étaient bonnes sauf qu'elles ne me donnaient pas le résultat escompté tel que je le voyais. Surement que je me suis mal expliqué.

    Sinon j'ai pu résoudre mon soucis en appliquant ce petit programme qu'une amie m'a envoyé, ça pourrait peut être aider quelqu'un un jour, qui sait? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub testa()
    Sheets("feuil1").Activate
     
    Range("r8").Value = Range("N8").Value & "-" & Range("O8").Value & "-" & Range("P8").Value & "-" & Range("q8").Value
    Range("t8").Value = Application.VLookup(Sheets("feuil1").Range("R8"), Sheets("feuil1").Range("A2:L13"), 2, faux)
    End Sub

    Ca marche très bien pour ce que je veux faire, j'ai juste à transformer ça en formule.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/03/2011, 12h54
  2. Problème pour la création d'une fonction
    Par jipé95 dans le forum C
    Réponses: 5
    Dernier message: 10/12/2006, 15h28
  3. Réponses: 16
    Dernier message: 24/10/2006, 22h37
  4. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 12h32
  5. Réponses: 14
    Dernier message: 09/04/2004, 14h44

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