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 :

Mettre variables dans une matrice qui est utilisée par une fonction [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Mettre variables dans une matrice qui est utilisée par une fonction
    Bonjour,

    J'aimerais utiliser la fonction GRANDE.VALEUR en VBA qui doit retourner par exemple la 2ème plus grande valeur d'une série. C'est une fonction qui fait appel à une matrice:
    =GRANDE.VALEUR(A1:A3;2)

    Le problème, c'est que j'aimerais utiliser des variables retournée par mon programme VBA pour A1, A2, A3.

    Donc dans mon cas, mon programme lit les cellules A1 à A3 qui contiennent du texte. Il transforme ce texte en valeur chiffrée et j'aimerais en retirer la 2ème valeur la plus élevée. Comment dire en VBA que A1:A3 équivaut à mavar1, mavar2, mavar3?

    Merci d'avance!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 349
    Points
    34 349
    Par défaut
    salut,

    plusieurs solutions :
    - soit tu recodes une fonction équivalente à grande.valeur en VBA
    - soit tu tu crées des fonctions public qui retournent chacune la valeur de la variable. En mettant les 3 fonctions dans les cellules A1 à A3, tu devrais pouvoir répliquer le comportement de ta fonction d'origine

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Bonjour,

    à adapter avec evaluate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function GVenvba(a As Long, b As Long, c As Long) As Long
        GVenvba = Application.Evaluate("LARGE({" & a & ";" & b & ";" & c & "},2)")
    End Function
    Cordialement

    ctac

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses. On m'a conseillé encore plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorksheetFunction.Large(Array(mavar1, mavar2, mavar3), 2)
    Merci pour votre aide!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/03/2010, 11h03
  2. Réponses: 13
    Dernier message: 05/11/2007, 09h00
  3. Ouvrir une BD qui est protegé par un mot de passe?
    Par issam16 dans le forum Sécurité
    Réponses: 1
    Dernier message: 18/07/2006, 18h15
  4. "la webcam est utilisée par une autre application!" ah bon???
    Par cortex024 dans le forum Périphériques
    Réponses: 2
    Dernier message: 04/05/2006, 12h13
  5. Réponses: 2
    Dernier message: 16/10/2003, 17h17

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